From 9f48b1872b3d8c9cd30789d50e9d2689990acd1d Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Mon, 4 Jan 2021 12:44:48 -0600 Subject: [PATCH 001/215] Initial version of Network lists and Beta resources --- pkg/providers/appsec/appsec_test.go | 240 + ...akamai_appsec_advanced_settings_logging.go | 89 + ...i_appsec_advanced_settings_logging_test.go | 43 + ...appsec_advanced_settings_policy_logging.go | 98 + ...c_advanced_settings_policy_logging_test.go | 43 + ...kamai_appsec_advanced_settings_prefetch.go | 88 + ..._appsec_advanced_settings_prefetch_test.go | 43 + .../data_akamai_appsec_api_endpoints.go | 127 + .../data_akamai_appsec_api_endpoints_test.go | 43 + ...a_akamai_appsec_api_request_constraints.go | 97 + ...mai_appsec_api_request_constraints_test.go | 43 + .../data_akamai_appsec_contracts_groups.go | 68 + ...ata_akamai_appsec_contracts_groups_test.go | 43 + .../appsec/data_akamai_appsec_custom_deny.go | 103 + .../data_akamai_appsec_custom_deny_test.go | 43 + .../data_akamai_appsec_failover_hostnames.go | 85 + ...a_akamai_appsec_failover_hostnames_test.go | 43 + ...data_akamai_appsec_policy_api_endpoints.go | 108 + ...akamai_appsec_policy_api_endpoints_test.go | 43 + .../data_akamai_appsec_siem_definitions.go | 82 + ...ata_akamai_appsec_siem_definitions_test.go | 43 + .../data_akamai_appsec_siem_settings.go | 87 + .../data_akamai_appsec_siem_settings_test.go | 43 + ...akamai_appsec_advanced_settings_logging.go | 117 + ...i_appsec_advanced_settings_logging_test.go | 52 + ...appsec_advanced_settings_policy_logging.go | 132 + ...c_advanced_settings_policy_logging_test.go | 52 + ...kamai_appsec_advanced_settings_prefetch.go | 163 + ..._appsec_advanced_settings_prefetch_test.go | 52 + ...e_akamai_appsec_api_request_constraints.go | 163 + ...mai_appsec_api_request_constraints_test.go | 52 + .../resource_akamai_appsec_configuration.go | 231 + ...source_akamai_appsec_configuration_test.go | 52 + .../resource_akamai_appsec_custom_deny.go | 199 + ...resource_akamai_appsec_custom_deny_test.go | 52 + .../resource_akamai_appsec_siem_settings.go | 169 + ...source_akamai_appsec_siem_settings_test.go | 52 + .../AdvancedSettingsLogging.json | 14 + .../match_by_id.tf | 10 + .../AdvancedSettingsPolicyLogging.json | 15 + .../match_by_id.tf | 10 + .../AdvancedSettingsPrefetch.json | 37 + .../match_by_id.tf | 11 + .../TestDSApiEndpoints/ApiEndpoints.json | 38 + .../TestDSApiEndpoints/match_by_id.tf | 13 + .../ApiRequestConstraints.json | 38 + .../match_by_id.tf | 11 + .../ContractsGroups.json | 25 + .../TestDSContractsGroups/match_by_id.tf | 7 + .../testdata/TestDSCustomDeny/CustomDeny.json | 27 + .../TestDSCustomDeny/CustomDenyList.json | 59 + .../testdata/TestDSCustomDeny/match_by_id.tf | 10 + .../FailoverHostnames.json | 5 + .../TestDSFailoverHostnames/match_by_id.tf | 9 + .../PolicyApiEndpoints.json | 23 + .../TestDSPolicyApiEndpoints/match_by_id.tf | 11 + .../SiemDefinitions.json | 8 + .../TestDSSiemDefinitions/match_by_id.tf | 11 + .../TestDSSiemSettings/SiemSettings.json | 9 + .../TestDSSiemSettings/match_by_id.tf | 10 + .../AdvancedSettingsLogging.json | 14 + .../match_by_id.tf | 29 + .../AdvancedSettingsPolicyLogging.json | 15 + .../match_by_id.tf | 29 + .../AdvancedSettingsPrefetch.json | 15 + .../match_by_id.tf | 23 + .../ApiRequestConstraints.json | 5 + .../match_by_id.tf | 14 + .../TestResConfiguration/Configuration.json | 47 + .../TestResConfiguration/match_by_id.tf | 13 + .../TestResCustomDeny/CustomDeny.json | 28 + .../TestResCustomDeny/CustomDenyList.json | 59 + .../testdata/TestResCustomDeny/match_by_id.tf | 36 + .../TestResSiemSettings/SiemSettings.json | 6 + .../TestResSiemSettings/match_by_id.tf | 18 + .../data_akamai_network_network_lists.go | 87 + ...a_akamai_networklist_network_lists_test.go | 43 + .../networklists/networklist_test.go | 142 + pkg/providers/networklists/networklists.go | 9 + pkg/providers/networklists/provider.go | 139 + pkg/providers/networklists/provider_test.go | 112 + ...resource_akamai_networklist_activations.go | 184 + ...rce_akamai_networklist_activations_test.go | 61 + ...esource_akamai_networklist_network_list.go | 227 + ...ai_networklist_network_list_description.go | 109 + ...tworklist_network_list_description_test.go | 52 + ...i_networklist_network_list_subscription.go | 160 + ...worklist_network_list_subscription_test.go | 52 + ...ce_akamai_networklist_network_list_test.go | 58 + .../TestDSNetworkList/NetworkList.json | 8541 +++++++++++++++++ .../testdata/TestDSNetworkList/match_by_id.tf | 10 + .../TestResActivations/Activations.json | 9 + .../TestResActivations/ActivationsDelete.json | 18 + .../TestResActivations/match_by_id.tf | 14 + .../TestResNetworkList/NetworkList.json | 8541 +++++++++++++++++ .../TestResNetworkList/match_by_id.tf | 14 + .../TestResNetworkList/update_by_id.tf | 14 + .../NetworkListDescription.json | 8541 +++++++++++++++++ .../match_by_id.tf | 11 + .../NetworkListSubscription.json | 8541 +++++++++++++++++ .../match_by_id.tf | 10 + 101 files changed, 39744 insertions(+) create mode 100644 pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_api_endpoints.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_api_endpoints_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_api_request_constraints.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_api_request_constraints_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_contracts_groups.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_contracts_groups_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_custom_deny.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_custom_deny_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_failover_hostnames.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_failover_hostnames_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_siem_definitions.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_siem_definitions_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_siem_settings.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_siem_settings_test.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging_test.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch_test.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_configuration.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_configuration_test.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_custom_deny.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_siem_settings.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go create mode 100644 pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/AdvancedSettingsLogging.json create mode 100644 pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json create mode 100644 pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestDSAdvancedSettingsPrefetch/AdvancedSettingsPrefetch.json create mode 100644 pkg/providers/appsec/testdata/TestDSAdvancedSettingsPrefetch/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestDSApiEndpoints/ApiEndpoints.json create mode 100644 pkg/providers/appsec/testdata/TestDSApiEndpoints/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestDSApiRequestConstraints/ApiRequestConstraints.json create mode 100644 pkg/providers/appsec/testdata/TestDSApiRequestConstraints/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestDSContractsGroups/ContractsGroups.json create mode 100644 pkg/providers/appsec/testdata/TestDSContractsGroups/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDeny.json create mode 100644 pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDenyList.json create mode 100644 pkg/providers/appsec/testdata/TestDSCustomDeny/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestDSFailoverHostnames/FailoverHostnames.json create mode 100644 pkg/providers/appsec/testdata/TestDSFailoverHostnames/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/PolicyApiEndpoints.json create mode 100644 pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestDSSiemDefinitions/SiemDefinitions.json create mode 100644 pkg/providers/appsec/testdata/TestDSSiemDefinitions/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestDSSiemSettings/SiemSettings.json create mode 100644 pkg/providers/appsec/testdata/TestDSSiemSettings/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/AdvancedSettingsLogging.json create mode 100644 pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json create mode 100644 pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResAdvancedSettingsPrefetch/AdvancedSettingsPrefetch.json create mode 100644 pkg/providers/appsec/testdata/TestResAdvancedSettingsPrefetch/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResApiRequestConstraints/ApiRequestConstraints.json create mode 100644 pkg/providers/appsec/testdata/TestResApiRequestConstraints/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResConfiguration/Configuration.json create mode 100644 pkg/providers/appsec/testdata/TestResConfiguration/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResCustomDeny/CustomDeny.json create mode 100644 pkg/providers/appsec/testdata/TestResCustomDeny/CustomDenyList.json create mode 100644 pkg/providers/appsec/testdata/TestResCustomDeny/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResSiemSettings/SiemSettings.json create mode 100644 pkg/providers/appsec/testdata/TestResSiemSettings/match_by_id.tf create mode 100644 pkg/providers/networklists/data_akamai_network_network_lists.go create mode 100644 pkg/providers/networklists/data_akamai_networklist_network_lists_test.go create mode 100644 pkg/providers/networklists/networklist_test.go create mode 100644 pkg/providers/networklists/networklists.go create mode 100644 pkg/providers/networklists/provider.go create mode 100644 pkg/providers/networklists/provider_test.go create mode 100644 pkg/providers/networklists/resource_akamai_networklist_activations.go create mode 100644 pkg/providers/networklists/resource_akamai_networklist_activations_test.go create mode 100644 pkg/providers/networklists/resource_akamai_networklist_network_list.go create mode 100644 pkg/providers/networklists/resource_akamai_networklist_network_list_description.go create mode 100644 pkg/providers/networklists/resource_akamai_networklist_network_list_description_test.go create mode 100644 pkg/providers/networklists/resource_akamai_networklist_network_list_subscription.go create mode 100644 pkg/providers/networklists/resource_akamai_networklist_network_list_subscription_test.go create mode 100644 pkg/providers/networklists/resource_akamai_networklist_network_list_test.go create mode 100644 pkg/providers/networklists/testdata/TestDSNetworkList/NetworkList.json create mode 100644 pkg/providers/networklists/testdata/TestDSNetworkList/match_by_id.tf create mode 100644 pkg/providers/networklists/testdata/TestResActivations/Activations.json create mode 100644 pkg/providers/networklists/testdata/TestResActivations/ActivationsDelete.json create mode 100644 pkg/providers/networklists/testdata/TestResActivations/match_by_id.tf create mode 100644 pkg/providers/networklists/testdata/TestResNetworkList/NetworkList.json create mode 100644 pkg/providers/networklists/testdata/TestResNetworkList/match_by_id.tf create mode 100644 pkg/providers/networklists/testdata/TestResNetworkList/update_by_id.tf create mode 100644 pkg/providers/networklists/testdata/TestResNetworkListDescription/NetworkListDescription.json create mode 100644 pkg/providers/networklists/testdata/TestResNetworkListDescription/match_by_id.tf create mode 100644 pkg/providers/networklists/testdata/TestResNetworkListSubscription/NetworkListSubscription.json create mode 100644 pkg/providers/networklists/testdata/TestResNetworkListSubscription/match_by_id.tf diff --git a/pkg/providers/appsec/appsec_test.go b/pkg/providers/appsec/appsec_test.go index d4a0a6355..3cee80330 100644 --- a/pkg/providers/appsec/appsec_test.go +++ b/pkg/providers/appsec/appsec_test.go @@ -61,6 +61,156 @@ func (p *mockappsec) RemoveActivations(ctx context.Context, params appsec.Remove return args.Get(0).(*appsec.RemoveActivationsResponse), args.Error(1) } +func (p *mockappsec) GetAdvancedSettingsLogging(ctx context.Context, params appsec.GetAdvancedSettingsLoggingRequest) (*appsec.GetAdvancedSettingsLoggingResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetAdvancedSettingsLoggingResponse), args.Error(1) +} + +func (p *mockappsec) GetAdvancedSettingsPrefetch(ctx context.Context, params appsec.GetAdvancedSettingsPrefetchRequest) (*appsec.GetAdvancedSettingsPrefetchResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetAdvancedSettingsPrefetchResponse), args.Error(1) +} + +func (p *mockappsec) UpdateAdvancedSettingsPrefetch(ctx context.Context, params appsec.UpdateAdvancedSettingsPrefetchRequest) (*appsec.UpdateAdvancedSettingsPrefetchResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.UpdateAdvancedSettingsPrefetchResponse), args.Error(1) +} + +func (p *mockappsec) GetAdvancedSettingsPolicyLogging(ctx context.Context, params appsec.GetAdvancedSettingsPolicyLoggingRequest) (*appsec.GetAdvancedSettingsPolicyLoggingResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetAdvancedSettingsPolicyLoggingResponse), args.Error(1) +} + +func (p *mockappsec) UpdateAdvancedSettingsLogging(ctx context.Context, params appsec.UpdateAdvancedSettingsLoggingRequest) (*appsec.UpdateAdvancedSettingsLoggingResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.UpdateAdvancedSettingsLoggingResponse), args.Error(1) +} + +func (p *mockappsec) UpdateAdvancedSettingsPolicyLogging(ctx context.Context, params appsec.UpdateAdvancedSettingsPolicyLoggingRequest) (*appsec.UpdateAdvancedSettingsPolicyLoggingResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.UpdateAdvancedSettingsPolicyLoggingResponse), args.Error(1) +} + +func (p *mockappsec) GetApiEndpoints(ctx context.Context, params appsec.GetApiEndpointsRequest) (*appsec.GetApiEndpointsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetApiEndpointsResponse), args.Error(1) +} + +func (p *mockappsec) GetApiRequestConstraints(ctx context.Context, params appsec.GetApiRequestConstraintsRequest) (*appsec.GetApiRequestConstraintsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetApiRequestConstraintsResponse), args.Error(1) +} + +func (p *mockappsec) UpdateApiRequestConstraints(ctx context.Context, params appsec.UpdateApiRequestConstraintsRequest) (*appsec.UpdateApiRequestConstraintsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.UpdateApiRequestConstraintsResponse), args.Error(1) +} + +func (p *mockappsec) GetPolicyApiEndpoints(ctx context.Context, params appsec.GetPolicyApiEndpointsRequest) (*appsec.GetPolicyApiEndpointsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetPolicyApiEndpointsResponse), args.Error(1) +} + +func (p *mockappsec) GetContractsGroups(ctx context.Context, params appsec.GetContractsGroupsRequest) (*appsec.GetContractsGroupsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetContractsGroupsResponse), args.Error(1) +} + +func (p *mockappsec) CreateConfiguration(ctx context.Context, params appsec.CreateConfigurationRequest) (*appsec.CreateConfigurationResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.CreateConfigurationResponse), args.Error(1) +} + +func (p *mockappsec) RemoveConfiguration(ctx context.Context, params appsec.RemoveConfigurationRequest) (*appsec.RemoveConfigurationResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.RemoveConfigurationResponse), args.Error(1) +} + +func (p *mockappsec) UpdateConfiguration(ctx context.Context, params appsec.UpdateConfigurationRequest) (*appsec.UpdateConfigurationResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.UpdateConfigurationResponse), args.Error(1) +} + +func (p *mockappsec) GetConfiguration(ctx context.Context, params appsec.GetConfigurationRequest) (*appsec.GetConfigurationResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetConfigurationResponse), args.Error(1) +} + func (p *mockappsec) CreateConfigurationClone(ctx context.Context, params appsec.CreateConfigurationCloneRequest) (*appsec.CreateConfigurationCloneResponse, error) { args := p.Called(ctx, params) @@ -131,6 +281,66 @@ func (p *mockappsec) UpdateCustomRule(ctx context.Context, params appsec.UpdateC return args.Get(0).(*appsec.UpdateCustomRuleResponse), args.Error(1) } +func (p *mockappsec) CreateCustomDeny(ctx context.Context, params appsec.CreateCustomDenyRequest) (*appsec.CreateCustomDenyResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.CreateCustomDenyResponse), args.Error(1) +} + +func (p *mockappsec) GetCustomDeny(ctx context.Context, params appsec.GetCustomDenyRequest) (*appsec.GetCustomDenyResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetCustomDenyResponse), args.Error(1) +} + +func (p *mockappsec) GetCustomDenyList(ctx context.Context, params appsec.GetCustomDenyListRequest) (*appsec.GetCustomDenyListResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetCustomDenyListResponse), args.Error(1) +} + +func (p *mockappsec) RemoveCustomDeny(ctx context.Context, params appsec.RemoveCustomDenyRequest) (*appsec.RemoveCustomDenyResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.RemoveCustomDenyResponse), args.Error(1) +} + +func (p *mockappsec) UpdateCustomDeny(ctx context.Context, params appsec.UpdateCustomDenyRequest) (*appsec.UpdateCustomDenyResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.UpdateCustomDenyResponse), args.Error(1) +} + +func (p *mockappsec) GetFailoverHostnames(ctx context.Context, params appsec.GetFailoverHostnamesRequest) (*appsec.GetFailoverHostnamesResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetFailoverHostnamesResponse), args.Error(1) +} + func (p *mockappsec) CreateMatchTarget(ctx context.Context, params appsec.CreateMatchTargetRequest) (*appsec.CreateMatchTargetResponse, error) { args := p.Called(ctx, params) @@ -310,6 +520,36 @@ func (p *mockappsec) RemoveSecurityPolicy(ctx context.Context, params appsec.Rem return args.Get(0).(*appsec.RemoveSecurityPolicyResponse), args.Error(1) } +func (p *mockappsec) GetSiemDefinitions(ctx context.Context, params appsec.GetSiemDefinitionsRequest) (*appsec.GetSiemDefinitionsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetSiemDefinitionsResponse), args.Error(1) +} + +func (p *mockappsec) GetSiemSettings(ctx context.Context, params appsec.GetSiemSettingsRequest) (*appsec.GetSiemSettingsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetSiemSettingsResponse), args.Error(1) +} + +func (p *mockappsec) UpdateSiemSettings(ctx context.Context, params appsec.UpdateSiemSettingsRequest) (*appsec.UpdateSiemSettingsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.UpdateSiemSettingsResponse), args.Error(1) +} + func (p *mockappsec) GetCustomRule(ctx context.Context, params appsec.GetCustomRuleRequest) (*appsec.GetCustomRuleResponse, error) { args := p.Called(ctx, params) diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go new file mode 100644 index 000000000..380e61c06 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go @@ -0,0 +1,89 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceAdvancedSettingsLogging() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceAdvancedSettingsLoggingRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": &schema.Schema{ + Type: schema.TypeInt, + Required: true, + }, + + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceAdvancedSettingsLoggingRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceAdvancedSettingsLoggingRead") + + getAdvancedSettingsLogging := appsec.GetAdvancedSettingsLoggingRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsLogging.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsLogging.Version = version + + advancedsettingslogging, err := client.GetAdvancedSettingsLogging(ctx, getAdvancedSettingsLogging) + if err != nil { + logger.Errorf("calling 'getAdvancedSettingsLogging': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "advancedSettingsLoggingDS", advancedsettingslogging) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(advancedsettingslogging) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(strconv.Itoa(getAdvancedSettingsLogging.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging_test.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging_test.go new file mode 100644 index 000000000..b8678dbb5 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiAdvancedSettingsLogging_data_basic(t *testing.T) { + t.Run("match by AdvancedSettingsLogging ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetAdvancedSettingsLoggingResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSAdvancedSettingsLogging/AdvancedSettingsLogging.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetAdvancedSettingsLogging", + mock.Anything, // ctx is irrelevant for this test + appsec.GetAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSAdvancedSettingsLogging/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_advanced_settings_logging.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging.go new file mode 100644 index 000000000..84cdec089 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging.go @@ -0,0 +1,98 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceAdvancedSettingsPolicyLogging() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceAdvancedSettingsPolicyLoggingRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": &schema.Schema{ + Type: schema.TypeInt, + Required: true, + }, + "security_policy_id": { + Type: schema.TypeString, + Required: true, + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceAdvancedSettingsPolicyLoggingRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceAdvancedSettingsPolicyLoggingRead") + + getAdvancedSettingsPolicyLogging := appsec.GetAdvancedSettingsPolicyLoggingRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsPolicyLogging.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsPolicyLogging.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsPolicyLogging.PolicyID = policyid + + advancedsettingspolicylogging, err := client.GetAdvancedSettingsPolicyLogging(ctx, getAdvancedSettingsPolicyLogging) + if err != nil { + logger.Errorf("calling 'getAdvancedSettingsPolicyLogging': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "advancedSettingsPolicyLoggingDS", advancedsettingspolicylogging) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(advancedsettingspolicylogging) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(strconv.Itoa(getAdvancedSettingsPolicyLogging.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging_test.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging_test.go new file mode 100644 index 000000000..8525342e6 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiAdvancedSettingsPolicyLogging_data_basic(t *testing.T) { + t.Run("match by AdvancedSettingsPolicyLogging ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetAdvancedSettingsPolicyLoggingResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetAdvancedSettingsPolicyLogging", + mock.Anything, // ctx is irrelevant for this test + appsec.GetAdvancedSettingsPolicyLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_advanced_settings_policy_logging.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch.go new file mode 100644 index 000000000..1f68aa250 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch.go @@ -0,0 +1,88 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceAdvancedSettingsPrefetch() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceAdvancedSettingsPrefetchRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": &schema.Schema{ + Type: schema.TypeInt, + Required: true, + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceAdvancedSettingsPrefetchRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceAdvancedSettingsPrefetchRead") + + getAdvancedSettingsPrefetch := appsec.GetAdvancedSettingsPrefetchRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsPrefetch.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsPrefetch.Version = version + + advancedsettingsprefetch, err := client.GetAdvancedSettingsPrefetch(ctx, getAdvancedSettingsPrefetch) + if err != nil { + logger.Errorf("calling 'getAdvancedSettingsPrefetch': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "advancedSettingsPrefetchDS", advancedsettingsprefetch) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(advancedsettingsprefetch) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(strconv.Itoa(getAdvancedSettingsPrefetch.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch_test.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch_test.go new file mode 100644 index 000000000..047a9d1c0 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiAdvancedSettingsPrefetch_data_basic(t *testing.T) { + t.Run("match by AdvancedSettingsPrefetch ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetAdvancedSettingsPrefetchResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSAdvancedSettingsPrefetch/AdvancedSettingsPrefetch.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetAdvancedSettingsPrefetch", + mock.Anything, // ctx is irrelevant for this test + appsec.GetAdvancedSettingsPrefetchRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSAdvancedSettingsPrefetch/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_advanced_settings_prefetch.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go b/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go new file mode 100644 index 000000000..b51f13413 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go @@ -0,0 +1,127 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceApiEndpoints() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceApiEndpointsRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": &schema.Schema{ + Type: schema.TypeInt, + Required: true, + }, + "name": { + Type: schema.TypeString, + Optional: true, + }, + "id_list": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeInt}, + Description: "List of endpoint IDs", + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceApiEndpointsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceApiEndpointsRead") + + getApiEndpoints := appsec.GetApiEndpointsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiEndpoints.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiEndpoints.Version = version + + name, err := tools.GetStringValue("name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiEndpoints.Name = name + + apiendpoints, err := client.GetApiEndpoints(ctx, getApiEndpoints) + if err != nil { + logger.Errorf("calling 'getApiEndpoints': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "apiEndpointsDS", apiendpoints) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(apiendpoints) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + var idList []int + + // d.Set("id_list", idList) + + //newhdata := make([]string, 0, len(apiendpoints.APIEndpoints)) + + for _, ids := range apiendpoints.APIEndpoints { + //newhdata = append(newhdata, strconv.Itoa(ids.ID)) + //newhdata = append(newhdata, ids.Name) + idList = append(idList, ids.ID) + } + logger.Errorf("calling 'getApiEndpoints': ARRAY INT %v", idList) + d.Set("id_list", idList) + /*if err := d.Set("id_list", idList); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + }*/ + + if len(apiendpoints.APIEndpoints) > 0 { + + //d.SetId(strconv.Itoa(getCustomDeny.ConfigID)) + d.SetId(strconv.Itoa(apiendpoints.APIEndpoints[0].ID)) + } + + //d.SetId(strconv.Itoa(getApiEndpoints.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_endpoints_test.go b/pkg/providers/appsec/data_akamai_appsec_api_endpoints_test.go new file mode 100644 index 000000000..19c0e35ba --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_api_endpoints_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiApiEndpoints_data_basic(t *testing.T) { + t.Run("match by ApiEndpoints ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetApiEndpointsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSApiEndpoints/ApiEndpoints.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetApiEndpoints", + mock.Anything, // ctx is irrelevant for this test + appsec.GetApiEndpointsRequest{ConfigID: 43253, Version: 7}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSApiEndpoints/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_api_endpoints.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_request_constraints.go b/pkg/providers/appsec/data_akamai_appsec_api_request_constraints.go new file mode 100644 index 000000000..514faa82c --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_api_request_constraints.go @@ -0,0 +1,97 @@ +package appsec + +import ( + "context" + "errors" + "strconv" + + v2 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceApiRequestConstraints() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceApiRequestConstraintsRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": &schema.Schema{ + Type: schema.TypeInt, + Required: true, + }, + "security_policy_id": { + Type: schema.TypeString, + Required: true, + }, + "api_id": &schema.Schema{ + Type: schema.TypeInt, + Optional: true, + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceApiRequestConstraintsRead") + + getApiRequestConstraints := v2.GetApiRequestConstraintsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiRequestConstraints.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiRequestConstraints.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiRequestConstraints.PolicyID = policyid + + apiID, err := tools.GetIntValue("api_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiRequestConstraints.ApiID = apiID + + apirequestconstraints, err := client.GetApiRequestConstraints(ctx, getApiRequestConstraints) + if err != nil { + logger.Errorf("calling 'getApiRequestConstraints': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "apirequestconstraintsDS", apirequestconstraints) + if err == nil { + d.Set("output_text", outputtext) + } + + d.SetId(strconv.Itoa(getApiRequestConstraints.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_request_constraints_test.go b/pkg/providers/appsec/data_akamai_appsec_api_request_constraints_test.go new file mode 100644 index 000000000..de54eae9d --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_api_request_constraints_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiApiRequestConstraints_data_basic(t *testing.T) { + t.Run("match by ApiRequestConstraints ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetApiRequestConstraintsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSApiRequestConstraints/ApiRequestConstraints.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetApiRequestConstraints", + mock.Anything, // ctx is irrelevant for this test + appsec.GetApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSApiRequestConstraints/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_api_request_constraints.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go new file mode 100644 index 000000000..84d71c2bd --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go @@ -0,0 +1,68 @@ +package appsec + +import ( + "context" + "encoding/json" + "fmt" + + v2 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceContractsGroups() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceContractsGroupsRead, + Schema: map[string]*schema.Schema{ + + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceContractsGroupsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceContractsGroupsRead") + + getContractsGroups := v2.GetContractsGroupsRequest{} + + contractsgroups, err := client.GetContractsGroups(ctx, getContractsGroups) + if err != nil { + logger.Errorf("calling 'getContractsGroups': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "contractsgroupsDS", contractsgroups) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(contractsgroups) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if len(contractsgroups.ContractGroups) > 0 { + d.SetId(contractsgroups.ContractGroups[0].ContractID) + } + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_contracts_groups_test.go b/pkg/providers/appsec/data_akamai_appsec_contracts_groups_test.go new file mode 100644 index 000000000..9910a57c4 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_contracts_groups_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiContractsGroups_data_basic(t *testing.T) { + t.Run("match by ContractsGroups ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetContractsGroupsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSContractsGroups/ContractsGroups.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetContractsGroups", + mock.Anything, // ctx is irrelevant for this test + appsec.GetContractsGroupsRequest{}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSContractsGroups/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_contracts_groups.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_custom_deny.go b/pkg/providers/appsec/data_akamai_appsec_custom_deny.go new file mode 100644 index 000000000..83743ab01 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_custom_deny.go @@ -0,0 +1,103 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceCustomDeny() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceCustomDenyRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "custom_deny_id": { + Type: schema.TypeString, + Optional: true, + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceCustomDenyRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceCustomDenyRead") + + getCustomDeny := appsec.GetCustomDenyListRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getCustomDeny.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getCustomDeny.Version = version + + customDenyID, err := tools.GetStringValue("custom_deny_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getCustomDeny.ID = customDenyID + + customdeny, err := client.GetCustomDenyList(ctx, getCustomDeny) + if err != nil { + logger.Errorf("calling 'getCustomDeny': %s", err.Error()) + return diag.FromErr(err) + } + + logger.Errorf("calling 'getCustomDeny': %v", customdeny) + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "customDenyDS", customdeny) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(customdeny) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if len(customdeny.CustomDenyList) > 0 { + + //d.SetId(strconv.Itoa(getCustomDeny.ConfigID)) + d.SetId(string(customdeny.CustomDenyList[0].ID)) + } + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_custom_deny_test.go b/pkg/providers/appsec/data_akamai_appsec_custom_deny_test.go new file mode 100644 index 000000000..7f9b0c353 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_custom_deny_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiCustomDeny_data_basic(t *testing.T) { + t.Run("match by CustomDeny ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetCustomDenyResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSCustomDeny/CustomDeny.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetCustomDeny", + mock.Anything, // ctx is irrelevant for this test + appsec.GetCustomDenyRequest{ConfigID: 43253, Version: 7, ID: "deny_custom_622918"}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSCustomDeny/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_custom_deny.test", "custom_deny_id", "deny_custom_54994"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_failover_hostnames.go b/pkg/providers/appsec/data_akamai_appsec_failover_hostnames.go new file mode 100644 index 000000000..f30ce46a8 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_failover_hostnames.go @@ -0,0 +1,85 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceFailoverHostnames() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceFailoverHostnamesRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + + "hostnames": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + Description: "List of hostnames", + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceFailoverHostnamesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceFailoverHostnamesRead") + + getFailoverHostnames := appsec.GetFailoverHostnamesRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getFailoverHostnames.ConfigID = configid + + failoverhostnames, err := client.GetFailoverHostnames(ctx, getFailoverHostnames) + if err != nil { + logger.Errorf("calling 'getFailoverHostnames': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "failoverHostnamesDS", failoverhostnames) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(failoverhostnames) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(strconv.Itoa(getFailoverHostnames.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_failover_hostnames_test.go b/pkg/providers/appsec/data_akamai_appsec_failover_hostnames_test.go new file mode 100644 index 000000000..9c8fadb0a --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_failover_hostnames_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiFailoverHostnames_data_basic(t *testing.T) { + t.Run("match by FailoverHostnames ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetFailoverHostnamesResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSFailoverHostnames/FailoverHostnames.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetFailoverHostnames", + mock.Anything, // ctx is irrelevant for this test + appsec.GetFailoverHostnamesRequest{ConfigID: 43253}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSFailoverHostnames/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_failover_hostnames.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints.go b/pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints.go new file mode 100644 index 000000000..79d7015f8 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints.go @@ -0,0 +1,108 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + v2 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourcePolicyApiEndpoints() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceApiEndpointsRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": &schema.Schema{ + Type: schema.TypeInt, + Required: true, + }, + "security_policy_id": { + Type: schema.TypeString, + Required: true, + }, + "name": { + Type: schema.TypeString, + Optional: true, + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourcePolicyApiEndpointsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceApiEndpointsRead") + + getPolicyApiEndpoints := v2.GetPolicyApiEndpointsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getPolicyApiEndpoints.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getPolicyApiEndpoints.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getPolicyApiEndpoints.PolicyID = policyid + + apiPolicyEndpoints, err := client.GetPolicyApiEndpoints(ctx, getPolicyApiEndpoints) + if err != nil { + logger.Errorf("calling 'getPolicyApiEndpoints': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "policyApiEndpointsDS", apiPolicyEndpoints) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(apiPolicyEndpoints) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if len(apiPolicyEndpoints.APIEndpoints) > 0 { + + //d.SetId(strconv.Itoa(getCustomDeny.ConfigID)) + d.SetId(strconv.Itoa(apiPolicyEndpoints.APIEndpoints[0].ID)) + } + + //d.SetId(strconv.Itoa(getApiEndpoints.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints_test.go b/pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints_test.go new file mode 100644 index 000000000..1d4b27258 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiPolicyApiEndpoints_data_basic(t *testing.T) { + t.Run("match by ApiEndpoints ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetPolicyApiEndpointsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSPolicyApiEndpoints/PolicyApiEndpoints.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetApiEndpoints", + mock.Anything, // ctx is irrelevant for this test + appsec.GetPolicyApiEndpointsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ID: 619183}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSPolicyApiEndpoints/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_policy_api_endpoints.test", "id", "619183"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_siem_definitions.go b/pkg/providers/appsec/data_akamai_appsec_siem_definitions.go new file mode 100644 index 000000000..96cb68d3a --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_siem_definitions.go @@ -0,0 +1,82 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceSiemDefinitions() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceSiemDefinitionsRead, + Schema: map[string]*schema.Schema{ + "siem_definition_name": { + Type: schema.TypeString, + Optional: true, + }, + "json": { + Type: schema.TypeString, + Computed: true, + Description: "JSON Siem Definition", + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceSiemDefinitionsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceSiemDefinitionsRead") + + getSiemDefinitions := appsec.GetSiemDefinitionsRequest{} + + siem_definition_name, err := tools.GetStringValue("siem_definition_name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSiemDefinitions.SiemDefinitionName = siem_definition_name + + siemdefinitions, err := client.GetSiemDefinitions(ctx, getSiemDefinitions) + if err != nil { + logger.Errorf("calling 'getSiemDefinitions': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "siemDefinitionsDS", siemdefinitions) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(siemdefinitions) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + //d.Set("enabled", GetSlowPostProtection.ApplySlowPostControls) + //d.SetId(strconv.Itoa(getRateProtection.ConfigID)) + + if len(siemdefinitions.SiemDefinitions) > 0 { + d.SetId(strconv.Itoa(siemdefinitions.SiemDefinitions[0].ID)) + } + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_siem_definitions_test.go b/pkg/providers/appsec/data_akamai_appsec_siem_definitions_test.go new file mode 100644 index 000000000..721f7d6cb --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_siem_definitions_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiSiemDefinitions_data_basic(t *testing.T) { + t.Run("match by SiemDefinitions ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetSiemDefinitionsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSSiemDefinitions/SiemDefinitions.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetSiemDefinitions", + mock.Anything, // ctx is irrelevant for this test + appsec.GetSiemDefinitionsRequest{}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSSiemDefinitions/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_siem_definitions.test", "id", "1"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_siem_settings.go b/pkg/providers/appsec/data_akamai_appsec_siem_settings.go new file mode 100644 index 000000000..2e50392be --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_siem_settings.go @@ -0,0 +1,87 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + v2 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceSiemSettings() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceSiemSettingsRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceSiemSettingsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceSiemSettingsRead") + + getSiemSettings := v2.GetSiemSettingsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSiemSettings.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSiemSettings.Version = version + + siemsettings, err := client.GetSiemSettings(ctx, getSiemSettings) + if err != nil { + logger.Errorf("calling 'getSiemSettings': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "siemsettingsDS", siemsettings) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(siemsettings) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + //d.Set("enabled", GetSlowPostProtection.ApplySlowPostControls) + d.SetId(strconv.Itoa(getSiemSettings.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_siem_settings_test.go b/pkg/providers/appsec/data_akamai_appsec_siem_settings_test.go new file mode 100644 index 000000000..e4d307a41 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_siem_settings_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiSiemSettings_data_basic(t *testing.T) { + t.Run("match by SiemSettings ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetSiemSettingsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSSiemSettings/SiemSettings.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetSiemSettings", + mock.Anything, // ctx is irrelevant for this test + appsec.GetSiemSettingsRequest{ConfigID: 43253, Version: 7}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSSiemSettings/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_siem_settings.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go new file mode 100644 index 000000000..0165f87e3 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go @@ -0,0 +1,117 @@ +package appsec + +import ( + "context" + "errors" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceAdvancedSettingsLogging() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceAdvancedSettingsLoggingUpdate, + ReadContext: resourceAdvancedSettingsLoggingRead, + UpdateContext: resourceAdvancedSettingsLoggingUpdate, + DeleteContext: resourceAdvancedSettingsLoggingDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + + "logging": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringIsJSON, + }, + }, + } +} + +func resourceAdvancedSettingsLoggingRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceAdvancedSettingsLoggingRead") + + getAdvancedSettingsLogging := appsec.GetAdvancedSettingsLoggingRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsLogging.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsLogging.Version = version + + advancedsettingslogging, err := client.GetAdvancedSettingsLogging(ctx, getAdvancedSettingsLogging) + if err != nil { + logger.Errorf("calling 'getAdvancedSettingsLogging': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "advancedSettingsLoggingDS", advancedsettingslogging) + if err == nil { + d.Set("output_text", outputtext) + } + + d.SetId(strconv.Itoa(getAdvancedSettingsLogging.ConfigID)) + + return nil +} + +func resourceAdvancedSettingsLoggingDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + + return schema.NoopContext(nil, d, m) +} + +func resourceAdvancedSettingsLoggingUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceAdvancedSettingsLoggingUpdate") + + updateAdvancedSettingsLogging := appsec.UpdateAdvancedSettingsLoggingRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsLogging.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsLogging.Version = version + + _, erru := client.UpdateAdvancedSettingsLogging(ctx, updateAdvancedSettingsLogging) + if erru != nil { + logger.Errorf("calling 'updateAdvancedSettingsLogging': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceAdvancedSettingsLoggingRead(ctx, d, m) +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go new file mode 100644 index 000000000..8005ee400 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go @@ -0,0 +1,52 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiAdvancedSettingsLogging_res_basic(t *testing.T) { + t.Run("match by AdvancedSettingsLogging ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateAdvancedSettingsLoggingResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResAdvancedSettingsLogging/AdvancedSettingsLogging.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetAdvancedSettingsLoggingResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResAdvancedSettingsLogging/AdvancedSettingsLogging.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetAdvancedSettingsLogging", + mock.Anything, // ctx is irrelevant for this test + appsec.GetAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cr, nil) + + client.On("UpdateAdvancedSettingsLogging", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResAdvancedSettingsLogging/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_advanced_settings_logging.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging.go new file mode 100644 index 000000000..c04624834 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging.go @@ -0,0 +1,132 @@ +package appsec + +import ( + "context" + "errors" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceAdvancedSettingsPolicyLogging() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceAdvancedSettingsPolicyLoggingUpdate, + ReadContext: resourceAdvancedSettingsPolicyLoggingRead, + UpdateContext: resourceAdvancedSettingsPolicyLoggingUpdate, + DeleteContext: resourceAdvancedSettingsPolicyLoggingDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "security_policy_id": { + Type: schema.TypeString, + Required: true, + }, + "logging": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringIsJSON, + }, + }, + } +} + +func resourceAdvancedSettingsPolicyLoggingRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceAdvancedSettingsPolicyLoggingRead") + + getAdvancedSettingsPolicyLogging := appsec.GetAdvancedSettingsPolicyLoggingRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsPolicyLogging.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsPolicyLogging.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsPolicyLogging.PolicyID = policyid + + advancedsettingspolicylogging, err := client.GetAdvancedSettingsPolicyLogging(ctx, getAdvancedSettingsPolicyLogging) + if err != nil { + logger.Errorf("calling 'getAdvancedSettingsPolicyLogging': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "advancedSettingsPolicyLoggingDS", advancedsettingspolicylogging) + if err == nil { + d.Set("output_text", outputtext) + } + + d.SetId(strconv.Itoa(getAdvancedSettingsPolicyLogging.ConfigID)) + + return nil +} + +func resourceAdvancedSettingsPolicyLoggingDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + + return schema.NoopContext(nil, d, m) +} + +func resourceAdvancedSettingsPolicyLoggingUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceAdvancedSettingsPolicyLoggingUpdate") + + updateAdvancedSettingsPolicyLogging := appsec.UpdateAdvancedSettingsPolicyLoggingRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPolicyLogging.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPolicyLogging.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPolicyLogging.PolicyID = policyid + + _, erru := client.UpdateAdvancedSettingsPolicyLogging(ctx, updateAdvancedSettingsPolicyLogging) + if erru != nil { + logger.Errorf("calling 'updateAdvancedSettingsPolicyLogging': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceAdvancedSettingsPolicyLoggingRead(ctx, d, m) +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging_test.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging_test.go new file mode 100644 index 000000000..b11215839 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging_test.go @@ -0,0 +1,52 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiAdvancedSettingsPolicyLogging_res_basic(t *testing.T) { + t.Run("match by AdvancedSettingsPolicyLogging ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateAdvancedSettingsPolicyLoggingResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetAdvancedSettingsPolicyLoggingResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetAdvancedSettingsPolicyLogging", + mock.Anything, // ctx is irrelevant for this test + appsec.GetAdvancedSettingsPolicyLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cr, nil) + + client.On("UpdateAdvancedSettingsPolicyLogging", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateAdvancedSettingsPolicyLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResAdvancedSettingsPolicyLogging/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_advanced_settings_policy_logging.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go new file mode 100644 index 000000000..3a1ec8a11 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go @@ -0,0 +1,163 @@ +package appsec + +import ( + "context" + "errors" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceAdvancedSettingsPrefetch() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceAdvancedSettingsPrefetchUpdate, + ReadContext: resourceAdvancedSettingsPrefetchRead, + UpdateContext: resourceAdvancedSettingsPrefetchUpdate, + DeleteContext: resourceAdvancedSettingsPrefetchDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "enable_app_layer": { + Type: schema.TypeBool, + Required: true, + }, + "all_extensions": { + Type: schema.TypeBool, + Required: true, + }, + "enable_rate_controls": { + Type: schema.TypeBool, + Required: true, + }, + "extensions": { + Type: schema.TypeList, + Required: true, + Elem: &schema.Schema{Type: schema.TypeString}, + Description: "List of extensions", + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func resourceAdvancedSettingsPrefetchRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceAdvancedSettingsPrefetchRead") + + getAdvancedSettingsPrefetch := appsec.GetAdvancedSettingsPrefetchRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsPrefetch.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsPrefetch.Version = version + + advancedsettingsprefetch, err := client.GetAdvancedSettingsPrefetch(ctx, getAdvancedSettingsPrefetch) + if err != nil { + logger.Errorf("calling 'getAdvancedSettingsPrefetch': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "advancedSettingsPrefetchDS", advancedsettingsprefetch) + if err == nil { + d.Set("output_text", outputtext) + } + + d.SetId(strconv.Itoa(getAdvancedSettingsPrefetch.ConfigID)) + + return nil +} + +func resourceAdvancedSettingsPrefetchDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + + return schema.NoopContext(nil, d, m) +} + +func resourceAdvancedSettingsPrefetchUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceAdvancedSettingsPrefetchUpdate") + + updateAdvancedSettingsPrefetch := appsec.UpdateAdvancedSettingsPrefetchRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPrefetch.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPrefetch.Version = version + + enableAppLayer, err := tools.GetBoolValue("enable_app_layer", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPrefetch.EnableAppLayer = enableAppLayer + + allExtensions, err := tools.GetBoolValue("all_extensions", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPrefetch.AllExtensions = allExtensions + + enableRateControls, err := tools.GetBoolValue("enable_rate_controls", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPrefetch.EnableRateControls = enableRateControls + + extensions := d.Get("extensions").([]interface{}) + exts := make([]string, 0, len(extensions)) + + for _, h := range extensions { + exts = append(exts, h.(string)) + + } + + updateAdvancedSettingsPrefetch.Extensions = exts + + logger.Errorf("calling 'getAdvancedSettingsPrefetch': Extensions %v", updateAdvancedSettingsPrefetch.Extensions) + + _, erru := client.UpdateAdvancedSettingsPrefetch(ctx, updateAdvancedSettingsPrefetch) + if erru != nil { + logger.Errorf("calling 'updateAdvancedSettingsPrefetch': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceAdvancedSettingsPrefetchRead(ctx, d, m) +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch_test.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch_test.go new file mode 100644 index 000000000..5c1acc832 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch_test.go @@ -0,0 +1,52 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiAdvancedSettingsPrefetch_res_basic(t *testing.T) { + t.Run("match by AdvancedSettingsPrefetch ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateAdvancedSettingsPrefetchResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResAdvancedSettingsPrefetch/AdvancedSettingsPrefetch.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetAdvancedSettingsPrefetchResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResAdvancedSettingsPrefetch/AdvancedSettingsPrefetch.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetAdvancedSettingsPrefetch", + mock.Anything, // ctx is irrelevant for this test + appsec.GetAdvancedSettingsPrefetchRequest{ConfigID: 43253, Version: 7}, + ).Return(&cr, nil) + + client.On("UpdateAdvancedSettingsPrefetch", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateAdvancedSettingsPrefetchRequest{ConfigID: 43253, Version: 7}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResAdvancedSettingsPrefetch/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_advanced_settings_prefetch.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go new file mode 100644 index 000000000..31805da5e --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go @@ -0,0 +1,163 @@ +package appsec + +import ( + "context" + "errors" + "strconv" + + v2 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceApiRequestConstraints() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceApiRequestConstraintsUpdate, + ReadContext: resourceApiRequestConstraintsRead, + UpdateContext: resourceApiRequestConstraintsUpdate, + DeleteContext: resourceApiRequestConstraintsDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "security_policy_id": { + Type: schema.TypeString, + Required: true, + }, + "api_endpoint_id": { + Type: schema.TypeInt, + Required: true, + }, + "action": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice([]string{ + Alert, + Deny, + None, + }, false), + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func resourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceApiRequestConstraintsRead") + + getApiRequestConstraints := v2.GetApiRequestConstraintsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiRequestConstraints.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiRequestConstraints.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiRequestConstraints.PolicyID = policyid + + ApiID, err := tools.GetIntValue("api_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiRequestConstraints.ApiID = ApiID + + apirequestconstraints, err := client.GetApiRequestConstraints(ctx, getApiRequestConstraints) + if err != nil { + logger.Errorf("calling 'getApiRequestConstraints': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "apirequestconstraintsDS", apirequestconstraints) + if err == nil { + d.Set("output_text", outputtext) + } + + d.SetId(strconv.Itoa(getApiRequestConstraints.ConfigID)) + + return nil +} + +func resourceApiRequestConstraintsDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + + return schema.NoopContext(nil, d, m) +} + +func resourceApiRequestConstraintsUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceApiRequestConstraintsUpdate") + + updateApiRequestConstraints := v2.UpdateApiRequestConstraintsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateApiRequestConstraints.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateApiRequestConstraints.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateApiRequestConstraints.PolicyID = policyid + + apiEndpointID, err := tools.GetIntValue("api_endpoint_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateApiRequestConstraints.ApiID = apiEndpointID + + action, err := tools.GetStringValue("action", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateApiRequestConstraints.Action = action + + _, erru := client.UpdateApiRequestConstraints(ctx, updateApiRequestConstraints) + if erru != nil { + logger.Errorf("calling 'updateApiRequestConstraints': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceApiRequestConstraintsRead(ctx, d, m) +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go new file mode 100644 index 000000000..86b3aecf2 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go @@ -0,0 +1,52 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiApiRequestConstraints_res_basic(t *testing.T) { + t.Run("match by ApiRequestConstraints ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateApiRequestConstraintsResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResApiRequestConstraints/ApiRequestConstraints.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetApiRequestConstraintsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResApiRequestConstraints/ApiRequestConstraints.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetApiRequestConstraints", + mock.Anything, // ctx is irrelevant for this test + appsec.GetApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cr, nil) + + client.On("UpdateApiRequestConstraints", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", Action: "alert"}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResApiRequestConstraints/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_api_request_constraints.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration.go b/pkg/providers/appsec/resource_akamai_appsec_configuration.go new file mode 100644 index 000000000..038593e00 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration.go @@ -0,0 +1,231 @@ +package appsec + +import ( + "context" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceConfiguration() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceConfigurationCreate, + ReadContext: resourceConfigurationRead, + UpdateContext: resourceConfigurationUpdate, + DeleteContext: resourceConfigurationDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Required: true, + }, + "description": { + Type: schema.TypeString, + Required: true, + }, + "contract_id": { + Type: schema.TypeString, + Required: true, + }, + "group_id": { + Type: schema.TypeInt, + Required: true, + }, + "host_names": { + Type: schema.TypeList, + Required: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "config_id": { + Type: schema.TypeInt, + Computed: true, + }, + "version": { + Type: schema.TypeInt, + Computed: true, + }, + }, + } +} + +func resourceConfigurationCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceConfigurationCreate") + + createConfiguration := appsec.CreateConfigurationRequest{} + + name, err := tools.GetStringValue("name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createConfiguration.Name = name + + description, err := tools.GetStringValue("description", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createConfiguration.Description = description + + contractID, err := tools.GetStringValue("contract_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createConfiguration.ContractID = contractID + + groupID, err := tools.GetIntValue("group_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createConfiguration.GroupID = groupID + + hostnamelist := d.Get("host_names").([]interface{}) + hnl := make([]string, 0, len(hostnamelist)) + + for _, h := range hostnamelist { + hnl = append(hnl, h.(string)) + + } + createConfiguration.Hostnames = hnl + + postresp, errc := client.CreateConfiguration(ctx, createConfiguration) + if errc != nil { + logger.Errorf("calling 'createConfiguration': %s", errc.Error()) + return diag.FromErr(errc) + } + + if err := d.Set("config_id", postresp.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", postresp.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(strconv.Itoa(postresp.ConfigID)) + + return resourceConfigurationRead(ctx, d, m) +} + +func resourceConfigurationUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceConfigurationUpdate") + + updateConfiguration := appsec.UpdateConfigurationRequest{} + + ID, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + updateConfiguration.ConfigID = ID + + name, err := tools.GetStringValue("name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateConfiguration.Name = name + + description, err := tools.GetStringValue("description", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateConfiguration.Description = description + + _, erru := client.UpdateConfiguration(ctx, updateConfiguration) + if erru != nil { + logger.Errorf("calling 'updateConfiguration': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceConfigurationRead(ctx, d, m) +} + +func resourceConfigurationDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceConfigurationRemove") + + removeConfiguration := appsec.RemoveConfigurationRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeConfiguration.ConfigID = configid + + _, errd := client.RemoveConfiguration(ctx, removeConfiguration) + if errd != nil { + logger.Errorf("calling 'removeConfiguration': %s", errd.Error()) + return diag.FromErr(errd) + } + + d.SetId("") + + return nil +} + +func resourceConfigurationRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceConfigurationRead") + + getConfiguration := appsec.GetConfigurationsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getConfiguration.ConfigID = configid + + configName, err := tools.GetStringValue("name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getConfiguration.Name = configName + + configuration, err := client.GetConfigurations(ctx, getConfiguration) + if err != nil { + logger.Errorf("calling 'getConfiguration': %s", err.Error()) + return diag.FromErr(err) + } + + var configlist string + var configidfound int + configlist = configlist + " ConfigID Name VersionList" + "\n" + + for _, configval := range configuration.Configurations { + + if configval.Name == configName { + d.Set("config_id", configval.ID) + d.Set("latest_version", configval.LatestVersion) + d.Set("staging_version", configval.StagingVersion) + d.Set("production_version", configval.ProductionVersion) + configidfound = configval.ID + } + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "configuration", configuration) + if err == nil { + d.Set("output_text", outputtext) + } + + d.SetId(strconv.Itoa(configidfound)) + + return nil +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_test.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_test.go new file mode 100644 index 000000000..8df0d1f2e --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_test.go @@ -0,0 +1,52 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiConfiguration_res_basic(t *testing.T) { + t.Run("match by Configuration ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateConfigurationResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResConfiguration/Configuration.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetConfigurationResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResConfiguration/Configuration.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetConfiguration", + mock.Anything, // ctx is irrelevant for this test + appsec.GetConfigurationRequest{}, + ).Return(&cr, nil) + + client.On("UpdateConfiguration", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateConfigurationRequest{}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResConfiguration/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_configuration.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go b/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go new file mode 100644 index 000000000..7f224dfd4 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go @@ -0,0 +1,199 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceCustomDeny() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceCustomDenyCreate, + ReadContext: resourceCustomDenyRead, + UpdateContext: resourceCustomDenyUpdate, + DeleteContext: resourceCustomDenyDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "custom_deny": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringIsJSON, + }, + "custom_deny_id": { + Type: schema.TypeString, + Computed: true, + Description: "custom_deny_id", + }, + }, + } +} + +func resourceCustomDenyCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceCustomDenyCreate") + + createCustomDeny := appsec.CreateCustomDenyRequest{} + + jsonpostpayload := d.Get("custom_deny") + + if err := json.Unmarshal([]byte(jsonpostpayload.(string)), &createCustomDeny); err != nil { + return diag.FromErr(err) + } + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createCustomDeny.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createCustomDeny.Version = version + + postresp, errc := client.CreateCustomDeny(ctx, createCustomDeny) + if errc != nil { + logger.Errorf("calling 'createCustomDeny': %s", errc.Error()) + return diag.FromErr(errc) + } + + d.SetId(string(postresp.ID)) + + return resourceCustomDenyRead(ctx, d, m) +} + +func resourceCustomDenyUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceCustomDenyUpdate") + + updateCustomDeny := appsec.UpdateCustomDenyRequest{} + + jsonpostpayload := d.Get("custom_deny") + + if err := json.Unmarshal([]byte(jsonpostpayload.(string)), &updateCustomDeny); err != nil { + return diag.FromErr(err) + } + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateCustomDeny.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateCustomDeny.Version = version + + updateCustomDeny.ID = d.Id() + + _, erru := client.UpdateCustomDeny(ctx, updateCustomDeny) + if erru != nil { + logger.Errorf("calling 'updateCustomDeny': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceCustomDenyRead(ctx, d, m) +} + +func resourceCustomDenyDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceCustomDenyRemove") + + removeCustomDeny := appsec.RemoveCustomDenyRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeCustomDeny.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeCustomDeny.Version = version + + removeCustomDeny.ID = d.Id() + + _, errd := client.RemoveCustomDeny(ctx, removeCustomDeny) + if errd != nil { + logger.Errorf("calling 'removeCustomDeny': %s", errd.Error()) + return diag.FromErr(errd) + } + + d.SetId("") + + return nil +} + +func resourceCustomDenyRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceCustomDenyRead") + + getCustomDeny := appsec.GetCustomDenyRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getCustomDeny.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getCustomDeny.Version = version + + getCustomDeny.ID = d.Id() + + customdeny, err := client.GetCustomDeny(ctx, getCustomDeny) + if err != nil { + logger.Errorf("calling 'getCustomDeny': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "CustomDenyDS", customdeny) + if err == nil { + d.Set("output_text", outputtext) + } + + if err := d.Set("custom_deny_id", customdeny.ID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(string(customdeny.ID)) + + return nil +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go b/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go new file mode 100644 index 000000000..8faaa81e4 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go @@ -0,0 +1,52 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiCustomDeny_res_basic(t *testing.T) { + t.Run("match by CustomDeny ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateCustomDenyResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResCustomDeny/CustomDeny.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetCustomDenyResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResCustomDeny/CustomDeny.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetCustomDeny", + mock.Anything, // ctx is irrelevant for this test + appsec.GetCustomDenyRequest{ConfigID: 43253, Version: 7, ID: "deny_custom_622918"}, + ).Return(&cr, nil) + + client.On("UpdateCustomDeny", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateCustomDenyRequest{ConfigID: 43253, Version: 7, ID: "deny_custom_622918"}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResCustomDeny/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_custom_deny.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go b/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go new file mode 100644 index 000000000..0df3bf278 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go @@ -0,0 +1,169 @@ +package appsec + +import ( + "context" + "errors" + "strconv" + + v2 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceSiemSettings() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceSiemSettingsUpdate, + ReadContext: resourceSiemSettingsRead, + UpdateContext: resourceSiemSettingsUpdate, + DeleteContext: resourceSiemSettingsDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "enable_siem": { + Type: schema.TypeBool, + Required: true, + }, + "enable_for_all_policies": { + Type: schema.TypeBool, + Required: true, + }, + "enable_botman_siem": { + Type: schema.TypeBool, + Required: true, + }, + "siem_id": { + Type: schema.TypeInt, + Required: true, + }, + "security_policy_ids": { + Type: schema.TypeList, + Required: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func resourceSiemSettingsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceSiemSettingsRead") + + getSiemSettings := v2.GetSiemSettingsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSiemSettings.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSiemSettings.Version = version + + siemsettings, err := client.GetSiemSettings(ctx, getSiemSettings) + if err != nil { + logger.Errorf("calling 'getSiemSettings': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "siemsettingsDS", siemsettings) + if err == nil { + d.Set("output_text", outputtext) + } + //d.Set("enabled", siemsettings.ApplySlowPostControls) + d.SetId(strconv.Itoa(getSiemSettings.ConfigID)) + + return nil +} + +func resourceSiemSettingsDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + + return schema.NoopContext(nil, d, m) +} + +func resourceSiemSettingsUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceSiemSettingsUpdate") + + updateSiemSettings := v2.UpdateSiemSettingsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSiemSettings.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSiemSettings.Version = version + + enableSiem, err := tools.GetBoolValue("enable_siem", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSiemSettings.EnableSiem = enableSiem + + enableForAllPolicies, err := tools.GetBoolValue("enable_for_all_policies", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSiemSettings.EnableForAllPolicies = enableForAllPolicies + + enableBotmanSiem, err := tools.GetBoolValue("enable_botman_siem", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSiemSettings.EnabledBotmanSiemEvents = enableBotmanSiem + + siemID, err := tools.GetIntValue("siem_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSiemSettings.SiemDefinitionID = siemID + + security_policy_ids := d.Get("security_policy_ids").([]interface{}) + spids := make([]string, 0, len(security_policy_ids)) + + for _, h := range security_policy_ids { + spids = append(spids, h.(string)) + + } + + updateSiemSettings.FirewallPolicyIds = spids + + _, erru := client.UpdateSiemSettings(ctx, updateSiemSettings) + if erru != nil { + logger.Errorf("calling 'updateSiemSettings': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceSiemSettingsRead(ctx, d, m) +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go b/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go new file mode 100644 index 000000000..c108c59ed --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go @@ -0,0 +1,52 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiSiemSettings_res_basic(t *testing.T) { + t.Run("match by SiemSettings ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateSiemSettingsResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResSiemSettings/SiemSettings.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetSiemSettingsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResSiemSettings/SiemSettings.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetSiemSettings", + mock.Anything, // ctx is irrelevant for this test + appsec.GetSiemSettingsRequest{ConfigID: 43253, Version: 7}, + ).Return(&cr, nil) + + client.On("UpdateSiemSettings", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateSiemSettingsRequest{ConfigID: 43253, Version: 7}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResSiemSettings/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_siem_settings.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/AdvancedSettingsLogging.json b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/AdvancedSettingsLogging.json new file mode 100644 index 000000000..e9c621f1e --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/AdvancedSettingsLogging.json @@ -0,0 +1,14 @@ +[ + { + "allowSampling": true, + "cookies": { + "type": "all" + }, + "customHeaders": { + "type": "all" + }, + "standardHeaders": { + "type": "all" + } + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/match_by_id.tf new file mode 100644 index 000000000..b13641f04 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/match_by_id.tf @@ -0,0 +1,10 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_advanced_settings_logging" "test" { + config_id = 43253 + version = 7 + +} + diff --git a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json new file mode 100644 index 000000000..7781b688d --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json @@ -0,0 +1,15 @@ +[ + { + "allowSampling": true, + "cookies": { + "type": "all" + }, + "customHeaders": { + "type": "all" + }, + "override": false, + "standardHeaders": { + "type": "all" + } + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf new file mode 100644 index 000000000..6b8a7fbf4 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf @@ -0,0 +1,10 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_advanced_settings_logging" "logging" { + config_id = 43253 + version = 7 + security_policy_id = "AAAA_81230" +} + diff --git a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPrefetch/AdvancedSettingsPrefetch.json b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPrefetch/AdvancedSettingsPrefetch.json new file mode 100644 index 000000000..9192268f4 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPrefetch/AdvancedSettingsPrefetch.json @@ -0,0 +1,37 @@ + + { + "attackGroupActions": [ + { + "action": "none", + "group": "TOOL" + }, + { + "action": "none", + "group": "PROTOCOL" + }, + { + "action": "none", + "group": "SQL" + }, + { + "action": "none", + "group": "XSS" + }, + { + "action": "none", + "group": "LFI" + }, + { + "action": "none", + "group": "RFI" + }, + { + "action": "none", + "group": "CMDI" + }, + { + "action": "none", + "group": "PLATFORM" + } + ] + } diff --git a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPrefetch/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPrefetch/match_by_id.tf new file mode 100644 index 000000000..0ccdca372 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPrefetch/match_by_id.tf @@ -0,0 +1,11 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + +data "akamai_appsec_api_request_constraints" "api_request_constraints" { + config_id = 43253 + version = 7 + security_policy_id = "AAAA_81230" + api_id = var.api_id +} diff --git a/pkg/providers/appsec/testdata/TestDSApiEndpoints/ApiEndpoints.json b/pkg/providers/appsec/testdata/TestDSApiEndpoints/ApiEndpoints.json new file mode 100644 index 000000000..5149290d6 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSApiEndpoints/ApiEndpoints.json @@ -0,0 +1,38 @@ +{ + "apiEndpoints": [ + { + "id": 619183, + "name": "Orders", + "basePath": "/v1/orders", + "apiEndPointHosts": [ + "sg.akamai.com" + ], + "stagingVersion": { + "status": "ACTIVE", + "versionNumber": 1 + }, + "productionVersion": { + "status": "ACTIVE", + "versionNumber": 1 + }, + "requestConstraintsEnabled": false + }, + { + "id": 624913, + "name": "Catalog", + "basePath": "/v1/catalog", + "apiEndPointHosts": [ + "sg.akamai.com" + ], + "stagingVersion": { + "status": "ACTIVE", + "versionNumber": 1 + }, + "productionVersion": { + "status": "ACTIVE", + "versionNumber": 1 + }, + "requestConstraintsEnabled": true + } + ] +} diff --git a/pkg/providers/appsec/testdata/TestDSApiEndpoints/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiEndpoints/match_by_id.tf new file mode 100644 index 000000000..8ca12a8ed --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSApiEndpoints/match_by_id.tf @@ -0,0 +1,13 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + + + +data "akamai_appsec_api_endpoints" "test" { + config_id = 43253 + version = 7 + security_policy_id = "AAAA_81230" + // name = var.api_endpoint_name +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/ApiRequestConstraints.json b/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/ApiRequestConstraints.json new file mode 100644 index 000000000..fc05a0cfe --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/ApiRequestConstraints.json @@ -0,0 +1,38 @@ +[ + { + "attackGroupActions": [ + { + "action": "none", + "group": "TOOL" + }, + { + "action": "none", + "group": "PROTOCOL" + }, + { + "action": "none", + "group": "SQL" + }, + { + "action": "none", + "group": "XSS" + }, + { + "action": "none", + "group": "LFI" + }, + { + "action": "none", + "group": "RFI" + }, + { + "action": "none", + "group": "CMDI" + }, + { + "action": "none", + "group": "PLATFORM" + } + ] + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/match_by_id.tf new file mode 100644 index 000000000..0ccdca372 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/match_by_id.tf @@ -0,0 +1,11 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + +data "akamai_appsec_api_request_constraints" "api_request_constraints" { + config_id = 43253 + version = 7 + security_policy_id = "AAAA_81230" + api_id = var.api_id +} diff --git a/pkg/providers/appsec/testdata/TestDSContractsGroups/ContractsGroups.json b/pkg/providers/appsec/testdata/TestDSContractsGroups/ContractsGroups.json new file mode 100644 index 000000000..4d4f23ee8 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSContractsGroups/ContractsGroups.json @@ -0,0 +1,25 @@ + + { + "contract_groups": [ + { + "contractId": "C-1FRYVV3", + "displayName": "Akamai DevRel", + "groupId": 64867 + }, + { + "contractId": "C-1FRYVV3", + "displayName": "akava-test", + "groupId": 173935 + }, + { + "contractId": "C-1FRYVV3", + "displayName": "code-club-2020", + "groupId": 178167 + }, + { + "contractId": "C-1FRYVV3", + "displayName": "Josh Cheshire", + "groupId": 181212 + } + ] + } diff --git a/pkg/providers/appsec/testdata/TestDSContractsGroups/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSContractsGroups/match_by_id.tf new file mode 100644 index 000000000..9eece57d2 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSContractsGroups/match_by_id.tf @@ -0,0 +1,7 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + +data "akamai_appsec_contract_groups" "contract_groups" { +} diff --git a/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDeny.json b/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDeny.json new file mode 100644 index 000000000..9a8558b23 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDeny.json @@ -0,0 +1,27 @@ +{ + "description": "Custom Deny Example 1", + "name": "Custom Deny Example 1", + "id": "deny_custom_622918", + "parameters": [ + { + "displayName": "Prevent browser caching", + "name": "prevent_browser_cache", + "value": "true" + }, + { + "displayName": "Response body content", + "name": "response_body_content", + "value": "body comes here2222." + }, + { + "displayName": "Response content type", + "name": "response_content_type", + "value": "application/json" + }, + { + "displayName": "Response status code", + "name": "response_status_code", + "value": "403" + } + ] +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDenyList.json b/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDenyList.json new file mode 100644 index 000000000..e1e566f58 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDenyList.json @@ -0,0 +1,59 @@ + + { + "customDenyList": [ + { + "description": "Custom Deny Example 1", + "name": "Custom Deny Example 1", + "id": "deny_custom_622918", + "parameters": [ + { + "displayName": "Prevent browser caching", + "name": "prevent_browser_cache", + "value": "true" + }, + { + "displayName": "Response body content", + "name": "response_body_content", + "value": "body comes here2222." + }, + { + "displayName": "Response content type", + "name": "response_content_type", + "value": "application/json" + }, + { + "displayName": "Response status code", + "name": "response_status_code", + "value": "403" + } + ] + }, + { + "description": "Custom Deny Example 2", + "name": "Custom Deny Example 2", + "id": 622919, + "parameters": [ + { + "displayName": "Prevent browser caching", + "name": "prevent_browser_cache", + "value": "true" + }, + { + "displayName": "Response body content", + "name": "response_body_content", + "value": "response body." + }, + { + "displayName": "Response content type", + "name": "response_content_type", + "value": "application/json" + }, + { + "displayName": "Response status code", + "name": "response_status_code", + "value": "403" + } + ] + } + ] + } \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSCustomDeny/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSCustomDeny/match_by_id.tf new file mode 100644 index 000000000..f7d44f2f4 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSCustomDeny/match_by_id.tf @@ -0,0 +1,10 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_custom_deny" "test" { + config_id = 43253 + version = 7 + custom_deny_id = "deny_custom_54994" +} + diff --git a/pkg/providers/appsec/testdata/TestDSFailoverHostnames/FailoverHostnames.json b/pkg/providers/appsec/testdata/TestDSFailoverHostnames/FailoverHostnames.json new file mode 100644 index 000000000..fbcd333c7 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSFailoverHostnames/FailoverHostnames.json @@ -0,0 +1,5 @@ +[ + { + "hostnameList": [] + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSFailoverHostnames/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSFailoverHostnames/match_by_id.tf new file mode 100644 index 000000000..0f33faca1 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSFailoverHostnames/match_by_id.tf @@ -0,0 +1,9 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_failover_hostnames" "test" { + config_id = 43253 +} + + diff --git a/pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/PolicyApiEndpoints.json b/pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/PolicyApiEndpoints.json new file mode 100644 index 000000000..c95e17a08 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/PolicyApiEndpoints.json @@ -0,0 +1,23 @@ +[ + { + "apiEndpoints": [ + { + "id": 296100, + "name": "API Test", + "basePath": "/api/bootcamp", + "apiEndPointHosts": [ + "bc.akamaiapibootcamp.com" + ], + "stagingVersion": { + "status": "ACTIVE", + "versionNumber": 1 + }, + "productionVersion": { + "status": "ACTIVE", + "versionNumber": 1 + }, + "requestConstraintsEnabled": false + } + ] + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/match_by_id.tf new file mode 100644 index 000000000..effe97ecd --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/match_by_id.tf @@ -0,0 +1,11 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_policy_api_endpoints" "api_endpoint" { + config_id = 43253 + version = 7 + security_policy_id = "AAAA_81230" + name = "TestEndpoint" +} + diff --git a/pkg/providers/appsec/testdata/TestDSSiemDefinitions/SiemDefinitions.json b/pkg/providers/appsec/testdata/TestDSSiemDefinitions/SiemDefinitions.json new file mode 100644 index 000000000..9b5730e70 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSSiemDefinitions/SiemDefinitions.json @@ -0,0 +1,8 @@ +{ + "siemDefinitions": [ + { + "id": 1, + "name": "SIEM Version 01" + } + ] +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSSiemDefinitions/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSSiemDefinitions/match_by_id.tf new file mode 100644 index 000000000..4882982af --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSSiemDefinitions/match_by_id.tf @@ -0,0 +1,11 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + + +data "akamai_appsec_siem_definitions" "test" { + siem_definition_name = "SIEM Version 01" +} + + diff --git a/pkg/providers/appsec/testdata/TestDSSiemSettings/SiemSettings.json b/pkg/providers/appsec/testdata/TestDSSiemSettings/SiemSettings.json new file mode 100644 index 000000000..83fb7eb1f --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSSiemSettings/SiemSettings.json @@ -0,0 +1,9 @@ +[ + { + "type": "https://problems.luna.akamaiapis.net/appsec-configuration/error-types/UNAUTHORIZED", + "status": 403, + "title": "Unauthorized Access/Action", + "detail": "You do not have the necessary access to perform this operation.", + "instance": "https://problems.luna.akamaiapis.net/appsec-configuration/error-instances/eea381926983628b" + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSSiemSettings/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSSiemSettings/match_by_id.tf new file mode 100644 index 000000000..e33b21f4d --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSSiemSettings/match_by_id.tf @@ -0,0 +1,10 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_siem_settings" "siem_settings" { + config_id = 43253 + version = 7 +} + + diff --git a/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/AdvancedSettingsLogging.json b/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/AdvancedSettingsLogging.json new file mode 100644 index 000000000..e9c621f1e --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/AdvancedSettingsLogging.json @@ -0,0 +1,14 @@ +[ + { + "allowSampling": true, + "cookies": { + "type": "all" + }, + "customHeaders": { + "type": "all" + }, + "standardHeaders": { + "type": "all" + } + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf b/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf new file mode 100644 index 000000000..c09e4baf1 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf @@ -0,0 +1,29 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + +resource "akamai_appsec_advanced_settings" "logging" { + config_id = 43253 + version = 7 + logging = <<-EOF +{ + "allowSampling": true, + "cookies": { + "type": "all" + }, + "customHeaders": { + "type": "exclude", + "values": [ + "csdasdad" + ] + }, + "standardHeaders": { + "type": "only", + "values": [ + "Accept" + ] + } +} +EOF +} diff --git a/pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json b/pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json new file mode 100644 index 000000000..7781b688d --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json @@ -0,0 +1,15 @@ +[ + { + "allowSampling": true, + "cookies": { + "type": "all" + }, + "customHeaders": { + "type": "all" + }, + "override": false, + "standardHeaders": { + "type": "all" + } + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/match_by_id.tf b/pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/match_by_id.tf new file mode 100644 index 000000000..c09e4baf1 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/match_by_id.tf @@ -0,0 +1,29 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + +resource "akamai_appsec_advanced_settings" "logging" { + config_id = 43253 + version = 7 + logging = <<-EOF +{ + "allowSampling": true, + "cookies": { + "type": "all" + }, + "customHeaders": { + "type": "exclude", + "values": [ + "csdasdad" + ] + }, + "standardHeaders": { + "type": "only", + "values": [ + "Accept" + ] + } +} +EOF +} diff --git a/pkg/providers/appsec/testdata/TestResAdvancedSettingsPrefetch/AdvancedSettingsPrefetch.json b/pkg/providers/appsec/testdata/TestResAdvancedSettingsPrefetch/AdvancedSettingsPrefetch.json new file mode 100644 index 000000000..28fa3dc0e --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResAdvancedSettingsPrefetch/AdvancedSettingsPrefetch.json @@ -0,0 +1,15 @@ + + { + "allExtensions": false, + "enableAppLayer": true, + "enableRateControls": false, + "extensions": [ + "cgi", + "jsp", + "aspx", + "EMPTY_STRING", + "php", + "py", + "asp" + ] + } diff --git a/pkg/providers/appsec/testdata/TestResAdvancedSettingsPrefetch/match_by_id.tf b/pkg/providers/appsec/testdata/TestResAdvancedSettingsPrefetch/match_by_id.tf new file mode 100644 index 000000000..057afb8cb --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResAdvancedSettingsPrefetch/match_by_id.tf @@ -0,0 +1,23 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +resource "akamai_appsec_advanced_settings_prefetch" "prefetch" { + config_id = 43253 + version = 7 + enable_app_layer = false + all_extensions = true + enable_rate_controls = false + extensions = [ + "cgi", + "jsp", + "aspx", + "EMPTY_STRING", + "php", + "py", + "asp" + ] +} + + + diff --git a/pkg/providers/appsec/testdata/TestResApiRequestConstraints/ApiRequestConstraints.json b/pkg/providers/appsec/testdata/TestResApiRequestConstraints/ApiRequestConstraints.json new file mode 100644 index 000000000..01f62e40d --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResApiRequestConstraints/ApiRequestConstraints.json @@ -0,0 +1,5 @@ +[ + { + "action": "none" + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResApiRequestConstraints/match_by_id.tf b/pkg/providers/appsec/testdata/TestResApiRequestConstraints/match_by_id.tf new file mode 100644 index 000000000..94905bfe5 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResApiRequestConstraints/match_by_id.tf @@ -0,0 +1,14 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + +resource "akamai_appsec_attack_group_action" "test" { +config_id = 43253 + version = 7 + security_policy_id = "AAAA_81230" + api_endpoint_id = data.akamai_appsec_api_endpoints.api_endpoint.id + action = "alert" +} + + diff --git a/pkg/providers/appsec/testdata/TestResConfiguration/Configuration.json b/pkg/providers/appsec/testdata/TestResConfiguration/Configuration.json new file mode 100644 index 000000000..d871c3dfc --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResConfiguration/Configuration.json @@ -0,0 +1,47 @@ +[ + { + "configurations": [ + { + "description": "Akamai Tools", + "fileType": "RBAC", + "id": 43253, + "latestVersion": 23, + "name": "Akamai Tools", + "targetProduct": "KSD" + }, + { + "fileType": "RBAC", + "id": 39085, + "latestVersion": 35, + "name": "Example for EDGE", + "targetProduct": "KSD" + }, + { + "description": "Restrictions for WT events", + "fileType": "RBAC", + "id": 24728, + "latestVersion": 1, + "name": "WorldTour", + "targetProduct": "KSD" + }, + { + "fileType": "WAF", + "id": 3644, + "latestVersion": 13, + "name": "WAF Security File", + "productionHostnames": [ + "*.bendell.ca", + "bendell.ca", + "www.biscuit.org.uk", + "*.colinbendell.com", + "www.colinbendell.com", + "www.slackware.com", + "arm.slackware.com" + ], + "productionVersion": 12, + "stagingVersion": 12, + "targetProduct": "KSD" + } + ] + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResConfiguration/match_by_id.tf b/pkg/providers/appsec/testdata/TestResConfiguration/match_by_id.tf new file mode 100644 index 000000000..b29ce9cf6 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResConfiguration/match_by_id.tf @@ -0,0 +1,13 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +resource "akamai_appsec_configuration" "create_config" { + name = "Akamai Tools New" + description = "TF Tools" + contract_id= "C-1FRYVV3" + group_id = 64867 + host_names = ["rinaldi.sandbox.akamaideveloper.com", + "sujala.sandbox.akamaideveloper.com"] +} + diff --git a/pkg/providers/appsec/testdata/TestResCustomDeny/CustomDeny.json b/pkg/providers/appsec/testdata/TestResCustomDeny/CustomDeny.json new file mode 100644 index 000000000..df5a86908 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResCustomDeny/CustomDeny.json @@ -0,0 +1,28 @@ + + { + "description": "Custom Deny Example 1", + "name": "Custom Deny Example 1", + "id": "deny_custom_622918", + "parameters": [ + { + "displayName": "Prevent browser caching", + "name": "prevent_browser_cache", + "value": "true" + }, + { + "displayName": "Response body content", + "name": "response_body_content", + "value": "body comes here2222." + }, + { + "displayName": "Response content type", + "name": "response_content_type", + "value": "application/json" + }, + { + "displayName": "Response status code", + "name": "response_status_code", + "value": "403" + } + ] + } \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResCustomDeny/CustomDenyList.json b/pkg/providers/appsec/testdata/TestResCustomDeny/CustomDenyList.json new file mode 100644 index 000000000..e1e566f58 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResCustomDeny/CustomDenyList.json @@ -0,0 +1,59 @@ + + { + "customDenyList": [ + { + "description": "Custom Deny Example 1", + "name": "Custom Deny Example 1", + "id": "deny_custom_622918", + "parameters": [ + { + "displayName": "Prevent browser caching", + "name": "prevent_browser_cache", + "value": "true" + }, + { + "displayName": "Response body content", + "name": "response_body_content", + "value": "body comes here2222." + }, + { + "displayName": "Response content type", + "name": "response_content_type", + "value": "application/json" + }, + { + "displayName": "Response status code", + "name": "response_status_code", + "value": "403" + } + ] + }, + { + "description": "Custom Deny Example 2", + "name": "Custom Deny Example 2", + "id": 622919, + "parameters": [ + { + "displayName": "Prevent browser caching", + "name": "prevent_browser_cache", + "value": "true" + }, + { + "displayName": "Response body content", + "name": "response_body_content", + "value": "response body." + }, + { + "displayName": "Response content type", + "name": "response_content_type", + "value": "application/json" + }, + { + "displayName": "Response status code", + "name": "response_status_code", + "value": "403" + } + ] + } + ] + } \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResCustomDeny/match_by_id.tf b/pkg/providers/appsec/testdata/TestResCustomDeny/match_by_id.tf new file mode 100644 index 000000000..8557774c8 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResCustomDeny/match_by_id.tf @@ -0,0 +1,36 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +resource "akamai_appsec_custom_deny" "custom_deny" { + config_id = 43253 + version = 7 + custom_deny = <<-EOF +{ + "name": "new_custom_deny", + "description": "testing", + "isPageUrl" : false, + "parameters": [ + { + "name": "response_status_code", + "value": "403" + }, + { + "name": "prevent_browser_cache", + "value": "true" + }, + { + "name": "response_content_type", + "value": "application/json" + }, + { + "name": "response_body_content", + "value": "new testing" + } + ] +} +EOF +} + + + diff --git a/pkg/providers/appsec/testdata/TestResSiemSettings/SiemSettings.json b/pkg/providers/appsec/testdata/TestResSiemSettings/SiemSettings.json new file mode 100644 index 000000000..415bc545c --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResSiemSettings/SiemSettings.json @@ -0,0 +1,6 @@ +{ + "enableForAllPolicies": true, + "enableSiem": true, + "enabledBotmanSiemEvents": false, + "siemDefinitionId": 1 +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResSiemSettings/match_by_id.tf b/pkg/providers/appsec/testdata/TestResSiemSettings/match_by_id.tf new file mode 100644 index 000000000..f6807eab6 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResSiemSettings/match_by_id.tf @@ -0,0 +1,18 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + + + +resource "akamai_appsec_siem_settings" "test" { + config_id = 43253 + version = 7 + enable_siem = true + enable_for_all_policies = false + enable_botman_siem = true + siem_id = 1 //data.akamai_appsec_siem_definitions.siem_definition.id + security_policy_ids = [12345]//data.akamai_appsec_security_policy.security_policies.policy_ids +} + + diff --git a/pkg/providers/networklists/data_akamai_network_network_lists.go b/pkg/providers/networklists/data_akamai_network_network_lists.go new file mode 100644 index 000000000..fb4156d92 --- /dev/null +++ b/pkg/providers/networklists/data_akamai_network_network_lists.go @@ -0,0 +1,87 @@ +package networklists + +import ( + "context" + "encoding/json" + "errors" + "fmt" + + network "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceNetworkList() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceNetworkListRead, + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Optional: true, + }, + "uniqueid": { + Type: schema.TypeString, + Computed: true, + Description: "uniqueId", + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceNetworkListRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("NETWORKLIST", "resourceNetworkListRead") + + getNetworkList := network.GetNetworkListsRequest{} + + name, err := tools.GetStringValue("name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getNetworkList.Name = name + + networklist, err := client.GetNetworkLists(ctx, getNetworkList) + if err != nil { + logger.Errorf("calling 'getNetworkLists': %s", err.Error()) + return diag.FromErr(err) + } + + if len(networklist.NetworkLists) > 0 { + d.SetId(networklist.NetworkLists[0].UniqueID) + if err := d.Set("uniqueid", networklist.NetworkLists[0].UniqueID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + } + + jsonBody, err := json.Marshal(networklist) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + /*ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "securityPoliciesDS", securitypolicy) + if err == nil { + d.Set("output_text", outputtext) + } + */ + + return nil +} diff --git a/pkg/providers/networklists/data_akamai_networklist_network_lists_test.go b/pkg/providers/networklists/data_akamai_networklist_network_lists_test.go new file mode 100644 index 000000000..afe9b2b40 --- /dev/null +++ b/pkg/providers/networklists/data_akamai_networklist_network_lists_test.go @@ -0,0 +1,43 @@ +package networklists + +import ( + "encoding/json" + "testing" + + network "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiNetworkList_data_basic(t *testing.T) { + t.Run("match by NetworkList ID", func(t *testing.T) { + client := &mocknetworklists{} + + cv := network.GetNetworkListsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSNetworkList/NetworkList.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetNetworkList", + mock.Anything, // ctx is irrelevant for this test + network.GetNetworkListsRequest{Name: "40996_ARTYLABWHITELIST"}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSNetworkList/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_networklist_network_lists.test", "uniqueid", "40996_ARTYLABWHITELIST"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/networklists/networklist_test.go b/pkg/providers/networklists/networklist_test.go new file mode 100644 index 000000000..742997851 --- /dev/null +++ b/pkg/providers/networklists/networklist_test.go @@ -0,0 +1,142 @@ +package networklists + +import ( + "context" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + "github.com/stretchr/testify/mock" +) + +type mocknetworklists struct { + mock.Mock +} + +func (p *mocknetworklists) CreateActivations(ctx context.Context, params networklists.CreateActivationsRequest, acknowledgeWarnings bool) (*networklists.CreateActivationsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*networklists.CreateActivationsResponse), args.Error(1) +} + +func (p *mocknetworklists) GetActivations(ctx context.Context, params networklists.GetActivationsRequest) (*networklists.GetActivationsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*networklists.GetActivationsResponse), args.Error(1) +} + +func (p *mocknetworklists) RemoveActivations(ctx context.Context, params networklists.RemoveActivationsRequest) (*networklists.RemoveActivationsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*networklists.RemoveActivationsResponse), args.Error(1) +} + +func (p *mocknetworklists) CreateNetworkList(ctx context.Context, params networklists.CreateNetworkListRequest) (*networklists.CreateNetworkListResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*networklists.CreateNetworkListResponse), args.Error(1) +} + +func (p *mocknetworklists) RemoveNetworkList(ctx context.Context, params networklists.RemoveNetworkListRequest) (*networklists.RemoveNetworkListResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*networklists.RemoveNetworkListResponse), args.Error(1) +} + +func (p *mocknetworklists) UpdateNetworkList(ctx context.Context, params networklists.UpdateNetworkListRequest) (*networklists.UpdateNetworkListResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*networklists.UpdateNetworkListResponse), args.Error(1) +} + +func (p *mocknetworklists) GetNetworkList(ctx context.Context, params networklists.GetNetworkListRequest) (*networklists.GetNetworkListResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*networklists.GetNetworkListResponse), args.Error(1) +} + +func (p *mocknetworklists) GetNetworkLists(ctx context.Context, params networklists.GetNetworkListsRequest) (*networklists.GetNetworkListsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*networklists.GetNetworkListsResponse), args.Error(1) +} + +func (p *mocknetworklists) GetNetworkListDescription(ctx context.Context, params networklists.GetNetworkListDescriptionRequest) (*networklists.GetNetworkListDescriptionResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*networklists.GetNetworkListDescriptionResponse), args.Error(1) +} + +func (p *mocknetworklists) UpdateNetworkListDescription(ctx context.Context, params networklists.UpdateNetworkListDescriptionRequest) (*networklists.UpdateNetworkListDescriptionResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*networklists.UpdateNetworkListDescriptionResponse), args.Error(1) +} + +func (p *mocknetworklists) GetNetworkListSubscription(ctx context.Context, params networklists.GetNetworkListSubscriptionRequest) (*networklists.GetNetworkListSubscriptionResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*networklists.GetNetworkListSubscriptionResponse), args.Error(1) +} + +func (p *mocknetworklists) RemoveNetworkListSubscription(ctx context.Context, params networklists.RemoveNetworkListSubscriptionRequest) (*networklists.RemoveNetworkListSubscriptionResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*networklists.RemoveNetworkListSubscriptionResponse), args.Error(1) +} + +func (p *mocknetworklists) UpdateNetworkListSubscription(ctx context.Context, params networklists.UpdateNetworkListSubscriptionRequest) (*networklists.UpdateNetworkListSubscriptionResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*networklists.UpdateNetworkListSubscriptionResponse), args.Error(1) +} diff --git a/pkg/providers/networklists/networklists.go b/pkg/providers/networklists/networklists.go new file mode 100644 index 000000000..c8cfb44d2 --- /dev/null +++ b/pkg/providers/networklists/networklists.go @@ -0,0 +1,9 @@ +// +build all networklists + +package networklists + +import "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/registry" + +func init() { + registry.RegisterProvider(Subprovider()) +} diff --git a/pkg/providers/networklists/provider.go b/pkg/providers/networklists/provider.go new file mode 100644 index 000000000..a5ebadd3b --- /dev/null +++ b/pkg/providers/networklists/provider.go @@ -0,0 +1,139 @@ +package networklists + +import ( + "sync" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + network "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/config" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + "github.com/apex/log" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +type ( + provider struct { + *schema.Provider + + client networklists.NETWORKLISTS + } + // Option is a networklist provider option + Option func(p *provider) +) + +var ( + once sync.Once + + inst *provider +) + +// Subprovider returns a core sub provider +func Subprovider(opts ...Option) akamai.Subprovider { + once.Do(func() { + inst = &provider{Provider: Provider()} + + for _, opt := range opts { + opt(inst) + } + }) + + return inst +} + +// Provider returns the Akamai terraform.Resource provider. +func Provider() *schema.Provider { + provider := &schema.Provider{ + Schema: map[string]*schema.Schema{ + "networklist_section": { + Optional: true, + Type: schema.TypeString, + Default: "default", + Deprecated: akamai.NoticeDeprecatedUseAlias("networklist_section"), + }, + "network": { + Optional: true, + Type: schema.TypeSet, + Elem: config.Options("network"), + }, + }, + DataSourcesMap: map[string]*schema.Resource{ + "akamai_networklist_network_lists": dataSourceNetworkList(), + }, + ResourcesMap: map[string]*schema.Resource{ + "akamai_networklist_activations": resourceActivations(), + "akamai_networklist_network_list_description": resourceNetworkListDescription(), + "akamai_networklist_network_list_subscription": resourceNetworkListSubscription(), + "akamai_networklist_network_list": resourceNetworkList(), + }, + } + return provider +} + +// WithClient sets the client interface function, used for mocking and testing +func WithClient(c networklists.NETWORKLISTS) Option { + return func(p *provider) { + p.client = c + } +} + +// Client returns the PAPI interface +func (p *provider) Client(meta akamai.OperationMeta) network.NETWORKLISTS { + if p.client != nil { + return p.client + } + return networklists.Client(meta.Session()) +} + +func getNETWORKLISTV1Service(d *schema.ResourceData) (interface{}, error) { + var section string + + for _, s := range tools.FindStringValues(d, "networklist_section", "config_section") { + if s != "default" { + section = s + break + } + } + + if section != "" { + d.Set("config_section", section) + } + + return nil, nil +} + +func (p *provider) Name() string { + return "networklists" +} + +// NetworkProviderVersion update version string anytime provider adds new features +const NetworkProviderVersion string = "v1.0.0" + +func (p *provider) Version() string { + return NetworkProviderVersion +} + +func (p *provider) Schema() map[string]*schema.Schema { + return p.Provider.Schema +} + +func (p *provider) Resources() map[string]*schema.Resource { + return p.Provider.ResourcesMap +} + +func (p *provider) DataSources() map[string]*schema.Resource { + return p.Provider.DataSourcesMap +} + +func (p *provider) Configure(log log.Interface, d *schema.ResourceData) diag.Diagnostics { + log.Debug("START Configure") + + _, err := getNETWORKLISTV1Service(d) + if err != nil { + return nil + } + + return nil +} diff --git a/pkg/providers/networklists/provider_test.go b/pkg/providers/networklists/provider_test.go new file mode 100644 index 000000000..c4d091a7c --- /dev/null +++ b/pkg/providers/networklists/provider_test.go @@ -0,0 +1,112 @@ +package networklists + +import ( + "bytes" + "encoding/json" + "fmt" + "io/ioutil" + "os" + "strings" + "sync" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +var testAccProviders map[string]*schema.Provider +var testProvider *schema.Provider + +func init() { + testProvider = akamai.Provider(Subprovider())() + testAccProviders = map[string]*schema.Provider{ + "akamai": testProvider, + } +} + +func TestProvider(t *testing.T) { + if err := Provider().InternalValidate(); err != nil { + t.Fatalf("err: %s", err) + } +} + +func testAccPreCheck(t *testing.T) { + +} + +func getTestProvider() *schema.Provider { + return testProvider +} + +// Only allow one test at a time to patch the client via useClient() +var clientLock sync.Mutex + +// useClient swaps out the client on the global instance for the duration of the given func +func useClient(client networklists.NETWORKLISTS, f func()) { + clientLock.Lock() + orig := inst.client + inst.client = client + + defer func() { + inst.client = orig + clientLock.Unlock() + }() + + f() +} + +// TODO marks a test as being in a "pending" state and logs a message telling the user why. Such tests are expected to +// fail for the time being and may exist for the sake of unfinished/future features or to document known buggy cases +// that won't be fixed right away. The failure of a pending test is not considered an error and the test will therefore +// be skipped unless the TEST_TODO environment variable is set to a non-empty value. +func TODO(t *testing.T, message string) { + t.Helper() + t.Log(fmt.Sprintf("TODO: %s", message)) + + if os.Getenv("TEST_TODO") == "" { + t.Skip("TODO: Set TEST_TODO=1 in env to run this test") + } +} + +func setEnv(home string, env map[string]string) { + os.Clearenv() + os.Setenv("HOME", home) + if len(env) > 0 { + for key, val := range env { + os.Setenv(key, val) + } + } +} + +func restoreEnv(env []string) { + os.Clearenv() + for _, value := range env { + envVar := strings.Split(value, "=") + os.Setenv(envVar[0], envVar[1]) + } +} + +// loadFixtureBytes returns the entire contents of the given file as a byte slice +func loadFixtureBytes(path string) []byte { + contents, err := ioutil.ReadFile(path) + if err != nil { + panic(err) + } + return contents +} + +// loadFixtureString returns the entire contents of the given file as a string +func loadFixtureString(path string) string { + return string(loadFixtureBytes(path)) +} + +// compactJSON converts a JSON-encoded byte slice to a compact form (so our JSON fixtures can be readable) +func compactJSON(encoded []byte) string { + buf := bytes.Buffer{} + if err := json.Compact(&buf, encoded); err != nil { + panic(fmt.Sprintf("%s: %s", err, string(encoded))) + } + + return buf.String() +} diff --git a/pkg/providers/networklists/resource_akamai_networklist_activations.go b/pkg/providers/networklists/resource_akamai_networklist_activations.go new file mode 100644 index 000000000..39815c341 --- /dev/null +++ b/pkg/providers/networklists/resource_akamai_networklist_activations.go @@ -0,0 +1,184 @@ +package networklists + +import ( + "context" + "errors" + "fmt" + "strconv" + "time" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// network_lists v2 +// +// https://developer.akamai.com/api/cloud_security/network_lists/v2.html +func resourceActivations() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceActivationsCreate, + ReadContext: resourceActivationsRead, + DeleteContext: resourceActivationsDelete, + Schema: map[string]*schema.Schema{ + "uniqueid": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + }, + "network": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + Default: "STAGING", + }, + "comments": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + Default: "Activation Comments", + }, + "activate": { + Type: schema.TypeBool, + Optional: true, + ForceNew: true, + Default: true, + }, + "notification_recipients": { + Type: schema.TypeSet, + Required: true, + ForceNew: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "status": { + Type: schema.TypeString, + Computed: true, + }, + }, + } +} + +const ( + // ActivationPollMinimum is the minumum polling interval for activation creation + ActivationPollMinimum = time.Minute +) + +var ( + // ActivationPollInterval is the interval for polling an activation status on creation + ActivationPollInterval = ActivationPollMinimum +) + +func resourceActivationsCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("NETWORKLIST", "resourceActivationsCreate") + + createActivations := networklists.CreateActivationsRequest{} + + activate, err := tools.GetBoolValue("activate", d) + if err != nil { + return diag.FromErr(err) + } + if !activate { + d.SetId("none") + logger.Debugf("Done") + return nil + } + + //createActivations := networklist.CreateActivationsRequest{} + + createActivationsreq := networklists.GetActivationsRequest{} + + //ap := networklists.ActivationConfigs{} + + uniqueid, err := tools.GetStringValue("uniqueid", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createActivations.UniqueID = uniqueid + + network, err := tools.GetStringValue("network", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createActivations.Network = network + + createActivations.Action = "ACTIVATE" + //createActivations.ActivationConfigs = append(createActivations.ActivationConfigs, ap) + createActivations.NotificationRecipients = tools.SetToStringSlice(d.Get("notification_recipients").(*schema.Set)) + + postresp, err := client.CreateActivations(ctx, createActivations, true) + if err != nil { + logger.Warnf("calling 'createActivations': %s", err.Error()) + } + + d.SetId(strconv.Itoa(postresp.ActivationID)) + d.Set("status", string(postresp.ActivationStatus)) + + createActivationsreq.ActivationID = postresp.ActivationID + activation, err := lookupActivation(ctx, client, createActivationsreq) + for activation.ActivationStatus != "ACTIVATED" { //!= networklists.StatusActive { + select { + case <-time.After(tools.MaxDuration(ActivationPollInterval, ActivationPollMinimum)): + act, err := client.GetActivations(ctx, createActivationsreq) + + if err != nil { + return diag.FromErr(err) + } + activation = act + + case <-ctx.Done(): + return diag.FromErr(fmt.Errorf("activation context terminated: %w", ctx.Err())) + } + } + + return resourceActivationsRead(ctx, d, m) +} + +func resourceActivationsDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + logger := meta.Log("NETWORKLIST", "resourceActivationsRemove") + logger.Warnf("calling 'Remove Activations' NOOP ") + d.SetId("") + + return nil +} + +func resourceActivationsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceActivationsRead") + + getActivations := networklists.GetActivationsRequest{} + + activationID, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + getActivations.ActivationID = activationID + + activations, err := client.GetActivations(ctx, getActivations) + if err != nil { + logger.Warnf("calling 'getActivations': %s", err.Error()) + } + + d.Set("status", activations.ActivationStatus) + d.SetId(strconv.Itoa(activations.ActivationID)) + + return nil +} + +func lookupActivation(ctx context.Context, client networklists.NETWORKLISTS, query networklists.GetActivationsRequest) (*networklists.GetActivationsResponse, error) { + activations, err := client.GetActivations(ctx, query) + if err != nil { + return nil, err + } + + return activations, nil + + return nil, nil +} diff --git a/pkg/providers/networklists/resource_akamai_networklist_activations_test.go b/pkg/providers/networklists/resource_akamai_networklist_activations_test.go new file mode 100644 index 000000000..f02f800c3 --- /dev/null +++ b/pkg/providers/networklists/resource_akamai_networklist_activations_test.go @@ -0,0 +1,61 @@ +package networklists + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiActivations_res_basic(t *testing.T) { + t.Run("match by Activations ID", func(t *testing.T) { + client := &mocknetworklists{} + + cu := networklists.RemoveActivationsResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResActivations/ActivationsDelete.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + ga := networklists.GetActivationsResponse{} + expectJSR := compactJSON(loadFixtureBytes("testdata/TestResActivations/Activations.json")) + json.Unmarshal([]byte(expectJSR), &ga) + + cr := networklists.CreateActivationsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResActivations/Activations.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetActivations", + mock.Anything, // ctx is irrelevant for this test + networklists.GetActivationsRequest{ActivationID: 547694}, + ).Return(&ga, nil) + + client.On("CreateActivations", + mock.Anything, // ctx is irrelevant for this test + networklists.CreateActivationsRequest{Action: "ACTIVATE", Network: "STAGING", Comments: "", NotificationRecipients: []string{"martin@email.io"}}, + ).Return(&cr, nil) + + client.On("RemoveActivations", + mock.Anything, // ctx is irrelevant for this test + networklists.RemoveActivationsRequest{ActivationID: 547694, Action: "DEACTIVATE", Network: "STAGING", Comments: "", NotificationRecipients: []string{"martin@email.io"}}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: false, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResActivations/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_networklist_activations.test", "id", "547694"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list.go b/pkg/providers/networklists/resource_akamai_networklist_network_list.go new file mode 100644 index 000000000..0b955edec --- /dev/null +++ b/pkg/providers/networklists/resource_akamai_networklist_network_list.go @@ -0,0 +1,227 @@ +package networklists + +import ( + "context" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" +) + +// network_lists v2 +// +// https://developer.akamai.com/api/cloud_security/network_lists/v2.html +func resourceNetworkList() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceNetworkListCreate, + ReadContext: resourceNetworkListRead, + UpdateContext: resourceNetworkListUpdate, + DeleteContext: resourceNetworkListDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + + "name": { + Type: schema.TypeString, + Required: true, + }, + "type": { + Type: schema.TypeString, + Required: true, + }, + "description": { + Type: schema.TypeString, + Required: true, + }, + "list": { + Type: schema.TypeList, + Elem: &schema.Schema{Type: schema.TypeString}, + Optional: true, + }, + "mode": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice([]string{ + Append, + Replace, + Remove, + }, false), + }, + "uniqueid": { + Type: schema.TypeString, + Computed: true, + Description: "uniqueId", + }, + "sync_point": { + Type: schema.TypeInt, + Computed: true, + Description: "sync point", + }, + }, + } +} + +func resourceNetworkListCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("NETWORKLIST", "resourceNetworkListCreate") + + createNetworkList := networklists.CreateNetworkListRequest{} + + name, err := tools.GetStringValue("name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createNetworkList.Name = name + + listType, err := tools.GetStringValue("type", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createNetworkList.Type = listType + + description, err := tools.GetStringValue("description", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createNetworkList.Description = description + + //createNetworkList.List = tools.SetToStringSlice(d.Get("list").(*schema.Set)) + + netlist := d.Get("list").([]interface{}) + nru := make([]string, 0, len(netlist)) + + for _, h := range netlist { + nru = append(nru, h.(string)) + + } + createNetworkList.List = nru + + spcr, errc := client.CreateNetworkList(ctx, createNetworkList) + if errc != nil { + logger.Errorf("calling 'createNetworkList': %s", errc.Error()) + return diag.FromErr(errc) + } + + d.Set("name", spcr.Name) + + d.Set("sync_point", strconv.Itoa(spcr.SyncPoint)) + + if err := d.Set("uniqueid", spcr.UniqueID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(spcr.UniqueID) + + return resourceNetworkListRead(ctx, d, m) +} + +func resourceNetworkListUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("NETWORKLIST", "resourceNetworkListUpdate") + + updateNetworkList := networklists.UpdateNetworkListRequest{} + updateNetworkList.Name = d.Id() + + listType, err := tools.GetStringValue("type", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateNetworkList.Type = listType + + description, err := tools.GetStringValue("description", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateNetworkList.Description = description + + // updateNetworkList.List = tools.SetToStringSlice(d.Get("list").(*schema.Set)) + netlist := d.Get("list").([]interface{}) + nru := make([]string, 0, len(netlist)) + + for _, h := range netlist { + nru = append(nru, h.(string)) + + } + updateNetworkList.List = nru + + syncPoint, err := tools.GetIntValue("sync_point", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + + updateNetworkList.SyncPoint = syncPoint + + _, erru := client.UpdateNetworkList(ctx, updateNetworkList) + if erru != nil { + logger.Errorf("calling 'updateNetworkList': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceNetworkListRead(ctx, d, m) +} + +func resourceNetworkListDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("NETWORKLIST", "resourceNetworkListRemove") + + removeNetworkList := networklists.RemoveNetworkListRequest{} + removeNetworkList.Name = d.Id() + _, errd := client.RemoveNetworkList(ctx, removeNetworkList) + if errd != nil { + logger.Errorf("calling 'removeNetworkList': %s", errd.Error()) + return diag.FromErr(errd) + } + + d.SetId("") + + return nil +} + +func resourceNetworkListRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("NETWORKLISTs", "resourceNetworkListRead") + + getNetworkList := networklists.GetNetworkListRequest{} + getNetworkList.Name = d.Id() + + networklist, err := client.GetNetworkList(ctx, getNetworkList) + if err != nil { + logger.Errorf("calling 'getNetworkList': %s", err.Error()) + return diag.FromErr(err) + } + + logger.Errorf("calling 'getNetworkList': SYNC POINT %d", networklist.SyncPoint) + /* + syncPoint, errconv := strconv.Atoi(networklist.SyncPoint) + if errconv != nil { + return diag.FromErr(errconv) + } + */ + if err := d.Set("sync_point", networklist.SyncPoint); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + //d.Set("sync_point", strconv.Itoa(networklist.SyncPoint)) + + d.SetId(networklist.UniqueID) + + return nil +} + +// Append Replace Remove mode flags +const ( + Append = "APPEND" + Replace = "REPLACE" + Remove = "REMOVE" +) diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list_description.go b/pkg/providers/networklists/resource_akamai_networklist_network_list_description.go new file mode 100644 index 000000000..fee944ebb --- /dev/null +++ b/pkg/providers/networklists/resource_akamai_networklist_network_list_description.go @@ -0,0 +1,109 @@ +package networklists + +import ( + "context" + "errors" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// network_lists v2 +// +// https://developer.akamai.com/api/cloud_security/network_lists/v2.html +func resourceNetworkListDescription() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceNetworkListDescriptionUpdate, + ReadContext: resourceNetworkListDescriptionRead, + UpdateContext: resourceNetworkListDescriptionUpdate, + DeleteContext: resourceNetworkListDescriptionDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "uniqueid": { + Type: schema.TypeString, + Required: true, + }, + "name": { + Type: schema.TypeString, + Required: true, + }, + "description": { + Type: schema.TypeString, + Required: true, + }, + }, + } +} + +func resourceNetworkListDescriptionRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("NETWORKLIST", "resourceNetworkListDescriptionRead") + + getNetworkListDescription := networklists.GetNetworkListDescriptionRequest{} + + getNetworkListDescription.Name = d.Id() + + networklistdescription, err := client.GetNetworkListDescription(ctx, getNetworkListDescription) + if err != nil { + logger.Errorf("calling 'getNetworkListDescription': %s", err.Error()) + return diag.FromErr(err) + } + + d.SetId(networklistdescription.UniqueID) + + return nil +} + +func resourceNetworkListDescriptionDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + + return schema.NoopContext(nil, d, m) +} + +func resourceNetworkListDescriptionUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("NETWORKLIST", "resourceNetworkListDescriptionUpdate") + + updateNetworkListDescription := networklists.UpdateNetworkListDescriptionRequest{} + + uniqueID, err := tools.GetStringValue("uniqueid", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateNetworkListDescription.UniqueID = uniqueID + + name, err := tools.GetStringValue("name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateNetworkListDescription.Name = name + + description, err := tools.GetStringValue("description", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateNetworkListDescription.Description = description + + /*notificationRecipients, err := tools.GetStringValue("notification_recipients", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateNetworkListDescription.NotificationRecipients = notificationRecipients + */ + + _, erru := client.UpdateNetworkListDescription(ctx, updateNetworkListDescription) + if erru != nil { + logger.Errorf("calling 'updateNetworkListDescription': %s", erru.Error()) + return diag.FromErr(erru) + } + + d.SetId(updateNetworkListDescription.UniqueID) + + return resourceNetworkListDescriptionRead(ctx, d, m) +} diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list_description_test.go b/pkg/providers/networklists/resource_akamai_networklist_network_list_description_test.go new file mode 100644 index 000000000..8a82d621f --- /dev/null +++ b/pkg/providers/networklists/resource_akamai_networklist_network_list_description_test.go @@ -0,0 +1,52 @@ +package networklists + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiNetworkListDescription_res_basic(t *testing.T) { + t.Run("match by NetworkListDescription ID", func(t *testing.T) { + client := &mocknetworklists{} + + cu := networklists.UpdateNetworkListDescriptionResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResNetworkListDescription/NetworkListDescription.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := networklists.GetNetworkListDescriptionResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResNetworkListDescription/NetworkListDescription.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetNetworkListDescription", + mock.Anything, // ctx is irrelevant for this test + networklists.GetNetworkListDescriptionRequest{UniqueID: "79538_MARTINNETWORKLIST", Name: "Test"}, + ).Return(&cr, nil) + + client.On("UpdateNetworkListDescription", + mock.Anything, // ctx is irrelevant for this test + networklists.UpdateNetworkListDescriptionRequest{UniqueID: "79538_MARTINNETWORKLIST", Name: "Test", Description: "Description"}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResNetworkListDescription/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_networklist_network_list_description.test", "id", "79536_MARTINNETWORKLIST"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list_subscription.go b/pkg/providers/networklists/resource_akamai_networklist_network_list_subscription.go new file mode 100644 index 000000000..84d0459ad --- /dev/null +++ b/pkg/providers/networklists/resource_akamai_networklist_network_list_subscription.go @@ -0,0 +1,160 @@ +package networklists + +import ( + "context" + "fmt" + "strings" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// network_lists v2 +// +// https://developer.akamai.com/api/cloud_security/network_lists/v2.html +func resourceNetworkListSubscription() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceNetworkListSubscriptionUpdate, + ReadContext: resourceNetworkListSubscriptionRead, + UpdateContext: resourceNetworkListSubscriptionUpdate, + DeleteContext: resourceNetworkListSubscriptionDelete, + + Schema: map[string]*schema.Schema{ + "recipients": { + Type: schema.TypeList, + Required: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "unique_ids": { + Type: schema.TypeList, + Required: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + }, + } +} + +func resourceNetworkListSubscriptionRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("NETWORKLIST", "resourceNetworkListSubscriptionRead") + + getNetworkListSubscription := networklists.GetNetworkListSubscriptionRequest{} + + recipients := d.Get("recipients").([]interface{}) + nru := make([]string, 0, len(recipients)) + + for _, h := range recipients { + nru = append(nru, h.(string)) + + } + getNetworkListSubscription.Recipients = nru + + extractString := strings.Join(getNetworkListSubscription.Recipients, " ") + recSHA := tools.GetSHAString(extractString) + + uniqueids := d.Get("unique_ids").([]interface{}) + uids := make([]string, 0, len(uniqueids)) + + for _, h := range uniqueids { + uids = append(uids, h.(string)) + + } + + getNetworkListSubscription.UniqueIds = uids + + extractStringUID := strings.Join(getNetworkListSubscription.UniqueIds, " ") + recSHAUID := tools.GetSHAString(extractStringUID) + + _, err := client.GetNetworkListSubscription(ctx, getNetworkListSubscription) + if err != nil { + logger.Errorf("calling 'getNetworkListSubscription': %s", err.Error()) + //return diag.FromErr(err) + } + + d.SetId(fmt.Sprintf("%s:%s", recSHA, recSHAUID)) + + return nil +} + +func resourceNetworkListSubscriptionDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("NETWORKLIST", "resourceNetworkListSubscriptionDelete") + + removeNetworkListSubscription := networklists.RemoveNetworkListSubscriptionRequest{} + recipients := d.Get("recipients").([]interface{}) + nru := make([]string, 0, len(recipients)) + + for _, h := range recipients { + nru = append(nru, h.(string)) + + } + removeNetworkListSubscription.Recipients = nru + // removeNetworkListSubscription.Recipients = tools.SetToStringSlice(d.Get("recipients").(*schema.Set)) + // tools.SetToStringSlice(d.Get("notification_recipients").(*schema.Set)) + + uniqueids := d.Get("unique_ids").([]interface{}) + uids := make([]string, 0, len(uniqueids)) + + for _, h := range uniqueids { + uids = append(uids, h.(string)) + + } + + removeNetworkListSubscription.UniqueIds = uids + // removeNetworkListSubscription.UniqueIds = tools.SetToStringSlice(d.Get("unique_ids").(*schema.Set)) + // tools.SetToStringSlice(d.Get("notification_recipients").(*schema.Set)) + _, errd := client.RemoveNetworkListSubscription(ctx, removeNetworkListSubscription) + if errd != nil { + logger.Errorf("calling 'updateNetworkListSubscription': %s", errd.Error()) + return diag.FromErr(errd) + } + return nil +} + +func resourceNetworkListSubscriptionUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("NETWORKLIST", "resourceNetworkListSubscriptionUpdate") + + updateNetworkListSubscription := networklists.UpdateNetworkListSubscriptionRequest{} + + recipients := d.Get("recipients").([]interface{}) + nru := make([]string, 0, len(recipients)) + + for _, h := range recipients { + nru = append(nru, h.(string)) + + } + updateNetworkListSubscription.Recipients = nru + + extractString := strings.Join(updateNetworkListSubscription.Recipients, " ") + recSHA := tools.GetSHAString(extractString) + + uniqueids := d.Get("unique_ids").([]interface{}) + uids := make([]string, 0, len(uniqueids)) + + for _, h := range uniqueids { + uids = append(uids, h.(string)) + + } + + updateNetworkListSubscription.UniqueIds = uids + + extractStringUID := strings.Join(updateNetworkListSubscription.UniqueIds, " ") + recSHAUID := tools.GetSHAString(extractStringUID) + + _, erru := client.UpdateNetworkListSubscription(ctx, updateNetworkListSubscription) + if erru != nil { + logger.Errorf("calling 'updateNetworkListSubscription': %s", erru.Error()) + return diag.FromErr(erru) + } + d.SetId(fmt.Sprintf("%s:%s", recSHA, recSHAUID)) + + return resourceNetworkListSubscriptionRead(ctx, d, m) +} diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list_subscription_test.go b/pkg/providers/networklists/resource_akamai_networklist_network_list_subscription_test.go new file mode 100644 index 000000000..2cbf2d1f7 --- /dev/null +++ b/pkg/providers/networklists/resource_akamai_networklist_network_list_subscription_test.go @@ -0,0 +1,52 @@ +package networklists + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiNetworkListSubscription_res_basic(t *testing.T) { + t.Run("match by NetworkListSubscription ID", func(t *testing.T) { + client := &mocknetworklists{} + + cu := networklists.RemoveNetworkListSubscriptionResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResNetworkListSubscription/NetworkListSubscription.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := networklists.GetNetworkListSubscriptionResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResNetworkListSubscription/NetworkListSubscription.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetNetworkListSubscription", + mock.Anything, // ctx is irrelevant for this test + networklists.GetNetworkListSubscriptionRequest{}, //Recipients: "79536_MARTINNETWORKLIST", UniqueIds: "test@email.com"}, + ).Return(&cr, nil) + + client.On("UpdateNetworkListSubscription", + mock.Anything, // ctx is irrelevant for this test + networklists.RemoveNetworkListSubscriptionRequest{}, //Recipients: , + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResNetworkListSubscription/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_networklist_network_list_subscription.test", "id", "f7a36129f691baa1201d963b8537eb69caa28863:dd6085a7b8c8f8efaecbd420aff85a3e865ad5ca"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list_test.go b/pkg/providers/networklists/resource_akamai_networklist_network_list_test.go new file mode 100644 index 000000000..e1a370169 --- /dev/null +++ b/pkg/providers/networklists/resource_akamai_networklist_network_list_test.go @@ -0,0 +1,58 @@ +package networklists + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiNetworkList_res_basic(t *testing.T) { + t.Run("match by NetworkList ID", func(t *testing.T) { + client := &mocknetworklists{} + + cu := networklists.UpdateNetworkListResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResNetworkList/NetworkList.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := networklists.GetNetworkListResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResNetworkList/NetworkList.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetNetworkList", + mock.Anything, // ctx is irrelevant for this test + networklists.GetNetworkListRequest{Name: "Test"}, + ).Return(&cr, nil) + + client.On("UpdateNetworkList", + mock.Anything, // ctx is irrelevant for this test + networklists.UpdateNetworkListRequest{Name: "Test"}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResNetworkList/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_networklist_network_list.test", "name", "Martin Network List"), + ), + }, + { + Config: loadFixtureString("testdata/TestResNetworkList/update_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_networklist_network_list.test", "name", "Martin Network List"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/networklists/testdata/TestDSNetworkList/NetworkList.json b/pkg/providers/networklists/testdata/TestDSNetworkList/NetworkList.json new file mode 100644 index 000000000..65de94ec1 --- /dev/null +++ b/pkg/providers/networklists/testdata/TestDSNetworkList/NetworkList.json @@ -0,0 +1,8541 @@ +[ + { + "links": { + "create": { + "href": "/network-list/v2/network-lists", + "method": "POST" + } + }, + "networkLists": [ + { + "elementCount": 1716, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES", + "method": "PUT" + } + }, + "name": "Tor Akamai Network List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 43422, + "type": "IP", + "uniqueId": "365_AKAMAITOREXITNODES" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "https://confluence.expedia.biz/display/EITCOLLAB/GitHub+EG+IP+Whitelist", + "elementCount": 915, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST", + "method": "PUT" + } + }, + "name": "Github WhiteList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 293, + "type": "IP", + "uniqueId": "41750_GITHUBWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 126, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST", + "method": "PUT" + } + }, + "name": "jenkinslab whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 21, + "type": "IP", + "uniqueId": "55687_JENKINSLABWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Lab+IP+Whitelist", + "elementCount": 701, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST", + "method": "PUT" + } + }, + "name": "artylab-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 227, + "type": "IP", + "uniqueId": "40996_ARTYLABWHITELIST" + }, + { + "accessControlGroup": "GCO - 3-TE78Q.G150073", + "description": "Voyager Training SW", + "elementCount": 526, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW", + "method": "PUT" + } + }, + "name": "Voyager Training SW", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "75597_VOYAGUERTRAININGSW" + }, + { + "elementCount": 523, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU", + "method": "PUT" + } + }, + "name": "Ec2 Akamai Network List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 223, + "type": "IP", + "uniqueId": "1024_AMAZONELASTICCOMPUTECLOU" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "new office in London Victoria for Vrbo", + "elementCount": 355, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Jira Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 123, + "type": "IP", + "uniqueId": "34612_JIRAALLOWEDIPS" + }, + { + "elementCount": 3139, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT", + "method": "PUT" + } + }, + "name": "Azure IP range cloud services", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 426, + "type": "IP", + "uniqueId": "1283_MICROSOFTWINDOWSAZUREDAT" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "Whitelisting one more Akamai IP for testing", + "elementCount": 88, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST", + "method": "PUT" + } + }, + "name": "artylab-test-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 28, + "type": "IP", + "uniqueId": "40998_ARTYLABTESTWHITELIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 24, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Egencia Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "3379_EGENCIABRANDBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Secure+IP+Whitelist", + "elementCount": 331, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST", + "method": "PUT" + } + }, + "name": "artyprod-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 129, + "type": "IP", + "uniqueId": "40997_ARTYPRODWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to allow traffic on jenkinstest.expedia.biz", + "elementCount": 30, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST", + "method": "PUT" + } + }, + "name": "JenkinsTest Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 15, + "type": "IP", + "uniqueId": "53434_JENKINSTESTWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for fisheye.expedia.biz and fisheyetest.expedia.biz", + "elementCount": 135, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST", + "method": "PUT" + } + }, + "name": "Fisheye Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 10, + "type": "IP", + "uniqueId": "68757_FISHEYEWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for sonar.expedia.biz and sonartest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/Sonar+EG+IP+Whitelist", + "elementCount": 173, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST", + "method": "PUT" + } + }, + "name": "Sonar Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 23, + "type": "IP", + "uniqueId": "68755_SONARWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for testrail.expedia.biz and testrailtest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/TestRail+EG+IP+Whitelist", + "elementCount": 133, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST", + "method": "PUT" + } + }, + "name": "Testrail Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "68758_TESTRAILWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 62, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST", + "method": "PUT" + } + }, + "name": "alm-blog-whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 15, + "type": "IP", + "uniqueId": "67898_ALMBLOGWHITELIST" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "description": "Added 187.207.181.251, unwanted IP on hoteles.volaris.com\nAdded 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24 - Erik Mattison (ERS - Sec Eng)", + "elementCount": 3969, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Hotels Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 129, + "type": "IP", + "uniqueId": "1706_HOTELSBRANDBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "description": "F-CS-4083079", + "elementCount": 44, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST", + "method": "PUT" + } + }, + "name": "Egencia Sisense Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "75756_EGENCIASISENSEWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS", + "method": "PUT" + } + }, + "name": "Egencia Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "51562_EGENCIABYPASS" + }, + { + "elementCount": 2767, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS", + "method": "PUT" + } + }, + "name": "Image Manager Servers", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 63, + "type": "IP", + "uniqueId": "14121_IMAGEMANAGERSERVERS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 20, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST", + "method": "PUT" + } + }, + "name": "artyprod-test-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 14, + "type": "IP", + "uniqueId": "40999_ARTYPRODTESTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Lydia - Removing IP 216.251.120.10", + "elementCount": 465, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO", + "method": "PUT" + } + }, + "name": "Security Bypass List - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "55214_SECURITYBYPASSLISTGCO" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "description": "ExpediaPartnerCentral IP Blacklist - Added 5 entries per SOC (Erik M, Sec Eng)", + "elementCount": 50, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST", + "method": "PUT" + } + }, + "name": "EPC Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 18, + "type": "IP", + "uniqueId": "32620_EPCBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "DO NOT USE!!! Testing list for automation - see Erik Mattison", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/74967_TESTLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/74967_TESTLIST", + "method": "PUT" + } + }, + "name": "Test-list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "74967_TESTLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "The whitelist for githubtest.expedia.biz", + "elementCount": 34, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST", + "method": "PUT" + } + }, + "name": "GitHubTest Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 17, + "type": "IP", + "uniqueId": "45358_GITHUBTESTWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 22, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB", + "method": "PUT" + } + }, + "name": "ChefLab Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 6, + "type": "IP", + "uniqueId": "68112_CHEFLAB" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 47, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS", + "method": "PUT" + } + }, + "name": "CarRentals Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 7, + "type": "IP", + "uniqueId": "46789_CARRENTALSBYPASS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to allow traffic on jenkinsdecaf.expedia.biz", + "elementCount": 25, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST", + "method": "PUT" + } + }, + "name": "JenkinsDecaf Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "53433_JENKINSDECAFWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS", + "method": "PUT" + } + }, + "name": "Expediagroup Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "53077_EXPEDIAGROUPBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Duplicating ADYEN addresses to this list", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST", + "method": "PUT" + } + }, + "name": "Rate Controls Bypass List - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52769_RATECONTROLSBYPASSLIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Adding Non Prod VPCs", + "elementCount": 74, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/48306_ODSIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/48306_ODSIPS", + "method": "PUT" + } + }, + "name": "ODS IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 14, + "type": "IP", + "uniqueId": "48306_ODSIPS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP Whitelist for chefdecaf.expedia.biz, chefautodecaf.expedia.biz, chefsupermarketdecaf.expedia.biz", + "elementCount": 20, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF", + "method": "PUT" + } + }, + "name": "Chefdecaf Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "68115_CHEFDECAF" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP Whitelist for chefcorp.expedia.biz, chefautocorp.expedia.biz, chefsupermarketcorp.expedia.biz", + "elementCount": 54, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP", + "method": "PUT" + } + }, + "name": "ChefCorp Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "68113_CHEFCORP" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS", + "method": "PUT" + } + }, + "name": "Hotwire WAF Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "68750_HOTWIREWAFBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "F-CS-3996326", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO", + "method": "PUT" + } + }, + "name": "Strict Whitelist – GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "72997_STRICTWHITELISTGCO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 9, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL", + "method": "PUT" + } + }, + "name": "vap-e2e-prod SWL", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "72924_VAPE2EPRODSWL" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "description": "new office in London Victoria for Vrbo", + "elementCount": 73, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST", + "method": "PUT" + } + }, + "name": "Lodging Internal Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 16, + "type": "IP", + "uniqueId": "45955_LODGINGINTERNALWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "External IPs allowed to access JIRA. See https://confluence.expedia.biz/display/JIRA/JIRA+IP+Whitelisting", + "elementCount": 304, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Vrbojiratest Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69322_VRBOJIRATESTALLOWEDIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 56, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST", + "method": "PUT" + } + }, + "name": "alm-blogtest-whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "67897_ALMBLOGTESTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 71, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS", + "method": "PUT" + } + }, + "name": "Expedia Group Public IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "65037_EXPEDIAGROUPPUBLICIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "List of EG owned/trusted IPs", + "elementCount": 67, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS", + "method": "PUT" + } + }, + "name": "EG Trusted IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69033_EGTRUSTEDIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "External IPs allowed to access Confluence. See https://confluence.expedia.biz/display/CON/Confluence+IP+Whitelisting", + "elementCount": 218, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Confluence Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 38, + "type": "IP", + "uniqueId": "42664_CONFLUENCEALLOWEDIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Added 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24, 103.72.8.217- Erik Mattison (ERS - Sec Eng)", + "elementCount": 24, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST", + "method": "PUT" + } + }, + "name": "Expedia Temporary Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "5703_EXPEDIATEMPORARYBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL", + "method": "PUT" + } + }, + "name": "Expedia Group Global Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "71830_EXPEDIAGROUPGLOBALBLACKL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Deny-By-IP, Apple Verification (STGR-2439), AWS Egress (PROD-5148, PROD-5319), Vitality (PROD-5818), Bangalore Office (PSUP-34217)", + "elementCount": 835, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST", + "method": "PUT" + } + }, + "name": "Staging Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 16, + "type": "IP", + "uniqueId": "64150_VITALITYIPLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS", + "method": "PUT" + } + }, + "name": "Classic vacations Black list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "17400_CLASSICVACATIONSBLACKLIS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "description": "Blocking 49.86.182.23 for scanning", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST", + "method": "PUT" + } + }, + "name": "TEMP IP Black List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "40015_TEMPIPBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI", + "method": "PUT" + } + }, + "name": "Voyager Call Center Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "2276_VOYAGERCALLCENTERBLACKLI" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST", + "method": "PUT" + } + }, + "name": "Voyager LAB Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "3402_VOYAGERLABBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 7, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST", + "method": "PUT" + } + }, + "name": "Hotwire Brand QA Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "4308_HOTWIREBRANDQABLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 7, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Venere Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "3380_VENEREBRANDBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 28, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL", + "method": "PUT" + } + }, + "name": "Voyager PROD Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "5624_VOYAGERCALLCENTERBLACKL" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 137, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Travelocity Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 19, + "type": "IP", + "uniqueId": "2643_TRAVELOCITYBRANDBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 19, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Via Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 6, + "type": "IP", + "uniqueId": "1538_VIABRANDBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 13, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST", + "method": "PUT" + } + }, + "name": "EAN IP Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "16864_EANIPBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST", + "method": "PUT" + } + }, + "name": "ECSC-Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "44828_ECSCBLACKLIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST", + "method": "PUT" + } + }, + "name": "CarRentals Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "46787_CARRENTALSBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST", + "method": "PUT" + } + }, + "name": "ADT - IP Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "49181_ADTIPBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST", + "method": "PUT" + } + }, + "name": "LegacyOrbitz BlackList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "49996_LEGACYORBITZBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO", + "method": "PUT" + } + }, + "name": "IP Blacklist - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52764_IPBLACKLISTDUO" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST", + "method": "PUT" + } + }, + "name": "API_Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52782_APIBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS", + "method": "PUT" + } + }, + "name": "Blacklist_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "53347_BLACKLISTJENKINS" + }, + { + "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST", + "method": "PUT" + } + }, + "name": "GCO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "53726_GCOBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO", + "method": "PUT" + } + }, + "name": "IP Blacklist - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "55211_IPBLACKLISTGCO" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 15625, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Expedia Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 71, + "type": "IP", + "uniqueId": "1933_EXPEDIABRANDBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "description": "Adding 64.15.129.112 as per approval from Narainder.", + "elementCount": 29, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Hotwire Brand Prod Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "1883_HOTWIREBRANDBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST", + "method": "PUT" + } + }, + "name": "EGP Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "63705_EGPBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST", + "method": "PUT" + } + }, + "name": "WorldLine Prod Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69602_WORLDLINEPRODWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "195.35.91.69195.35.90.70", + "elementCount": 8, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST", + "method": "PUT" + } + }, + "name": "WorldPay Prod Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "69603_WORLDPAYPRODWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP Whitelist for chefsecure.expedia.biz, chefautosecure.expedia.biz, chefsupermarketsecure.expedia.biz", + "elementCount": 28, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE", + "method": "PUT" + } + }, + "name": "ChefSecure Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "68114_CHEFSECURE" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 319, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE", + "method": "PUT" + } + }, + "name": "Hotels Brand Blacklist Exceptions", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "42684_HOTELSBRANDBLACKLISTEXCE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 323, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "ADT StrictWhitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "49178_ADTSTRICTWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "VPN IP to Whitelist", + "elementCount": 12, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST", + "method": "PUT" + } + }, + "name": "CarRentals Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 7, + "type": "IP", + "uniqueId": "46788_CARRENTALSWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "204.14.232.0/21", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "Placeholder", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "70704_FSPSTRICTWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "description": "204.14.232.0/21", + "elementCount": 27, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "FSP Strict Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "70705_FSPSTRICTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 27, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS", + "method": "PUT" + } + }, + "name": "SalesForce IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "70568_SALESFORCEIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "PROD-5818", + "elementCount": 49, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP", + "method": "PUT" + } + }, + "name": "Vitality-IP-List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "65875_ALLOWBYIP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Iran APT IOC IPs addition to security controls\nJira ID - ERSST-2128", + "elementCount": 17, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS", + "method": "PUT" + } + }, + "name": "Iran APT IOC IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "70327_IRANAPTIOCIPS" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "description": "Added as requested by Atit: Expedia Partner JIRA: (AK-88) Add Qualys CIDR to EAN IP Bypass List\n\nAdded Deloitte IPs as requested by Atit. AK-104\n\nAdded Rapid7 IPs per Atit. Ak-171", + "elementCount": 13, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST", + "method": "PUT" + } + }, + "name": "EAN IP Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 10, + "type": "IP", + "uniqueId": "16862_EANIPBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST", + "method": "PUT" + } + }, + "name": "Adyen Prod Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69601_ADYENPRODWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST", + "method": "PUT" + } + }, + "name": "Rate Controls Bypass List - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "55215_RATECONTROLSBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST", + "method": "PUT" + } + }, + "name": "WorldPay Test Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "68764_WORLDPAYWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST", + "method": "PUT" + } + }, + "name": "WorldLine Test Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "68765_WORLDLINEWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 10, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68762_ADYEN/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68762_ADYEN" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68762_ADYEN", + "method": "PUT" + } + }, + "name": "Adyen Test Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "68762_ADYEN" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST", + "method": "PUT" + } + }, + "name": "TEMP Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "40021_TEMPBYPASSLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS", + "method": "PUT" + } + }, + "name": "Vrbojiratest_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "69324_VRBOJIRATESTBYPASS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST", + "method": "PUT" + } + }, + "name": "Vrbojiratest_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "69323_VRBOJIRATESTRCWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 16, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS", + "method": "PUT" + } + }, + "name": "BEX Rate Control Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "55919_BEXRATECONTROLBYPASS" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "description": "HAK-86, PROD-6167", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS", + "method": "PUT" + } + }, + "name": "AWS Egress IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "68043_AWSEGRESSIPS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "List of IPs allowed to access https://cheftest.expedia.biz", + "elementCount": 13, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST", + "method": "PUT" + } + }, + "name": "ChefTest Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "68111_CHEFTEST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for jenkinssecure.expedia.biz", + "elementCount": 39, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST", + "method": "PUT" + } + }, + "name": "jenkinssecure whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "55686_JENKINSSECUREWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (CarRentals)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "46792_REPUTATIONWHITELISTCARRE" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Adding New Relic San Francisco EndPoints for Synthetics", + "elementCount": 11, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP", + "method": "PUT" + } + }, + "name": "CarRentals Rate Control Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "46791_CARRENTALSRATECONTROLBYP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "F-CS-3817120\nES_Tuning - Rate Control Recommendations\nBy Akamai", + "elementCount": 14, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST", + "method": "PUT" + } + }, + "name": "Rate Controls Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "68495_RATECONTROLSWHITELIST" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (EAN WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "68344_REPUTATIONWHITELISTEANW" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST", + "method": "PUT" + } + }, + "name": "API_BypassList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "52784_APIBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES", + "method": "PUT" + } + }, + "name": "eIT Services", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "67900_EITSERVICES" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 16, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Hotels)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 7, + "type": "IP", + "uniqueId": "9606_REPUTATIONWHITELISTHOTEL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP", + "method": "PUT" + } + }, + "name": "WAF Bypass for \"DENY-By-IP-Policy\"", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "66858_WAFBYPASSFORDENYBYIP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "PROD-5839, HAK-81\nTarget: apihotels.net", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST", + "method": "PUT" + } + }, + "name": "API Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "65265_AWSBAMBOOWHITELIST" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (eIT Extranet Services)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "65827_REPUTATIONWHITELISTEITE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 20, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST", + "method": "PUT" + } + }, + "name": "ADT - WAF Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "49185_ADTWAFBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST", + "method": "PUT" + } + }, + "name": "Geo - Network List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "65654_GEONETWORKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION", + "method": "PUT" + } + }, + "name": "IP Block List Exception", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "65653_IPBLOCKLISTEXCEPTION" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST", + "method": "PUT" + } + }, + "name": "Amex Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "65651_AMEXWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Adding EG DAST IPs", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST", + "method": "PUT" + } + }, + "name": "CarRentals Partner Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "53725_PARTNERWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Hotwire WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "9833_REPUTATIONWHITELISTHOTWI" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS", + "method": "PUT" + } + }, + "name": "ECSC-Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "44829_ECSCBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", + "elementCount": 213, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS", + "method": "PUT" + } + }, + "name": "CPI Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "49617_CPIALLOWEDIPS" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 29, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS", + "method": "PUT" + } + }, + "name": "Customer Client IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 10, + "type": "IP", + "uniqueId": "48307_CUSTOMERCLIENTIPS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 9, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL", + "method": "PUT" + } + }, + "name": "Egencia StrictWL", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "53659_EGENCIASTRICTWL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", + "elementCount": 213, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Confluence Okta Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "50276_CONFLUENCEOKTAALLOWEDIPS" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 58, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "App Strict Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "44833_APPSTRICTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 37, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST", + "method": "PUT" + } + }, + "name": "Corporate HQ Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "26371_CORPORATEHQWHITELIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 342, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST", + "method": "PUT" + } + }, + "name": "Voyager LAB Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 12, + "type": "IP", + "uniqueId": "3324_VOYAGERLABWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "List of allowed IPs for ALM GitHub Enterprise", + "elementCount": 18, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST", + "method": "PUT" + } + }, + "name": "bogus-github-whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "40196_GITHUBWHITELIST" + }, + { + "description": "The Akamai Portal Test Center is a tool that you can use to test configuration changes. To take advantage of the Test Center, you must ensure that test requests coming from the Test Center are not blocked, by whitelisting this list in your WAF policies.", + "elementCount": 12, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA", + "method": "PUT" + } + }, + "name": "Akamai Test Center (ATC) Agents", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 2, + "type": "IP", + "uniqueId": "46506_AKAMAIPORTALTESTCENTERA" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 227, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL", + "method": "PUT" + } + }, + "name": "Akamai Firewall", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "1327_AKAMAIFIREWALL" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Enterprise Solutions)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63829_REPUTATIONWHITELISTENTER" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (EGP)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63708_REPUTATIONWHITELISTEGP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST", + "method": "PUT" + } + }, + "name": "EGP Geolist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "63707_EGPGEOLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST", + "method": "PUT" + } + }, + "name": "EGP Bypasslist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63706_EGPBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST", + "method": "PUT" + } + }, + "name": "EGP Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63704_EGPWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Allow Traffic from One UI Tool", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST", + "method": "PUT" + } + }, + "name": "API_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52781_APIWHITELIST" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 75, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS", + "method": "PUT" + } + }, + "name": "Hotels Brand WAF Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "42686_HOTELSBRANDWAFBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - Offices", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "50637_WAFBYPASSWHITELISTOFFI" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 68, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS", + "method": "PUT" + } + }, + "name": "ECSC-RC Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "44830_ECSCRCBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 30, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP", + "method": "PUT" + } + }, + "name": "WAF Security File- Rate Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "62642_WAFSECURITYFILERATEBYP" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 9, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR", + "method": "PUT" + } + }, + "name": "WAF bypass IP list - Hotwire QA", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "886_WAFBYPASSIPLISTHOTWIR" + }, + { + "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", + "elementCount": 10, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR", + "method": "PUT" + } + }, + "name": "Hotels Brand - Whitelist from Custom Rule 621882", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "60322_HOTELSBRANDWHITELISTFR" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Testing the Network list automation using API and Flyte-Akamai chatbot, https://jira.hcom/browse/PLATFORM-461", + "elementCount": 18, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461", + "method": "PUT" + } + }, + "name": "test-PLATFORM-461", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 48, + "type": "IP", + "uniqueId": "50114_TESTPLATFORM461" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Negative match fro rate controls", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT", + "method": "PUT" + } + }, + "name": "Hotwire Rate Control Exceptions", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "50628_HOTWIRERATECONTROLEXCEPT" + }, + { + "description": "Gomez synthetic monitoring network", + "elementCount": 104, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS", + "method": "PUT" + } + }, + "name": "Gomez (Compuware) Agents", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 4, + "type": "IP", + "uniqueId": "1026_GOMEZCOMPUWAREAGENTS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (GCO)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "55664_REPUTATIONWHITELISTGCO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO", + "method": "PUT" + } + }, + "name": "Geo Blacklist - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "55213_GEOBLACKLISTGCO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC", + "method": "PUT" + } + }, + "name": "IP Blacklist Exception - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "55212_IPBLACKLISTEXCEPTIONGC" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Added 203.37.166.130, new origin IP for .com.au", + "elementCount": 250, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - Hopscotch", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 38, + "type": "IP", + "uniqueId": "6487_WAFBYPASSWHITELISTHOPS" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Added 72.246.0.10 & 72.246.0.22 as requested by Jim George.", + "elementCount": 143, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE", + "method": "PUT" + } + }, + "name": "Akamai Cracker 2 and Cracker 3 IPs for testing purposes", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "48308_AKAMAICRACKER2ANDCRACKE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING", + "method": "PUT" + } + }, + "name": "Akamai_Internal_Testing", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "54056_AKAMAIINTERNALTESTING" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Jenkins)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53355_REPUTATIONWHITELISTJENKI" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to bypass rate controls on Jenkins config, jenkins policy", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ", + "method": "PUT" + } + }, + "name": "Rate Control Bypass List _Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53351_RATECONTROLBYPASSLISTJ" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "Exclusion from blacklist", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS", + "method": "PUT" + } + }, + "name": "Whitelist_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53349_WHITELISTJENKINS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS", + "method": "PUT" + } + }, + "name": "GEO Blacklist_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "53348_GEOBLACKLISTJENKINS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to bypass WAF on Jenkins Policy, Jenkins config", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS", + "method": "PUT" + } + }, + "name": "WAF Bypass List_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53345_WAFBYPASSLISTJENKINS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (ERS)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53080_REPUTATIONWHITELISTERS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB", + "method": "PUT" + } + }, + "name": "Expediagroup Rate Control Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53079_EXPEDIAGROUPRATECONTROLB" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST", + "method": "PUT" + } + }, + "name": "Expediagroup GEO list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "53076_EXPEDIAGROUPGEOLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST", + "method": "PUT" + } + }, + "name": "Expediagroup White list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53075_EXPEDIAGROUPWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST", + "method": "PUT" + } + }, + "name": "Expediagroup Black list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53074_EXPEDIAGROUPBLACKLIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK", + "method": "PUT" + } + }, + "name": "API_GEOBlock", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "52783_APIGEOBLOCK" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Duo)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "52771_REPUTATIONWHITELISTDUO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO", + "method": "PUT" + } + }, + "name": "Security Bypass List - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "52768_SECURITYBYPASSLISTDUO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO", + "method": "PUT" + } + }, + "name": "Geo Blacklist - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "52767_GEOBLACKLISTDUO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU", + "method": "PUT" + } + }, + "name": "IP Blacklist Exception - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "52766_IPBLACKLISTEXCEPTIONDU" + }, + { + "elementCount": 468, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS", + "method": "PUT" + } + }, + "name": "A2 Servers", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 15, + "type": "IP", + "uniqueId": "16656_CPISERVERS" + }, + { + "elementCount": 349, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS", + "method": "PUT" + } + }, + "name": "FEO Servers", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 12, + "type": "IP", + "uniqueId": "7054_FEOSERVERS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK", + "method": "PUT" + } + }, + "name": "Egencia GEO Block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "51561_EGENCIAGEOBLOCK" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - Other", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50640_WAFBYPASSWHITELISTOTHE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - AWS NATs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50638_WAFBYPASSWHITELISTAWS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - CallCenter", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50636_WAFBYPASSWHITELISTCALL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - partner", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50635_WAFBYPASSWHITELISTPART" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "splitting up the hopscotch list for easier management", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - DC", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50634_WAFBYPASSWHITELISTDC" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 10, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST", + "method": "PUT" + } + }, + "name": "hoteis.com GEO list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "GEO", + "uniqueId": "50337_HOTEISCOMGEOLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS", + "method": "PUT" + } + }, + "name": "Confluence Okta_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50278_CONFLUENCEOKTARCWHITELIS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS", + "method": "PUT" + } + }, + "name": "Confluence Okta_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50277_CONFLUENCEOKTABYPASS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST", + "method": "PUT" + } + }, + "name": "LegacyOrbitz GEO BlackList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "49997_LEGACYORBITZBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST", + "method": "PUT" + } + }, + "name": "LegacyOrbitz Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49995_LEGACYORBITZWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST", + "method": "PUT" + } + }, + "name": "CPI_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49620_CPIRCWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS", + "method": "PUT" + } + }, + "name": "CPI_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49618_CPIBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS", + "method": "PUT" + } + }, + "name": "ADT - Rate Controls Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49186_ADTRATECONTROLSBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "ADT - Geo Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "49182_ADTGEOBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED", + "method": "PUT" + } + }, + "name": "Hotels Brand GEO List (Used by Custom Bots)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "GEO", + "uniqueId": "47882_HOTELSBRANDGEOLISTUSED" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS", + "method": "PUT" + } + }, + "name": "legacyOrbitz_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "47546_LEGACYORBITZBYPASS" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST", + "method": "PUT" + } + }, + "name": "Digital Ocean Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "47517_DIGITALOCEANWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK", + "method": "PUT" + } + }, + "name": "CarRentals Geo Block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "46790_CARRENTALSGEOBLOCK" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "EPC GEO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "45956_EPCGEOBLACKLIST" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS", + "method": "PUT" + } + }, + "name": "EPC Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "45954_EPCBYPASS" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "EPC GEO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "45953_EPCGEOBLACKLIST" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST", + "method": "PUT" + } + }, + "name": "EPC Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "45952_EPCWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (ECSC)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "44832_REPUTATIONWHITELISTECSC" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "ECSC-GEO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "44831_ECSCGEOBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST", + "method": "PUT" + } + }, + "name": "ECSC-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "44827_ECSCWHITELIST" + }, + { + "accessControlGroup": "Classic Vacations - 3-TE78Q.G83605", + "description": "Classic Vacations Whitelist for", + "elementCount": 17, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST", + "method": "PUT" + } + }, + "name": "Classic Vacations Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 6, + "type": "IP", + "uniqueId": "31075_CLASSICVACATIONSWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST", + "method": "PUT" + } + }, + "name": "Egencia Brand Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "43172_EGENCIABRANDWHITELIST" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS", + "method": "PUT" + } + }, + "name": "Hotels Brand Rate Controls Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "42688_HOTELSBRANDRATECONTROLS" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "Hotels Brand Geo Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "42687_HOTELSBRANDGEOBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS", + "method": "PUT" + } + }, + "name": "Confluence_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "42666_CONFLUENCEBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST", + "method": "PUT" + } + }, + "name": "Confluence_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "42665_CONFLUENCERCWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP", + "method": "PUT" + } + }, + "name": "BM rollout-IP", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "40730_BMROLLOUTIP" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO", + "method": "PUT" + } + }, + "name": "BM rollout-GEO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "GEO", + "uniqueId": "40731_BMROLLOUTGEO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP", + "method": "PUT" + } + }, + "name": "Not Used _3-TE78Q ION", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "40712_BMROLLOUTIP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO", + "method": "PUT" + } + }, + "name": "Not Used_3-TE78Q ION", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "GEO", + "uniqueId": "40713_BMROLLOUTGEO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "case F-CS-2759696", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE", + "method": "PUT" + } + }, + "name": "GEO-Block Hotwire", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "GEO", + "uniqueId": "40548_GEOBLOCKHOTWIRE" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Github)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "40198_REPUTATIONWHITELISTGITHU" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS", + "method": "PUT" + } + }, + "name": "Github Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "40197_GITHUBBYPASS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST", + "method": "PUT" + } + }, + "name": "TEMP Geo-Block List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "40016_TEMPGEOBLOCKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST", + "method": "PUT" + } + }, + "name": "TEMP IP White List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "40014_TEMPIPWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Expedia WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "37172_REPUTATIONWHITELISTEXPED" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST", + "method": "PUT" + } + }, + "name": "Jira_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "34616_JIRARCWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS", + "method": "PUT" + } + }, + "name": "Jira_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "34613_JIRABYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS", + "method": "PUT" + } + }, + "name": "test3", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "32383_EANRATECONTROLBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST", + "method": "PUT" + } + }, + "name": "test2", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "32378_RATECONTROLSBYPASSLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS", + "method": "PUT" + } + }, + "name": "EAN Rate Control bypass list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "32384_EANRATECONTROLBYPASSLIS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF", + "method": "PUT" + } + }, + "name": "Partner_turnoff", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "31755_PARTNERTURNOFF" + }, + { + "description": "reactivate to hide the variable. for Jira LUNADEVESC-5134", + "elementCount": 400, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS", + "method": "PUT" + } + }, + "name": "Keynote Agents", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 5, + "type": "IP", + "uniqueId": "1025_KEYNOTEAGENTS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 186, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST", + "method": "PUT" + } + }, + "name": "Call Center Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "26372_CALLCENTERWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST", + "method": "PUT" + } + }, + "name": "HomeAway IP whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "25066_HOMEAWAYIPWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK", + "method": "PUT" + } + }, + "name": "HomeAway Geo Block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "25065_HOMEAWAYGEOBLOCK" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK", + "method": "PUT" + } + }, + "name": "HomeAway IP block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "25064_IPBLOCK" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 216, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/18511_AS37963/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/18511_AS37963" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/18511_AS37963", + "method": "PUT" + } + }, + "name": "AS37963", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "18511_AS37963" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS", + "method": "PUT" + } + }, + "name": "Classic vacations waf bypass list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "17403_CLASSICVACATIONSWAFBYPAS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST", + "method": "PUT" + } + }, + "name": "Classic vacations whitelist exception to network control", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "17402_CLASSICVACATIONSWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK", + "method": "PUT" + } + }, + "name": "Classic vacations Geo Black list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "17401_CLASSICVACATIONSGEOBLACK" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "EAN Geo Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "16865_EANGEOBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST", + "method": "PUT" + } + }, + "name": "EAN IP Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "16863_EANIPWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Egencia WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "9818_REPUTATIONWHITELISTEGENC" + }, + { + "elementCount": 27, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST", + "method": "PUT" + } + }, + "name": "International Traffic in Arms Regulations (ITAR) List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 9, + "type": "GEO", + "uniqueId": "968_ITARCOUNTRYLIST" + }, + { + "elementCount": 22, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST", + "method": "PUT" + } + }, + "name": "International Emergency Economic Powers Act (IEEPA) List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 3, + "type": "GEO", + "uniqueId": "969_IEEPACOUNTRYLIST" + }, + { + "elementCount": 18, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST", + "method": "PUT" + } + }, + "name": "Office of Foreign Asset Control (OFAC) List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 4, + "type": "GEO", + "uniqueId": "967_OFACCOUNTRYLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST", + "method": "PUT" + } + }, + "name": "Reputation Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "6986_REPUTATIONWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 4113, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC", + "method": "PUT" + } + }, + "name": "Tor Exit Nodes - Static", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "5627_TOREXITNODESSTATIC" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS", + "method": "PUT" + } + }, + "name": "test access", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "3453_TESTACCESS" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI", + "method": "PUT" + } + }, + "name": "Voyager Call Center Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "2275_VOYAGERCALLCENTERWHITELI" + } + ] + } +] \ No newline at end of file diff --git a/pkg/providers/networklists/testdata/TestDSNetworkList/match_by_id.tf b/pkg/providers/networklists/testdata/TestDSNetworkList/match_by_id.tf new file mode 100644 index 000000000..1beb7fcf6 --- /dev/null +++ b/pkg/providers/networklists/testdata/TestDSNetworkList/match_by_id.tf @@ -0,0 +1,10 @@ +provider "akamai" { + edgerc = "~/.edgerc_network" +} + + +data "akamai_networklist_network_lists" "test" { + + name = "40996_ARTYLABWHITELIST" + + } diff --git a/pkg/providers/networklists/testdata/TestResActivations/Activations.json b/pkg/providers/networklists/testdata/TestResActivations/Activations.json new file mode 100644 index 000000000..9df6b6c6d --- /dev/null +++ b/pkg/providers/networklists/testdata/TestResActivations/Activations.json @@ -0,0 +1,9 @@ +[ + { + "detail": "Network list 21739 could not be found", + "instance": "https://problems.luna.akamaiapis.net/network-lists-activation/error-instances/77a73d4d-292b-4f96-9d16-1d82b716bb21", + "status": 404, + "title": "Not Found", + "type": "https://problems.luna.akamaiapis.net/network-lists-activation/error-types/NOT-FOUND" + } +] \ No newline at end of file diff --git a/pkg/providers/networklists/testdata/TestResActivations/ActivationsDelete.json b/pkg/providers/networklists/testdata/TestResActivations/ActivationsDelete.json new file mode 100644 index 000000000..16c533cd2 --- /dev/null +++ b/pkg/providers/networklists/testdata/TestResActivations/ActivationsDelete.json @@ -0,0 +1,18 @@ + + { + "action": "DEACTIVATE", + "activationConfigs": [ + { + "configId": 43253, + "configName": "Akamai Tools", + "configVersion": 4 + } + ], + "activationId": 547694, + "createDate": "2020-10-07T12:30:49Z", + "createdBy": "lap2lreucgguhekn", + "dispatchCount": 1, + "network": "STAGING", + "reasons": [], + "status": "DEACTIVATED" + } diff --git a/pkg/providers/networklists/testdata/TestResActivations/match_by_id.tf b/pkg/providers/networklists/testdata/TestResActivations/match_by_id.tf new file mode 100644 index 000000000..fdfd263b2 --- /dev/null +++ b/pkg/providers/networklists/testdata/TestResActivations/match_by_id.tf @@ -0,0 +1,14 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + + +resource "akamai_networklist_activations" "test" { + name = "Network list test" + network = "STAGING" + notes = "TEST Notes" + activate = true + notification_emails = ["martin@akava.io"] +} + diff --git a/pkg/providers/networklists/testdata/TestResNetworkList/NetworkList.json b/pkg/providers/networklists/testdata/TestResNetworkList/NetworkList.json new file mode 100644 index 000000000..65de94ec1 --- /dev/null +++ b/pkg/providers/networklists/testdata/TestResNetworkList/NetworkList.json @@ -0,0 +1,8541 @@ +[ + { + "links": { + "create": { + "href": "/network-list/v2/network-lists", + "method": "POST" + } + }, + "networkLists": [ + { + "elementCount": 1716, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES", + "method": "PUT" + } + }, + "name": "Tor Akamai Network List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 43422, + "type": "IP", + "uniqueId": "365_AKAMAITOREXITNODES" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "https://confluence.expedia.biz/display/EITCOLLAB/GitHub+EG+IP+Whitelist", + "elementCount": 915, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST", + "method": "PUT" + } + }, + "name": "Github WhiteList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 293, + "type": "IP", + "uniqueId": "41750_GITHUBWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 126, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST", + "method": "PUT" + } + }, + "name": "jenkinslab whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 21, + "type": "IP", + "uniqueId": "55687_JENKINSLABWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Lab+IP+Whitelist", + "elementCount": 701, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST", + "method": "PUT" + } + }, + "name": "artylab-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 227, + "type": "IP", + "uniqueId": "40996_ARTYLABWHITELIST" + }, + { + "accessControlGroup": "GCO - 3-TE78Q.G150073", + "description": "Voyager Training SW", + "elementCount": 526, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW", + "method": "PUT" + } + }, + "name": "Voyager Training SW", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "75597_VOYAGUERTRAININGSW" + }, + { + "elementCount": 523, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU", + "method": "PUT" + } + }, + "name": "Ec2 Akamai Network List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 223, + "type": "IP", + "uniqueId": "1024_AMAZONELASTICCOMPUTECLOU" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "new office in London Victoria for Vrbo", + "elementCount": 355, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Jira Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 123, + "type": "IP", + "uniqueId": "34612_JIRAALLOWEDIPS" + }, + { + "elementCount": 3139, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT", + "method": "PUT" + } + }, + "name": "Azure IP range cloud services", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 426, + "type": "IP", + "uniqueId": "1283_MICROSOFTWINDOWSAZUREDAT" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "Whitelisting one more Akamai IP for testing", + "elementCount": 88, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST", + "method": "PUT" + } + }, + "name": "artylab-test-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 28, + "type": "IP", + "uniqueId": "40998_ARTYLABTESTWHITELIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 24, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Egencia Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "3379_EGENCIABRANDBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Secure+IP+Whitelist", + "elementCount": 331, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST", + "method": "PUT" + } + }, + "name": "artyprod-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 129, + "type": "IP", + "uniqueId": "40997_ARTYPRODWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to allow traffic on jenkinstest.expedia.biz", + "elementCount": 30, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST", + "method": "PUT" + } + }, + "name": "JenkinsTest Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 15, + "type": "IP", + "uniqueId": "53434_JENKINSTESTWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for fisheye.expedia.biz and fisheyetest.expedia.biz", + "elementCount": 135, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST", + "method": "PUT" + } + }, + "name": "Fisheye Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 10, + "type": "IP", + "uniqueId": "68757_FISHEYEWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for sonar.expedia.biz and sonartest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/Sonar+EG+IP+Whitelist", + "elementCount": 173, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST", + "method": "PUT" + } + }, + "name": "Sonar Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 23, + "type": "IP", + "uniqueId": "68755_SONARWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for testrail.expedia.biz and testrailtest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/TestRail+EG+IP+Whitelist", + "elementCount": 133, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST", + "method": "PUT" + } + }, + "name": "Testrail Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "68758_TESTRAILWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 62, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST", + "method": "PUT" + } + }, + "name": "alm-blog-whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 15, + "type": "IP", + "uniqueId": "67898_ALMBLOGWHITELIST" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "description": "Added 187.207.181.251, unwanted IP on hoteles.volaris.com\nAdded 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24 - Erik Mattison (ERS - Sec Eng)", + "elementCount": 3969, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Hotels Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 129, + "type": "IP", + "uniqueId": "1706_HOTELSBRANDBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "description": "F-CS-4083079", + "elementCount": 44, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST", + "method": "PUT" + } + }, + "name": "Egencia Sisense Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "75756_EGENCIASISENSEWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS", + "method": "PUT" + } + }, + "name": "Egencia Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "51562_EGENCIABYPASS" + }, + { + "elementCount": 2767, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS", + "method": "PUT" + } + }, + "name": "Image Manager Servers", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 63, + "type": "IP", + "uniqueId": "14121_IMAGEMANAGERSERVERS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 20, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST", + "method": "PUT" + } + }, + "name": "artyprod-test-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 14, + "type": "IP", + "uniqueId": "40999_ARTYPRODTESTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Lydia - Removing IP 216.251.120.10", + "elementCount": 465, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO", + "method": "PUT" + } + }, + "name": "Security Bypass List - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "55214_SECURITYBYPASSLISTGCO" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "description": "ExpediaPartnerCentral IP Blacklist - Added 5 entries per SOC (Erik M, Sec Eng)", + "elementCount": 50, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST", + "method": "PUT" + } + }, + "name": "EPC Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 18, + "type": "IP", + "uniqueId": "32620_EPCBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "DO NOT USE!!! Testing list for automation - see Erik Mattison", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/74967_TESTLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/74967_TESTLIST", + "method": "PUT" + } + }, + "name": "Test-list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "74967_TESTLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "The whitelist for githubtest.expedia.biz", + "elementCount": 34, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST", + "method": "PUT" + } + }, + "name": "GitHubTest Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 17, + "type": "IP", + "uniqueId": "45358_GITHUBTESTWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 22, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB", + "method": "PUT" + } + }, + "name": "ChefLab Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 6, + "type": "IP", + "uniqueId": "68112_CHEFLAB" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 47, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS", + "method": "PUT" + } + }, + "name": "CarRentals Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 7, + "type": "IP", + "uniqueId": "46789_CARRENTALSBYPASS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to allow traffic on jenkinsdecaf.expedia.biz", + "elementCount": 25, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST", + "method": "PUT" + } + }, + "name": "JenkinsDecaf Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "53433_JENKINSDECAFWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS", + "method": "PUT" + } + }, + "name": "Expediagroup Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "53077_EXPEDIAGROUPBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Duplicating ADYEN addresses to this list", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST", + "method": "PUT" + } + }, + "name": "Rate Controls Bypass List - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52769_RATECONTROLSBYPASSLIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Adding Non Prod VPCs", + "elementCount": 74, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/48306_ODSIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/48306_ODSIPS", + "method": "PUT" + } + }, + "name": "ODS IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 14, + "type": "IP", + "uniqueId": "48306_ODSIPS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP Whitelist for chefdecaf.expedia.biz, chefautodecaf.expedia.biz, chefsupermarketdecaf.expedia.biz", + "elementCount": 20, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF", + "method": "PUT" + } + }, + "name": "Chefdecaf Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "68115_CHEFDECAF" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP Whitelist for chefcorp.expedia.biz, chefautocorp.expedia.biz, chefsupermarketcorp.expedia.biz", + "elementCount": 54, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP", + "method": "PUT" + } + }, + "name": "ChefCorp Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "68113_CHEFCORP" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS", + "method": "PUT" + } + }, + "name": "Hotwire WAF Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "68750_HOTWIREWAFBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "F-CS-3996326", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO", + "method": "PUT" + } + }, + "name": "Strict Whitelist – GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "72997_STRICTWHITELISTGCO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 9, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL", + "method": "PUT" + } + }, + "name": "vap-e2e-prod SWL", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "72924_VAPE2EPRODSWL" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "description": "new office in London Victoria for Vrbo", + "elementCount": 73, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST", + "method": "PUT" + } + }, + "name": "Lodging Internal Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 16, + "type": "IP", + "uniqueId": "45955_LODGINGINTERNALWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "External IPs allowed to access JIRA. See https://confluence.expedia.biz/display/JIRA/JIRA+IP+Whitelisting", + "elementCount": 304, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Vrbojiratest Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69322_VRBOJIRATESTALLOWEDIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 56, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST", + "method": "PUT" + } + }, + "name": "alm-blogtest-whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "67897_ALMBLOGTESTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 71, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS", + "method": "PUT" + } + }, + "name": "Expedia Group Public IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "65037_EXPEDIAGROUPPUBLICIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "List of EG owned/trusted IPs", + "elementCount": 67, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS", + "method": "PUT" + } + }, + "name": "EG Trusted IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69033_EGTRUSTEDIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "External IPs allowed to access Confluence. See https://confluence.expedia.biz/display/CON/Confluence+IP+Whitelisting", + "elementCount": 218, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Confluence Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 38, + "type": "IP", + "uniqueId": "42664_CONFLUENCEALLOWEDIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Added 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24, 103.72.8.217- Erik Mattison (ERS - Sec Eng)", + "elementCount": 24, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST", + "method": "PUT" + } + }, + "name": "Expedia Temporary Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "5703_EXPEDIATEMPORARYBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL", + "method": "PUT" + } + }, + "name": "Expedia Group Global Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "71830_EXPEDIAGROUPGLOBALBLACKL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Deny-By-IP, Apple Verification (STGR-2439), AWS Egress (PROD-5148, PROD-5319), Vitality (PROD-5818), Bangalore Office (PSUP-34217)", + "elementCount": 835, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST", + "method": "PUT" + } + }, + "name": "Staging Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 16, + "type": "IP", + "uniqueId": "64150_VITALITYIPLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS", + "method": "PUT" + } + }, + "name": "Classic vacations Black list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "17400_CLASSICVACATIONSBLACKLIS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "description": "Blocking 49.86.182.23 for scanning", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST", + "method": "PUT" + } + }, + "name": "TEMP IP Black List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "40015_TEMPIPBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI", + "method": "PUT" + } + }, + "name": "Voyager Call Center Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "2276_VOYAGERCALLCENTERBLACKLI" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST", + "method": "PUT" + } + }, + "name": "Voyager LAB Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "3402_VOYAGERLABBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 7, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST", + "method": "PUT" + } + }, + "name": "Hotwire Brand QA Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "4308_HOTWIREBRANDQABLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 7, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Venere Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "3380_VENEREBRANDBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 28, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL", + "method": "PUT" + } + }, + "name": "Voyager PROD Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "5624_VOYAGERCALLCENTERBLACKL" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 137, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Travelocity Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 19, + "type": "IP", + "uniqueId": "2643_TRAVELOCITYBRANDBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 19, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Via Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 6, + "type": "IP", + "uniqueId": "1538_VIABRANDBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 13, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST", + "method": "PUT" + } + }, + "name": "EAN IP Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "16864_EANIPBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST", + "method": "PUT" + } + }, + "name": "ECSC-Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "44828_ECSCBLACKLIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST", + "method": "PUT" + } + }, + "name": "CarRentals Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "46787_CARRENTALSBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST", + "method": "PUT" + } + }, + "name": "ADT - IP Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "49181_ADTIPBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST", + "method": "PUT" + } + }, + "name": "LegacyOrbitz BlackList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "49996_LEGACYORBITZBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO", + "method": "PUT" + } + }, + "name": "IP Blacklist - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52764_IPBLACKLISTDUO" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST", + "method": "PUT" + } + }, + "name": "API_Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52782_APIBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS", + "method": "PUT" + } + }, + "name": "Blacklist_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "53347_BLACKLISTJENKINS" + }, + { + "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST", + "method": "PUT" + } + }, + "name": "GCO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "53726_GCOBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO", + "method": "PUT" + } + }, + "name": "IP Blacklist - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "55211_IPBLACKLISTGCO" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 15625, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Expedia Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 71, + "type": "IP", + "uniqueId": "1933_EXPEDIABRANDBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "description": "Adding 64.15.129.112 as per approval from Narainder.", + "elementCount": 29, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Hotwire Brand Prod Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "1883_HOTWIREBRANDBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST", + "method": "PUT" + } + }, + "name": "EGP Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "63705_EGPBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST", + "method": "PUT" + } + }, + "name": "WorldLine Prod Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69602_WORLDLINEPRODWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "195.35.91.69195.35.90.70", + "elementCount": 8, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST", + "method": "PUT" + } + }, + "name": "WorldPay Prod Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "69603_WORLDPAYPRODWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP Whitelist for chefsecure.expedia.biz, chefautosecure.expedia.biz, chefsupermarketsecure.expedia.biz", + "elementCount": 28, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE", + "method": "PUT" + } + }, + "name": "ChefSecure Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "68114_CHEFSECURE" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 319, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE", + "method": "PUT" + } + }, + "name": "Hotels Brand Blacklist Exceptions", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "42684_HOTELSBRANDBLACKLISTEXCE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 323, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "ADT StrictWhitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "49178_ADTSTRICTWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "VPN IP to Whitelist", + "elementCount": 12, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST", + "method": "PUT" + } + }, + "name": "CarRentals Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 7, + "type": "IP", + "uniqueId": "46788_CARRENTALSWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "204.14.232.0/21", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "Placeholder", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "70704_FSPSTRICTWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "description": "204.14.232.0/21", + "elementCount": 27, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "FSP Strict Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "70705_FSPSTRICTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 27, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS", + "method": "PUT" + } + }, + "name": "SalesForce IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "70568_SALESFORCEIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "PROD-5818", + "elementCount": 49, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP", + "method": "PUT" + } + }, + "name": "Vitality-IP-List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "65875_ALLOWBYIP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Iran APT IOC IPs addition to security controls\nJira ID - ERSST-2128", + "elementCount": 17, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS", + "method": "PUT" + } + }, + "name": "Iran APT IOC IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "70327_IRANAPTIOCIPS" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "description": "Added as requested by Atit: Expedia Partner JIRA: (AK-88) Add Qualys CIDR to EAN IP Bypass List\n\nAdded Deloitte IPs as requested by Atit. AK-104\n\nAdded Rapid7 IPs per Atit. Ak-171", + "elementCount": 13, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST", + "method": "PUT" + } + }, + "name": "EAN IP Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 10, + "type": "IP", + "uniqueId": "16862_EANIPBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST", + "method": "PUT" + } + }, + "name": "Adyen Prod Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69601_ADYENPRODWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST", + "method": "PUT" + } + }, + "name": "Rate Controls Bypass List - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "55215_RATECONTROLSBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST", + "method": "PUT" + } + }, + "name": "WorldPay Test Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "68764_WORLDPAYWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST", + "method": "PUT" + } + }, + "name": "WorldLine Test Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "68765_WORLDLINEWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 10, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68762_ADYEN/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68762_ADYEN" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68762_ADYEN", + "method": "PUT" + } + }, + "name": "Adyen Test Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "68762_ADYEN" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST", + "method": "PUT" + } + }, + "name": "TEMP Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "40021_TEMPBYPASSLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS", + "method": "PUT" + } + }, + "name": "Vrbojiratest_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "69324_VRBOJIRATESTBYPASS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST", + "method": "PUT" + } + }, + "name": "Vrbojiratest_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "69323_VRBOJIRATESTRCWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 16, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS", + "method": "PUT" + } + }, + "name": "BEX Rate Control Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "55919_BEXRATECONTROLBYPASS" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "description": "HAK-86, PROD-6167", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS", + "method": "PUT" + } + }, + "name": "AWS Egress IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "68043_AWSEGRESSIPS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "List of IPs allowed to access https://cheftest.expedia.biz", + "elementCount": 13, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST", + "method": "PUT" + } + }, + "name": "ChefTest Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "68111_CHEFTEST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for jenkinssecure.expedia.biz", + "elementCount": 39, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST", + "method": "PUT" + } + }, + "name": "jenkinssecure whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "55686_JENKINSSECUREWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (CarRentals)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "46792_REPUTATIONWHITELISTCARRE" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Adding New Relic San Francisco EndPoints for Synthetics", + "elementCount": 11, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP", + "method": "PUT" + } + }, + "name": "CarRentals Rate Control Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "46791_CARRENTALSRATECONTROLBYP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "F-CS-3817120\nES_Tuning - Rate Control Recommendations\nBy Akamai", + "elementCount": 14, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST", + "method": "PUT" + } + }, + "name": "Rate Controls Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "68495_RATECONTROLSWHITELIST" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (EAN WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "68344_REPUTATIONWHITELISTEANW" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST", + "method": "PUT" + } + }, + "name": "API_BypassList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "52784_APIBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES", + "method": "PUT" + } + }, + "name": "eIT Services", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "67900_EITSERVICES" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 16, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Hotels)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 7, + "type": "IP", + "uniqueId": "9606_REPUTATIONWHITELISTHOTEL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP", + "method": "PUT" + } + }, + "name": "WAF Bypass for \"DENY-By-IP-Policy\"", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "66858_WAFBYPASSFORDENYBYIP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "PROD-5839, HAK-81\nTarget: apihotels.net", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST", + "method": "PUT" + } + }, + "name": "API Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "65265_AWSBAMBOOWHITELIST" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (eIT Extranet Services)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "65827_REPUTATIONWHITELISTEITE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 20, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST", + "method": "PUT" + } + }, + "name": "ADT - WAF Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "49185_ADTWAFBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST", + "method": "PUT" + } + }, + "name": "Geo - Network List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "65654_GEONETWORKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION", + "method": "PUT" + } + }, + "name": "IP Block List Exception", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "65653_IPBLOCKLISTEXCEPTION" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST", + "method": "PUT" + } + }, + "name": "Amex Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "65651_AMEXWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Adding EG DAST IPs", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST", + "method": "PUT" + } + }, + "name": "CarRentals Partner Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "53725_PARTNERWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Hotwire WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "9833_REPUTATIONWHITELISTHOTWI" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS", + "method": "PUT" + } + }, + "name": "ECSC-Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "44829_ECSCBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", + "elementCount": 213, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS", + "method": "PUT" + } + }, + "name": "CPI Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "49617_CPIALLOWEDIPS" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 29, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS", + "method": "PUT" + } + }, + "name": "Customer Client IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 10, + "type": "IP", + "uniqueId": "48307_CUSTOMERCLIENTIPS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 9, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL", + "method": "PUT" + } + }, + "name": "Egencia StrictWL", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "53659_EGENCIASTRICTWL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", + "elementCount": 213, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Confluence Okta Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "50276_CONFLUENCEOKTAALLOWEDIPS" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 58, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "App Strict Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "44833_APPSTRICTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 37, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST", + "method": "PUT" + } + }, + "name": "Corporate HQ Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "26371_CORPORATEHQWHITELIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 342, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST", + "method": "PUT" + } + }, + "name": "Voyager LAB Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 12, + "type": "IP", + "uniqueId": "3324_VOYAGERLABWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "List of allowed IPs for ALM GitHub Enterprise", + "elementCount": 18, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST", + "method": "PUT" + } + }, + "name": "bogus-github-whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "40196_GITHUBWHITELIST" + }, + { + "description": "The Akamai Portal Test Center is a tool that you can use to test configuration changes. To take advantage of the Test Center, you must ensure that test requests coming from the Test Center are not blocked, by whitelisting this list in your WAF policies.", + "elementCount": 12, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA", + "method": "PUT" + } + }, + "name": "Akamai Test Center (ATC) Agents", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 2, + "type": "IP", + "uniqueId": "46506_AKAMAIPORTALTESTCENTERA" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 227, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL", + "method": "PUT" + } + }, + "name": "Akamai Firewall", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "1327_AKAMAIFIREWALL" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Enterprise Solutions)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63829_REPUTATIONWHITELISTENTER" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (EGP)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63708_REPUTATIONWHITELISTEGP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST", + "method": "PUT" + } + }, + "name": "EGP Geolist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "63707_EGPGEOLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST", + "method": "PUT" + } + }, + "name": "EGP Bypasslist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63706_EGPBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST", + "method": "PUT" + } + }, + "name": "EGP Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63704_EGPWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Allow Traffic from One UI Tool", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST", + "method": "PUT" + } + }, + "name": "API_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52781_APIWHITELIST" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 75, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS", + "method": "PUT" + } + }, + "name": "Hotels Brand WAF Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "42686_HOTELSBRANDWAFBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - Offices", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "50637_WAFBYPASSWHITELISTOFFI" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 68, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS", + "method": "PUT" + } + }, + "name": "ECSC-RC Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "44830_ECSCRCBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 30, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP", + "method": "PUT" + } + }, + "name": "WAF Security File- Rate Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "62642_WAFSECURITYFILERATEBYP" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 9, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR", + "method": "PUT" + } + }, + "name": "WAF bypass IP list - Hotwire QA", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "886_WAFBYPASSIPLISTHOTWIR" + }, + { + "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", + "elementCount": 10, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR", + "method": "PUT" + } + }, + "name": "Hotels Brand - Whitelist from Custom Rule 621882", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "60322_HOTELSBRANDWHITELISTFR" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Testing the Network list automation using API and Flyte-Akamai chatbot, https://jira.hcom/browse/PLATFORM-461", + "elementCount": 18, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461", + "method": "PUT" + } + }, + "name": "test-PLATFORM-461", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 48, + "type": "IP", + "uniqueId": "50114_TESTPLATFORM461" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Negative match fro rate controls", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT", + "method": "PUT" + } + }, + "name": "Hotwire Rate Control Exceptions", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "50628_HOTWIRERATECONTROLEXCEPT" + }, + { + "description": "Gomez synthetic monitoring network", + "elementCount": 104, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS", + "method": "PUT" + } + }, + "name": "Gomez (Compuware) Agents", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 4, + "type": "IP", + "uniqueId": "1026_GOMEZCOMPUWAREAGENTS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (GCO)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "55664_REPUTATIONWHITELISTGCO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO", + "method": "PUT" + } + }, + "name": "Geo Blacklist - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "55213_GEOBLACKLISTGCO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC", + "method": "PUT" + } + }, + "name": "IP Blacklist Exception - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "55212_IPBLACKLISTEXCEPTIONGC" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Added 203.37.166.130, new origin IP for .com.au", + "elementCount": 250, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - Hopscotch", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 38, + "type": "IP", + "uniqueId": "6487_WAFBYPASSWHITELISTHOPS" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Added 72.246.0.10 & 72.246.0.22 as requested by Jim George.", + "elementCount": 143, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE", + "method": "PUT" + } + }, + "name": "Akamai Cracker 2 and Cracker 3 IPs for testing purposes", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "48308_AKAMAICRACKER2ANDCRACKE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING", + "method": "PUT" + } + }, + "name": "Akamai_Internal_Testing", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "54056_AKAMAIINTERNALTESTING" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Jenkins)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53355_REPUTATIONWHITELISTJENKI" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to bypass rate controls on Jenkins config, jenkins policy", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ", + "method": "PUT" + } + }, + "name": "Rate Control Bypass List _Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53351_RATECONTROLBYPASSLISTJ" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "Exclusion from blacklist", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS", + "method": "PUT" + } + }, + "name": "Whitelist_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53349_WHITELISTJENKINS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS", + "method": "PUT" + } + }, + "name": "GEO Blacklist_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "53348_GEOBLACKLISTJENKINS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to bypass WAF on Jenkins Policy, Jenkins config", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS", + "method": "PUT" + } + }, + "name": "WAF Bypass List_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53345_WAFBYPASSLISTJENKINS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (ERS)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53080_REPUTATIONWHITELISTERS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB", + "method": "PUT" + } + }, + "name": "Expediagroup Rate Control Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53079_EXPEDIAGROUPRATECONTROLB" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST", + "method": "PUT" + } + }, + "name": "Expediagroup GEO list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "53076_EXPEDIAGROUPGEOLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST", + "method": "PUT" + } + }, + "name": "Expediagroup White list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53075_EXPEDIAGROUPWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST", + "method": "PUT" + } + }, + "name": "Expediagroup Black list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53074_EXPEDIAGROUPBLACKLIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK", + "method": "PUT" + } + }, + "name": "API_GEOBlock", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "52783_APIGEOBLOCK" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Duo)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "52771_REPUTATIONWHITELISTDUO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO", + "method": "PUT" + } + }, + "name": "Security Bypass List - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "52768_SECURITYBYPASSLISTDUO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO", + "method": "PUT" + } + }, + "name": "Geo Blacklist - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "52767_GEOBLACKLISTDUO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU", + "method": "PUT" + } + }, + "name": "IP Blacklist Exception - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "52766_IPBLACKLISTEXCEPTIONDU" + }, + { + "elementCount": 468, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS", + "method": "PUT" + } + }, + "name": "A2 Servers", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 15, + "type": "IP", + "uniqueId": "16656_CPISERVERS" + }, + { + "elementCount": 349, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS", + "method": "PUT" + } + }, + "name": "FEO Servers", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 12, + "type": "IP", + "uniqueId": "7054_FEOSERVERS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK", + "method": "PUT" + } + }, + "name": "Egencia GEO Block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "51561_EGENCIAGEOBLOCK" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - Other", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50640_WAFBYPASSWHITELISTOTHE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - AWS NATs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50638_WAFBYPASSWHITELISTAWS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - CallCenter", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50636_WAFBYPASSWHITELISTCALL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - partner", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50635_WAFBYPASSWHITELISTPART" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "splitting up the hopscotch list for easier management", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - DC", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50634_WAFBYPASSWHITELISTDC" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 10, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST", + "method": "PUT" + } + }, + "name": "hoteis.com GEO list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "GEO", + "uniqueId": "50337_HOTEISCOMGEOLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS", + "method": "PUT" + } + }, + "name": "Confluence Okta_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50278_CONFLUENCEOKTARCWHITELIS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS", + "method": "PUT" + } + }, + "name": "Confluence Okta_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50277_CONFLUENCEOKTABYPASS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST", + "method": "PUT" + } + }, + "name": "LegacyOrbitz GEO BlackList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "49997_LEGACYORBITZBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST", + "method": "PUT" + } + }, + "name": "LegacyOrbitz Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49995_LEGACYORBITZWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST", + "method": "PUT" + } + }, + "name": "CPI_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49620_CPIRCWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS", + "method": "PUT" + } + }, + "name": "CPI_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49618_CPIBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS", + "method": "PUT" + } + }, + "name": "ADT - Rate Controls Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49186_ADTRATECONTROLSBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "ADT - Geo Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "49182_ADTGEOBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED", + "method": "PUT" + } + }, + "name": "Hotels Brand GEO List (Used by Custom Bots)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "GEO", + "uniqueId": "47882_HOTELSBRANDGEOLISTUSED" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS", + "method": "PUT" + } + }, + "name": "legacyOrbitz_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "47546_LEGACYORBITZBYPASS" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST", + "method": "PUT" + } + }, + "name": "Digital Ocean Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "47517_DIGITALOCEANWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK", + "method": "PUT" + } + }, + "name": "CarRentals Geo Block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "46790_CARRENTALSGEOBLOCK" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "EPC GEO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "45956_EPCGEOBLACKLIST" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS", + "method": "PUT" + } + }, + "name": "EPC Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "45954_EPCBYPASS" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "EPC GEO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "45953_EPCGEOBLACKLIST" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST", + "method": "PUT" + } + }, + "name": "EPC Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "45952_EPCWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (ECSC)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "44832_REPUTATIONWHITELISTECSC" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "ECSC-GEO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "44831_ECSCGEOBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST", + "method": "PUT" + } + }, + "name": "ECSC-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "44827_ECSCWHITELIST" + }, + { + "accessControlGroup": "Classic Vacations - 3-TE78Q.G83605", + "description": "Classic Vacations Whitelist for", + "elementCount": 17, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST", + "method": "PUT" + } + }, + "name": "Classic Vacations Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 6, + "type": "IP", + "uniqueId": "31075_CLASSICVACATIONSWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST", + "method": "PUT" + } + }, + "name": "Egencia Brand Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "43172_EGENCIABRANDWHITELIST" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS", + "method": "PUT" + } + }, + "name": "Hotels Brand Rate Controls Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "42688_HOTELSBRANDRATECONTROLS" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "Hotels Brand Geo Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "42687_HOTELSBRANDGEOBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS", + "method": "PUT" + } + }, + "name": "Confluence_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "42666_CONFLUENCEBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST", + "method": "PUT" + } + }, + "name": "Confluence_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "42665_CONFLUENCERCWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP", + "method": "PUT" + } + }, + "name": "BM rollout-IP", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "40730_BMROLLOUTIP" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO", + "method": "PUT" + } + }, + "name": "BM rollout-GEO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "GEO", + "uniqueId": "40731_BMROLLOUTGEO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP", + "method": "PUT" + } + }, + "name": "Not Used _3-TE78Q ION", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "40712_BMROLLOUTIP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO", + "method": "PUT" + } + }, + "name": "Not Used_3-TE78Q ION", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "GEO", + "uniqueId": "40713_BMROLLOUTGEO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "case F-CS-2759696", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE", + "method": "PUT" + } + }, + "name": "GEO-Block Hotwire", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "GEO", + "uniqueId": "40548_GEOBLOCKHOTWIRE" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Github)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "40198_REPUTATIONWHITELISTGITHU" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS", + "method": "PUT" + } + }, + "name": "Github Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "40197_GITHUBBYPASS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST", + "method": "PUT" + } + }, + "name": "TEMP Geo-Block List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "40016_TEMPGEOBLOCKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST", + "method": "PUT" + } + }, + "name": "TEMP IP White List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "40014_TEMPIPWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Expedia WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "37172_REPUTATIONWHITELISTEXPED" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST", + "method": "PUT" + } + }, + "name": "Jira_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "34616_JIRARCWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS", + "method": "PUT" + } + }, + "name": "Jira_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "34613_JIRABYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS", + "method": "PUT" + } + }, + "name": "test3", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "32383_EANRATECONTROLBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST", + "method": "PUT" + } + }, + "name": "test2", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "32378_RATECONTROLSBYPASSLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS", + "method": "PUT" + } + }, + "name": "EAN Rate Control bypass list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "32384_EANRATECONTROLBYPASSLIS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF", + "method": "PUT" + } + }, + "name": "Partner_turnoff", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "31755_PARTNERTURNOFF" + }, + { + "description": "reactivate to hide the variable. for Jira LUNADEVESC-5134", + "elementCount": 400, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS", + "method": "PUT" + } + }, + "name": "Keynote Agents", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 5, + "type": "IP", + "uniqueId": "1025_KEYNOTEAGENTS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 186, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST", + "method": "PUT" + } + }, + "name": "Call Center Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "26372_CALLCENTERWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST", + "method": "PUT" + } + }, + "name": "HomeAway IP whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "25066_HOMEAWAYIPWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK", + "method": "PUT" + } + }, + "name": "HomeAway Geo Block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "25065_HOMEAWAYGEOBLOCK" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK", + "method": "PUT" + } + }, + "name": "HomeAway IP block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "25064_IPBLOCK" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 216, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/18511_AS37963/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/18511_AS37963" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/18511_AS37963", + "method": "PUT" + } + }, + "name": "AS37963", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "18511_AS37963" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS", + "method": "PUT" + } + }, + "name": "Classic vacations waf bypass list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "17403_CLASSICVACATIONSWAFBYPAS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST", + "method": "PUT" + } + }, + "name": "Classic vacations whitelist exception to network control", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "17402_CLASSICVACATIONSWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK", + "method": "PUT" + } + }, + "name": "Classic vacations Geo Black list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "17401_CLASSICVACATIONSGEOBLACK" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "EAN Geo Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "16865_EANGEOBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST", + "method": "PUT" + } + }, + "name": "EAN IP Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "16863_EANIPWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Egencia WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "9818_REPUTATIONWHITELISTEGENC" + }, + { + "elementCount": 27, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST", + "method": "PUT" + } + }, + "name": "International Traffic in Arms Regulations (ITAR) List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 9, + "type": "GEO", + "uniqueId": "968_ITARCOUNTRYLIST" + }, + { + "elementCount": 22, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST", + "method": "PUT" + } + }, + "name": "International Emergency Economic Powers Act (IEEPA) List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 3, + "type": "GEO", + "uniqueId": "969_IEEPACOUNTRYLIST" + }, + { + "elementCount": 18, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST", + "method": "PUT" + } + }, + "name": "Office of Foreign Asset Control (OFAC) List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 4, + "type": "GEO", + "uniqueId": "967_OFACCOUNTRYLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST", + "method": "PUT" + } + }, + "name": "Reputation Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "6986_REPUTATIONWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 4113, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC", + "method": "PUT" + } + }, + "name": "Tor Exit Nodes - Static", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "5627_TOREXITNODESSTATIC" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS", + "method": "PUT" + } + }, + "name": "test access", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "3453_TESTACCESS" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI", + "method": "PUT" + } + }, + "name": "Voyager Call Center Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "2275_VOYAGERCALLCENTERWHITELI" + } + ] + } +] \ No newline at end of file diff --git a/pkg/providers/networklists/testdata/TestResNetworkList/match_by_id.tf b/pkg/providers/networklists/testdata/TestResNetworkList/match_by_id.tf new file mode 100644 index 000000000..feac1e5fb --- /dev/null +++ b/pkg/providers/networklists/testdata/TestResNetworkList/match_by_id.tf @@ -0,0 +1,14 @@ +provider "akamai" { + edgerc = "~/.edgerc_network" +} + + +resource "akamai_networklist_network_list" "test" { + name = "Martin Network List" + type = "IP" + description = "Notes about this network list" + + list = ["10.1.8.23","10.3.5.67"] + mode = "REPLACE" + } + diff --git a/pkg/providers/networklists/testdata/TestResNetworkList/update_by_id.tf b/pkg/providers/networklists/testdata/TestResNetworkList/update_by_id.tf new file mode 100644 index 000000000..8b89d2a0e --- /dev/null +++ b/pkg/providers/networklists/testdata/TestResNetworkList/update_by_id.tf @@ -0,0 +1,14 @@ +provider "akamai" { + edgerc = "~/.edgerc_network" +} + + +resource "akamai_networklist_network_list" "test" { + name = "Martin Network List" + type = "IP" + description = "Notes about this network list" + + list = ["10.1.8.23","10.3.5.67","10.1.10.90"] + mode = "REPLACE" + } + diff --git a/pkg/providers/networklists/testdata/TestResNetworkListDescription/NetworkListDescription.json b/pkg/providers/networklists/testdata/TestResNetworkListDescription/NetworkListDescription.json new file mode 100644 index 000000000..65de94ec1 --- /dev/null +++ b/pkg/providers/networklists/testdata/TestResNetworkListDescription/NetworkListDescription.json @@ -0,0 +1,8541 @@ +[ + { + "links": { + "create": { + "href": "/network-list/v2/network-lists", + "method": "POST" + } + }, + "networkLists": [ + { + "elementCount": 1716, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES", + "method": "PUT" + } + }, + "name": "Tor Akamai Network List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 43422, + "type": "IP", + "uniqueId": "365_AKAMAITOREXITNODES" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "https://confluence.expedia.biz/display/EITCOLLAB/GitHub+EG+IP+Whitelist", + "elementCount": 915, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST", + "method": "PUT" + } + }, + "name": "Github WhiteList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 293, + "type": "IP", + "uniqueId": "41750_GITHUBWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 126, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST", + "method": "PUT" + } + }, + "name": "jenkinslab whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 21, + "type": "IP", + "uniqueId": "55687_JENKINSLABWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Lab+IP+Whitelist", + "elementCount": 701, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST", + "method": "PUT" + } + }, + "name": "artylab-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 227, + "type": "IP", + "uniqueId": "40996_ARTYLABWHITELIST" + }, + { + "accessControlGroup": "GCO - 3-TE78Q.G150073", + "description": "Voyager Training SW", + "elementCount": 526, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW", + "method": "PUT" + } + }, + "name": "Voyager Training SW", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "75597_VOYAGUERTRAININGSW" + }, + { + "elementCount": 523, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU", + "method": "PUT" + } + }, + "name": "Ec2 Akamai Network List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 223, + "type": "IP", + "uniqueId": "1024_AMAZONELASTICCOMPUTECLOU" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "new office in London Victoria for Vrbo", + "elementCount": 355, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Jira Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 123, + "type": "IP", + "uniqueId": "34612_JIRAALLOWEDIPS" + }, + { + "elementCount": 3139, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT", + "method": "PUT" + } + }, + "name": "Azure IP range cloud services", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 426, + "type": "IP", + "uniqueId": "1283_MICROSOFTWINDOWSAZUREDAT" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "Whitelisting one more Akamai IP for testing", + "elementCount": 88, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST", + "method": "PUT" + } + }, + "name": "artylab-test-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 28, + "type": "IP", + "uniqueId": "40998_ARTYLABTESTWHITELIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 24, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Egencia Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "3379_EGENCIABRANDBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Secure+IP+Whitelist", + "elementCount": 331, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST", + "method": "PUT" + } + }, + "name": "artyprod-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 129, + "type": "IP", + "uniqueId": "40997_ARTYPRODWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to allow traffic on jenkinstest.expedia.biz", + "elementCount": 30, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST", + "method": "PUT" + } + }, + "name": "JenkinsTest Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 15, + "type": "IP", + "uniqueId": "53434_JENKINSTESTWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for fisheye.expedia.biz and fisheyetest.expedia.biz", + "elementCount": 135, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST", + "method": "PUT" + } + }, + "name": "Fisheye Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 10, + "type": "IP", + "uniqueId": "68757_FISHEYEWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for sonar.expedia.biz and sonartest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/Sonar+EG+IP+Whitelist", + "elementCount": 173, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST", + "method": "PUT" + } + }, + "name": "Sonar Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 23, + "type": "IP", + "uniqueId": "68755_SONARWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for testrail.expedia.biz and testrailtest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/TestRail+EG+IP+Whitelist", + "elementCount": 133, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST", + "method": "PUT" + } + }, + "name": "Testrail Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "68758_TESTRAILWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 62, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST", + "method": "PUT" + } + }, + "name": "alm-blog-whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 15, + "type": "IP", + "uniqueId": "67898_ALMBLOGWHITELIST" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "description": "Added 187.207.181.251, unwanted IP on hoteles.volaris.com\nAdded 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24 - Erik Mattison (ERS - Sec Eng)", + "elementCount": 3969, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Hotels Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 129, + "type": "IP", + "uniqueId": "1706_HOTELSBRANDBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "description": "F-CS-4083079", + "elementCount": 44, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST", + "method": "PUT" + } + }, + "name": "Egencia Sisense Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "75756_EGENCIASISENSEWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS", + "method": "PUT" + } + }, + "name": "Egencia Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "51562_EGENCIABYPASS" + }, + { + "elementCount": 2767, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS", + "method": "PUT" + } + }, + "name": "Image Manager Servers", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 63, + "type": "IP", + "uniqueId": "14121_IMAGEMANAGERSERVERS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 20, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST", + "method": "PUT" + } + }, + "name": "artyprod-test-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 14, + "type": "IP", + "uniqueId": "40999_ARTYPRODTESTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Lydia - Removing IP 216.251.120.10", + "elementCount": 465, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO", + "method": "PUT" + } + }, + "name": "Security Bypass List - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "55214_SECURITYBYPASSLISTGCO" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "description": "ExpediaPartnerCentral IP Blacklist - Added 5 entries per SOC (Erik M, Sec Eng)", + "elementCount": 50, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST", + "method": "PUT" + } + }, + "name": "EPC Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 18, + "type": "IP", + "uniqueId": "32620_EPCBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "DO NOT USE!!! Testing list for automation - see Erik Mattison", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/74967_TESTLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/74967_TESTLIST", + "method": "PUT" + } + }, + "name": "Test-list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "74967_TESTLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "The whitelist for githubtest.expedia.biz", + "elementCount": 34, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST", + "method": "PUT" + } + }, + "name": "GitHubTest Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 17, + "type": "IP", + "uniqueId": "45358_GITHUBTESTWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 22, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB", + "method": "PUT" + } + }, + "name": "ChefLab Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 6, + "type": "IP", + "uniqueId": "68112_CHEFLAB" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 47, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS", + "method": "PUT" + } + }, + "name": "CarRentals Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 7, + "type": "IP", + "uniqueId": "46789_CARRENTALSBYPASS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to allow traffic on jenkinsdecaf.expedia.biz", + "elementCount": 25, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST", + "method": "PUT" + } + }, + "name": "JenkinsDecaf Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "53433_JENKINSDECAFWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS", + "method": "PUT" + } + }, + "name": "Expediagroup Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "53077_EXPEDIAGROUPBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Duplicating ADYEN addresses to this list", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST", + "method": "PUT" + } + }, + "name": "Rate Controls Bypass List - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52769_RATECONTROLSBYPASSLIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Adding Non Prod VPCs", + "elementCount": 74, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/48306_ODSIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/48306_ODSIPS", + "method": "PUT" + } + }, + "name": "ODS IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 14, + "type": "IP", + "uniqueId": "48306_ODSIPS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP Whitelist for chefdecaf.expedia.biz, chefautodecaf.expedia.biz, chefsupermarketdecaf.expedia.biz", + "elementCount": 20, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF", + "method": "PUT" + } + }, + "name": "Chefdecaf Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "68115_CHEFDECAF" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP Whitelist for chefcorp.expedia.biz, chefautocorp.expedia.biz, chefsupermarketcorp.expedia.biz", + "elementCount": 54, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP", + "method": "PUT" + } + }, + "name": "ChefCorp Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "68113_CHEFCORP" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS", + "method": "PUT" + } + }, + "name": "Hotwire WAF Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "68750_HOTWIREWAFBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "F-CS-3996326", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO", + "method": "PUT" + } + }, + "name": "Strict Whitelist – GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "72997_STRICTWHITELISTGCO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 9, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL", + "method": "PUT" + } + }, + "name": "vap-e2e-prod SWL", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "72924_VAPE2EPRODSWL" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "description": "new office in London Victoria for Vrbo", + "elementCount": 73, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST", + "method": "PUT" + } + }, + "name": "Lodging Internal Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 16, + "type": "IP", + "uniqueId": "45955_LODGINGINTERNALWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "External IPs allowed to access JIRA. See https://confluence.expedia.biz/display/JIRA/JIRA+IP+Whitelisting", + "elementCount": 304, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Vrbojiratest Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69322_VRBOJIRATESTALLOWEDIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 56, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST", + "method": "PUT" + } + }, + "name": "alm-blogtest-whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "67897_ALMBLOGTESTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 71, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS", + "method": "PUT" + } + }, + "name": "Expedia Group Public IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "65037_EXPEDIAGROUPPUBLICIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "List of EG owned/trusted IPs", + "elementCount": 67, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS", + "method": "PUT" + } + }, + "name": "EG Trusted IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69033_EGTRUSTEDIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "External IPs allowed to access Confluence. See https://confluence.expedia.biz/display/CON/Confluence+IP+Whitelisting", + "elementCount": 218, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Confluence Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 38, + "type": "IP", + "uniqueId": "42664_CONFLUENCEALLOWEDIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Added 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24, 103.72.8.217- Erik Mattison (ERS - Sec Eng)", + "elementCount": 24, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST", + "method": "PUT" + } + }, + "name": "Expedia Temporary Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "5703_EXPEDIATEMPORARYBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL", + "method": "PUT" + } + }, + "name": "Expedia Group Global Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "71830_EXPEDIAGROUPGLOBALBLACKL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Deny-By-IP, Apple Verification (STGR-2439), AWS Egress (PROD-5148, PROD-5319), Vitality (PROD-5818), Bangalore Office (PSUP-34217)", + "elementCount": 835, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST", + "method": "PUT" + } + }, + "name": "Staging Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 16, + "type": "IP", + "uniqueId": "64150_VITALITYIPLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS", + "method": "PUT" + } + }, + "name": "Classic vacations Black list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "17400_CLASSICVACATIONSBLACKLIS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "description": "Blocking 49.86.182.23 for scanning", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST", + "method": "PUT" + } + }, + "name": "TEMP IP Black List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "40015_TEMPIPBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI", + "method": "PUT" + } + }, + "name": "Voyager Call Center Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "2276_VOYAGERCALLCENTERBLACKLI" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST", + "method": "PUT" + } + }, + "name": "Voyager LAB Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "3402_VOYAGERLABBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 7, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST", + "method": "PUT" + } + }, + "name": "Hotwire Brand QA Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "4308_HOTWIREBRANDQABLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 7, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Venere Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "3380_VENEREBRANDBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 28, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL", + "method": "PUT" + } + }, + "name": "Voyager PROD Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "5624_VOYAGERCALLCENTERBLACKL" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 137, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Travelocity Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 19, + "type": "IP", + "uniqueId": "2643_TRAVELOCITYBRANDBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 19, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Via Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 6, + "type": "IP", + "uniqueId": "1538_VIABRANDBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 13, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST", + "method": "PUT" + } + }, + "name": "EAN IP Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "16864_EANIPBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST", + "method": "PUT" + } + }, + "name": "ECSC-Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "44828_ECSCBLACKLIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST", + "method": "PUT" + } + }, + "name": "CarRentals Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "46787_CARRENTALSBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST", + "method": "PUT" + } + }, + "name": "ADT - IP Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "49181_ADTIPBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST", + "method": "PUT" + } + }, + "name": "LegacyOrbitz BlackList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "49996_LEGACYORBITZBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO", + "method": "PUT" + } + }, + "name": "IP Blacklist - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52764_IPBLACKLISTDUO" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST", + "method": "PUT" + } + }, + "name": "API_Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52782_APIBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS", + "method": "PUT" + } + }, + "name": "Blacklist_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "53347_BLACKLISTJENKINS" + }, + { + "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST", + "method": "PUT" + } + }, + "name": "GCO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "53726_GCOBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO", + "method": "PUT" + } + }, + "name": "IP Blacklist - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "55211_IPBLACKLISTGCO" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 15625, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Expedia Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 71, + "type": "IP", + "uniqueId": "1933_EXPEDIABRANDBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "description": "Adding 64.15.129.112 as per approval from Narainder.", + "elementCount": 29, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Hotwire Brand Prod Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "1883_HOTWIREBRANDBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST", + "method": "PUT" + } + }, + "name": "EGP Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "63705_EGPBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST", + "method": "PUT" + } + }, + "name": "WorldLine Prod Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69602_WORLDLINEPRODWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "195.35.91.69195.35.90.70", + "elementCount": 8, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST", + "method": "PUT" + } + }, + "name": "WorldPay Prod Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "69603_WORLDPAYPRODWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP Whitelist for chefsecure.expedia.biz, chefautosecure.expedia.biz, chefsupermarketsecure.expedia.biz", + "elementCount": 28, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE", + "method": "PUT" + } + }, + "name": "ChefSecure Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "68114_CHEFSECURE" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 319, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE", + "method": "PUT" + } + }, + "name": "Hotels Brand Blacklist Exceptions", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "42684_HOTELSBRANDBLACKLISTEXCE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 323, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "ADT StrictWhitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "49178_ADTSTRICTWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "VPN IP to Whitelist", + "elementCount": 12, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST", + "method": "PUT" + } + }, + "name": "CarRentals Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 7, + "type": "IP", + "uniqueId": "46788_CARRENTALSWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "204.14.232.0/21", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "Placeholder", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "70704_FSPSTRICTWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "description": "204.14.232.0/21", + "elementCount": 27, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "FSP Strict Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "70705_FSPSTRICTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 27, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS", + "method": "PUT" + } + }, + "name": "SalesForce IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "70568_SALESFORCEIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "PROD-5818", + "elementCount": 49, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP", + "method": "PUT" + } + }, + "name": "Vitality-IP-List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "65875_ALLOWBYIP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Iran APT IOC IPs addition to security controls\nJira ID - ERSST-2128", + "elementCount": 17, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS", + "method": "PUT" + } + }, + "name": "Iran APT IOC IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "70327_IRANAPTIOCIPS" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "description": "Added as requested by Atit: Expedia Partner JIRA: (AK-88) Add Qualys CIDR to EAN IP Bypass List\n\nAdded Deloitte IPs as requested by Atit. AK-104\n\nAdded Rapid7 IPs per Atit. Ak-171", + "elementCount": 13, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST", + "method": "PUT" + } + }, + "name": "EAN IP Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 10, + "type": "IP", + "uniqueId": "16862_EANIPBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST", + "method": "PUT" + } + }, + "name": "Adyen Prod Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69601_ADYENPRODWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST", + "method": "PUT" + } + }, + "name": "Rate Controls Bypass List - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "55215_RATECONTROLSBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST", + "method": "PUT" + } + }, + "name": "WorldPay Test Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "68764_WORLDPAYWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST", + "method": "PUT" + } + }, + "name": "WorldLine Test Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "68765_WORLDLINEWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 10, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68762_ADYEN/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68762_ADYEN" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68762_ADYEN", + "method": "PUT" + } + }, + "name": "Adyen Test Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "68762_ADYEN" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST", + "method": "PUT" + } + }, + "name": "TEMP Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "40021_TEMPBYPASSLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS", + "method": "PUT" + } + }, + "name": "Vrbojiratest_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "69324_VRBOJIRATESTBYPASS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST", + "method": "PUT" + } + }, + "name": "Vrbojiratest_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "69323_VRBOJIRATESTRCWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 16, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS", + "method": "PUT" + } + }, + "name": "BEX Rate Control Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "55919_BEXRATECONTROLBYPASS" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "description": "HAK-86, PROD-6167", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS", + "method": "PUT" + } + }, + "name": "AWS Egress IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "68043_AWSEGRESSIPS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "List of IPs allowed to access https://cheftest.expedia.biz", + "elementCount": 13, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST", + "method": "PUT" + } + }, + "name": "ChefTest Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "68111_CHEFTEST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for jenkinssecure.expedia.biz", + "elementCount": 39, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST", + "method": "PUT" + } + }, + "name": "jenkinssecure whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "55686_JENKINSSECUREWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (CarRentals)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "46792_REPUTATIONWHITELISTCARRE" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Adding New Relic San Francisco EndPoints for Synthetics", + "elementCount": 11, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP", + "method": "PUT" + } + }, + "name": "CarRentals Rate Control Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "46791_CARRENTALSRATECONTROLBYP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "F-CS-3817120\nES_Tuning - Rate Control Recommendations\nBy Akamai", + "elementCount": 14, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST", + "method": "PUT" + } + }, + "name": "Rate Controls Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "68495_RATECONTROLSWHITELIST" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (EAN WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "68344_REPUTATIONWHITELISTEANW" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST", + "method": "PUT" + } + }, + "name": "API_BypassList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "52784_APIBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES", + "method": "PUT" + } + }, + "name": "eIT Services", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "67900_EITSERVICES" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 16, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Hotels)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 7, + "type": "IP", + "uniqueId": "9606_REPUTATIONWHITELISTHOTEL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP", + "method": "PUT" + } + }, + "name": "WAF Bypass for \"DENY-By-IP-Policy\"", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "66858_WAFBYPASSFORDENYBYIP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "PROD-5839, HAK-81\nTarget: apihotels.net", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST", + "method": "PUT" + } + }, + "name": "API Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "65265_AWSBAMBOOWHITELIST" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (eIT Extranet Services)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "65827_REPUTATIONWHITELISTEITE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 20, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST", + "method": "PUT" + } + }, + "name": "ADT - WAF Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "49185_ADTWAFBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST", + "method": "PUT" + } + }, + "name": "Geo - Network List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "65654_GEONETWORKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION", + "method": "PUT" + } + }, + "name": "IP Block List Exception", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "65653_IPBLOCKLISTEXCEPTION" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST", + "method": "PUT" + } + }, + "name": "Amex Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "65651_AMEXWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Adding EG DAST IPs", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST", + "method": "PUT" + } + }, + "name": "CarRentals Partner Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "53725_PARTNERWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Hotwire WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "9833_REPUTATIONWHITELISTHOTWI" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS", + "method": "PUT" + } + }, + "name": "ECSC-Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "44829_ECSCBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", + "elementCount": 213, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS", + "method": "PUT" + } + }, + "name": "CPI Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "49617_CPIALLOWEDIPS" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 29, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS", + "method": "PUT" + } + }, + "name": "Customer Client IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 10, + "type": "IP", + "uniqueId": "48307_CUSTOMERCLIENTIPS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 9, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL", + "method": "PUT" + } + }, + "name": "Egencia StrictWL", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "53659_EGENCIASTRICTWL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", + "elementCount": 213, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Confluence Okta Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "50276_CONFLUENCEOKTAALLOWEDIPS" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 58, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "App Strict Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "44833_APPSTRICTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 37, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST", + "method": "PUT" + } + }, + "name": "Corporate HQ Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "26371_CORPORATEHQWHITELIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 342, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST", + "method": "PUT" + } + }, + "name": "Voyager LAB Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 12, + "type": "IP", + "uniqueId": "3324_VOYAGERLABWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "List of allowed IPs for ALM GitHub Enterprise", + "elementCount": 18, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST", + "method": "PUT" + } + }, + "name": "bogus-github-whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "40196_GITHUBWHITELIST" + }, + { + "description": "The Akamai Portal Test Center is a tool that you can use to test configuration changes. To take advantage of the Test Center, you must ensure that test requests coming from the Test Center are not blocked, by whitelisting this list in your WAF policies.", + "elementCount": 12, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA", + "method": "PUT" + } + }, + "name": "Akamai Test Center (ATC) Agents", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 2, + "type": "IP", + "uniqueId": "46506_AKAMAIPORTALTESTCENTERA" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 227, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL", + "method": "PUT" + } + }, + "name": "Akamai Firewall", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "1327_AKAMAIFIREWALL" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Enterprise Solutions)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63829_REPUTATIONWHITELISTENTER" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (EGP)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63708_REPUTATIONWHITELISTEGP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST", + "method": "PUT" + } + }, + "name": "EGP Geolist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "63707_EGPGEOLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST", + "method": "PUT" + } + }, + "name": "EGP Bypasslist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63706_EGPBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST", + "method": "PUT" + } + }, + "name": "EGP Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63704_EGPWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Allow Traffic from One UI Tool", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST", + "method": "PUT" + } + }, + "name": "API_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52781_APIWHITELIST" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 75, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS", + "method": "PUT" + } + }, + "name": "Hotels Brand WAF Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "42686_HOTELSBRANDWAFBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - Offices", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "50637_WAFBYPASSWHITELISTOFFI" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 68, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS", + "method": "PUT" + } + }, + "name": "ECSC-RC Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "44830_ECSCRCBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 30, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP", + "method": "PUT" + } + }, + "name": "WAF Security File- Rate Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "62642_WAFSECURITYFILERATEBYP" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 9, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR", + "method": "PUT" + } + }, + "name": "WAF bypass IP list - Hotwire QA", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "886_WAFBYPASSIPLISTHOTWIR" + }, + { + "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", + "elementCount": 10, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR", + "method": "PUT" + } + }, + "name": "Hotels Brand - Whitelist from Custom Rule 621882", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "60322_HOTELSBRANDWHITELISTFR" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Testing the Network list automation using API and Flyte-Akamai chatbot, https://jira.hcom/browse/PLATFORM-461", + "elementCount": 18, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461", + "method": "PUT" + } + }, + "name": "test-PLATFORM-461", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 48, + "type": "IP", + "uniqueId": "50114_TESTPLATFORM461" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Negative match fro rate controls", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT", + "method": "PUT" + } + }, + "name": "Hotwire Rate Control Exceptions", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "50628_HOTWIRERATECONTROLEXCEPT" + }, + { + "description": "Gomez synthetic monitoring network", + "elementCount": 104, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS", + "method": "PUT" + } + }, + "name": "Gomez (Compuware) Agents", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 4, + "type": "IP", + "uniqueId": "1026_GOMEZCOMPUWAREAGENTS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (GCO)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "55664_REPUTATIONWHITELISTGCO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO", + "method": "PUT" + } + }, + "name": "Geo Blacklist - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "55213_GEOBLACKLISTGCO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC", + "method": "PUT" + } + }, + "name": "IP Blacklist Exception - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "55212_IPBLACKLISTEXCEPTIONGC" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Added 203.37.166.130, new origin IP for .com.au", + "elementCount": 250, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - Hopscotch", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 38, + "type": "IP", + "uniqueId": "6487_WAFBYPASSWHITELISTHOPS" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Added 72.246.0.10 & 72.246.0.22 as requested by Jim George.", + "elementCount": 143, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE", + "method": "PUT" + } + }, + "name": "Akamai Cracker 2 and Cracker 3 IPs for testing purposes", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "48308_AKAMAICRACKER2ANDCRACKE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING", + "method": "PUT" + } + }, + "name": "Akamai_Internal_Testing", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "54056_AKAMAIINTERNALTESTING" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Jenkins)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53355_REPUTATIONWHITELISTJENKI" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to bypass rate controls on Jenkins config, jenkins policy", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ", + "method": "PUT" + } + }, + "name": "Rate Control Bypass List _Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53351_RATECONTROLBYPASSLISTJ" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "Exclusion from blacklist", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS", + "method": "PUT" + } + }, + "name": "Whitelist_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53349_WHITELISTJENKINS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS", + "method": "PUT" + } + }, + "name": "GEO Blacklist_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "53348_GEOBLACKLISTJENKINS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to bypass WAF on Jenkins Policy, Jenkins config", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS", + "method": "PUT" + } + }, + "name": "WAF Bypass List_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53345_WAFBYPASSLISTJENKINS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (ERS)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53080_REPUTATIONWHITELISTERS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB", + "method": "PUT" + } + }, + "name": "Expediagroup Rate Control Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53079_EXPEDIAGROUPRATECONTROLB" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST", + "method": "PUT" + } + }, + "name": "Expediagroup GEO list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "53076_EXPEDIAGROUPGEOLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST", + "method": "PUT" + } + }, + "name": "Expediagroup White list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53075_EXPEDIAGROUPWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST", + "method": "PUT" + } + }, + "name": "Expediagroup Black list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53074_EXPEDIAGROUPBLACKLIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK", + "method": "PUT" + } + }, + "name": "API_GEOBlock", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "52783_APIGEOBLOCK" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Duo)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "52771_REPUTATIONWHITELISTDUO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO", + "method": "PUT" + } + }, + "name": "Security Bypass List - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "52768_SECURITYBYPASSLISTDUO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO", + "method": "PUT" + } + }, + "name": "Geo Blacklist - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "52767_GEOBLACKLISTDUO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU", + "method": "PUT" + } + }, + "name": "IP Blacklist Exception - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "52766_IPBLACKLISTEXCEPTIONDU" + }, + { + "elementCount": 468, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS", + "method": "PUT" + } + }, + "name": "A2 Servers", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 15, + "type": "IP", + "uniqueId": "16656_CPISERVERS" + }, + { + "elementCount": 349, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS", + "method": "PUT" + } + }, + "name": "FEO Servers", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 12, + "type": "IP", + "uniqueId": "7054_FEOSERVERS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK", + "method": "PUT" + } + }, + "name": "Egencia GEO Block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "51561_EGENCIAGEOBLOCK" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - Other", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50640_WAFBYPASSWHITELISTOTHE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - AWS NATs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50638_WAFBYPASSWHITELISTAWS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - CallCenter", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50636_WAFBYPASSWHITELISTCALL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - partner", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50635_WAFBYPASSWHITELISTPART" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "splitting up the hopscotch list for easier management", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - DC", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50634_WAFBYPASSWHITELISTDC" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 10, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST", + "method": "PUT" + } + }, + "name": "hoteis.com GEO list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "GEO", + "uniqueId": "50337_HOTEISCOMGEOLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS", + "method": "PUT" + } + }, + "name": "Confluence Okta_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50278_CONFLUENCEOKTARCWHITELIS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS", + "method": "PUT" + } + }, + "name": "Confluence Okta_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50277_CONFLUENCEOKTABYPASS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST", + "method": "PUT" + } + }, + "name": "LegacyOrbitz GEO BlackList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "49997_LEGACYORBITZBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST", + "method": "PUT" + } + }, + "name": "LegacyOrbitz Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49995_LEGACYORBITZWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST", + "method": "PUT" + } + }, + "name": "CPI_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49620_CPIRCWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS", + "method": "PUT" + } + }, + "name": "CPI_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49618_CPIBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS", + "method": "PUT" + } + }, + "name": "ADT - Rate Controls Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49186_ADTRATECONTROLSBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "ADT - Geo Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "49182_ADTGEOBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED", + "method": "PUT" + } + }, + "name": "Hotels Brand GEO List (Used by Custom Bots)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "GEO", + "uniqueId": "47882_HOTELSBRANDGEOLISTUSED" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS", + "method": "PUT" + } + }, + "name": "legacyOrbitz_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "47546_LEGACYORBITZBYPASS" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST", + "method": "PUT" + } + }, + "name": "Digital Ocean Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "47517_DIGITALOCEANWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK", + "method": "PUT" + } + }, + "name": "CarRentals Geo Block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "46790_CARRENTALSGEOBLOCK" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "EPC GEO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "45956_EPCGEOBLACKLIST" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS", + "method": "PUT" + } + }, + "name": "EPC Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "45954_EPCBYPASS" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "EPC GEO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "45953_EPCGEOBLACKLIST" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST", + "method": "PUT" + } + }, + "name": "EPC Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "45952_EPCWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (ECSC)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "44832_REPUTATIONWHITELISTECSC" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "ECSC-GEO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "44831_ECSCGEOBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST", + "method": "PUT" + } + }, + "name": "ECSC-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "44827_ECSCWHITELIST" + }, + { + "accessControlGroup": "Classic Vacations - 3-TE78Q.G83605", + "description": "Classic Vacations Whitelist for", + "elementCount": 17, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST", + "method": "PUT" + } + }, + "name": "Classic Vacations Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 6, + "type": "IP", + "uniqueId": "31075_CLASSICVACATIONSWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST", + "method": "PUT" + } + }, + "name": "Egencia Brand Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "43172_EGENCIABRANDWHITELIST" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS", + "method": "PUT" + } + }, + "name": "Hotels Brand Rate Controls Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "42688_HOTELSBRANDRATECONTROLS" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "Hotels Brand Geo Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "42687_HOTELSBRANDGEOBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS", + "method": "PUT" + } + }, + "name": "Confluence_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "42666_CONFLUENCEBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST", + "method": "PUT" + } + }, + "name": "Confluence_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "42665_CONFLUENCERCWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP", + "method": "PUT" + } + }, + "name": "BM rollout-IP", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "40730_BMROLLOUTIP" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO", + "method": "PUT" + } + }, + "name": "BM rollout-GEO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "GEO", + "uniqueId": "40731_BMROLLOUTGEO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP", + "method": "PUT" + } + }, + "name": "Not Used _3-TE78Q ION", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "40712_BMROLLOUTIP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO", + "method": "PUT" + } + }, + "name": "Not Used_3-TE78Q ION", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "GEO", + "uniqueId": "40713_BMROLLOUTGEO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "case F-CS-2759696", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE", + "method": "PUT" + } + }, + "name": "GEO-Block Hotwire", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "GEO", + "uniqueId": "40548_GEOBLOCKHOTWIRE" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Github)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "40198_REPUTATIONWHITELISTGITHU" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS", + "method": "PUT" + } + }, + "name": "Github Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "40197_GITHUBBYPASS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST", + "method": "PUT" + } + }, + "name": "TEMP Geo-Block List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "40016_TEMPGEOBLOCKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST", + "method": "PUT" + } + }, + "name": "TEMP IP White List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "40014_TEMPIPWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Expedia WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "37172_REPUTATIONWHITELISTEXPED" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST", + "method": "PUT" + } + }, + "name": "Jira_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "34616_JIRARCWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS", + "method": "PUT" + } + }, + "name": "Jira_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "34613_JIRABYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS", + "method": "PUT" + } + }, + "name": "test3", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "32383_EANRATECONTROLBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST", + "method": "PUT" + } + }, + "name": "test2", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "32378_RATECONTROLSBYPASSLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS", + "method": "PUT" + } + }, + "name": "EAN Rate Control bypass list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "32384_EANRATECONTROLBYPASSLIS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF", + "method": "PUT" + } + }, + "name": "Partner_turnoff", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "31755_PARTNERTURNOFF" + }, + { + "description": "reactivate to hide the variable. for Jira LUNADEVESC-5134", + "elementCount": 400, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS", + "method": "PUT" + } + }, + "name": "Keynote Agents", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 5, + "type": "IP", + "uniqueId": "1025_KEYNOTEAGENTS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 186, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST", + "method": "PUT" + } + }, + "name": "Call Center Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "26372_CALLCENTERWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST", + "method": "PUT" + } + }, + "name": "HomeAway IP whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "25066_HOMEAWAYIPWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK", + "method": "PUT" + } + }, + "name": "HomeAway Geo Block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "25065_HOMEAWAYGEOBLOCK" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK", + "method": "PUT" + } + }, + "name": "HomeAway IP block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "25064_IPBLOCK" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 216, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/18511_AS37963/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/18511_AS37963" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/18511_AS37963", + "method": "PUT" + } + }, + "name": "AS37963", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "18511_AS37963" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS", + "method": "PUT" + } + }, + "name": "Classic vacations waf bypass list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "17403_CLASSICVACATIONSWAFBYPAS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST", + "method": "PUT" + } + }, + "name": "Classic vacations whitelist exception to network control", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "17402_CLASSICVACATIONSWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK", + "method": "PUT" + } + }, + "name": "Classic vacations Geo Black list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "17401_CLASSICVACATIONSGEOBLACK" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "EAN Geo Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "16865_EANGEOBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST", + "method": "PUT" + } + }, + "name": "EAN IP Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "16863_EANIPWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Egencia WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "9818_REPUTATIONWHITELISTEGENC" + }, + { + "elementCount": 27, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST", + "method": "PUT" + } + }, + "name": "International Traffic in Arms Regulations (ITAR) List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 9, + "type": "GEO", + "uniqueId": "968_ITARCOUNTRYLIST" + }, + { + "elementCount": 22, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST", + "method": "PUT" + } + }, + "name": "International Emergency Economic Powers Act (IEEPA) List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 3, + "type": "GEO", + "uniqueId": "969_IEEPACOUNTRYLIST" + }, + { + "elementCount": 18, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST", + "method": "PUT" + } + }, + "name": "Office of Foreign Asset Control (OFAC) List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 4, + "type": "GEO", + "uniqueId": "967_OFACCOUNTRYLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST", + "method": "PUT" + } + }, + "name": "Reputation Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "6986_REPUTATIONWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 4113, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC", + "method": "PUT" + } + }, + "name": "Tor Exit Nodes - Static", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "5627_TOREXITNODESSTATIC" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS", + "method": "PUT" + } + }, + "name": "test access", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "3453_TESTACCESS" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI", + "method": "PUT" + } + }, + "name": "Voyager Call Center Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "2275_VOYAGERCALLCENTERWHITELI" + } + ] + } +] \ No newline at end of file diff --git a/pkg/providers/networklists/testdata/TestResNetworkListDescription/match_by_id.tf b/pkg/providers/networklists/testdata/TestResNetworkListDescription/match_by_id.tf new file mode 100644 index 000000000..2c9d8fa9d --- /dev/null +++ b/pkg/providers/networklists/testdata/TestResNetworkListDescription/match_by_id.tf @@ -0,0 +1,11 @@ +provider "akamai" { + edgerc = "~/.edgerc_network" +} + + +resource "akamai_networklist_network_list_description" "test" { + uniqueid = "79536_MARTINNETWORKLIST" + name = "Martin Network List" + description = "Notes about this network list" + } + diff --git a/pkg/providers/networklists/testdata/TestResNetworkListSubscription/NetworkListSubscription.json b/pkg/providers/networklists/testdata/TestResNetworkListSubscription/NetworkListSubscription.json new file mode 100644 index 000000000..65de94ec1 --- /dev/null +++ b/pkg/providers/networklists/testdata/TestResNetworkListSubscription/NetworkListSubscription.json @@ -0,0 +1,8541 @@ +[ + { + "links": { + "create": { + "href": "/network-list/v2/network-lists", + "method": "POST" + } + }, + "networkLists": [ + { + "elementCount": 1716, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES", + "method": "PUT" + } + }, + "name": "Tor Akamai Network List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 43422, + "type": "IP", + "uniqueId": "365_AKAMAITOREXITNODES" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "https://confluence.expedia.biz/display/EITCOLLAB/GitHub+EG+IP+Whitelist", + "elementCount": 915, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST", + "method": "PUT" + } + }, + "name": "Github WhiteList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 293, + "type": "IP", + "uniqueId": "41750_GITHUBWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 126, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST", + "method": "PUT" + } + }, + "name": "jenkinslab whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 21, + "type": "IP", + "uniqueId": "55687_JENKINSLABWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Lab+IP+Whitelist", + "elementCount": 701, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST", + "method": "PUT" + } + }, + "name": "artylab-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 227, + "type": "IP", + "uniqueId": "40996_ARTYLABWHITELIST" + }, + { + "accessControlGroup": "GCO - 3-TE78Q.G150073", + "description": "Voyager Training SW", + "elementCount": 526, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW", + "method": "PUT" + } + }, + "name": "Voyager Training SW", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "75597_VOYAGUERTRAININGSW" + }, + { + "elementCount": 523, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU", + "method": "PUT" + } + }, + "name": "Ec2 Akamai Network List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 223, + "type": "IP", + "uniqueId": "1024_AMAZONELASTICCOMPUTECLOU" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "new office in London Victoria for Vrbo", + "elementCount": 355, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Jira Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 123, + "type": "IP", + "uniqueId": "34612_JIRAALLOWEDIPS" + }, + { + "elementCount": 3139, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT", + "method": "PUT" + } + }, + "name": "Azure IP range cloud services", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 426, + "type": "IP", + "uniqueId": "1283_MICROSOFTWINDOWSAZUREDAT" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "Whitelisting one more Akamai IP for testing", + "elementCount": 88, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST", + "method": "PUT" + } + }, + "name": "artylab-test-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 28, + "type": "IP", + "uniqueId": "40998_ARTYLABTESTWHITELIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 24, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Egencia Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "3379_EGENCIABRANDBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Secure+IP+Whitelist", + "elementCount": 331, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST", + "method": "PUT" + } + }, + "name": "artyprod-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 129, + "type": "IP", + "uniqueId": "40997_ARTYPRODWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to allow traffic on jenkinstest.expedia.biz", + "elementCount": 30, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST", + "method": "PUT" + } + }, + "name": "JenkinsTest Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 15, + "type": "IP", + "uniqueId": "53434_JENKINSTESTWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for fisheye.expedia.biz and fisheyetest.expedia.biz", + "elementCount": 135, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST", + "method": "PUT" + } + }, + "name": "Fisheye Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 10, + "type": "IP", + "uniqueId": "68757_FISHEYEWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for sonar.expedia.biz and sonartest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/Sonar+EG+IP+Whitelist", + "elementCount": 173, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68755_SONARWHITELIST", + "method": "PUT" + } + }, + "name": "Sonar Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 23, + "type": "IP", + "uniqueId": "68755_SONARWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for testrail.expedia.biz and testrailtest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/TestRail+EG+IP+Whitelist", + "elementCount": 133, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST", + "method": "PUT" + } + }, + "name": "Testrail Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "68758_TESTRAILWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 62, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST", + "method": "PUT" + } + }, + "name": "alm-blog-whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 15, + "type": "IP", + "uniqueId": "67898_ALMBLOGWHITELIST" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "description": "Added 187.207.181.251, unwanted IP on hoteles.volaris.com\nAdded 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24 - Erik Mattison (ERS - Sec Eng)", + "elementCount": 3969, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Hotels Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 129, + "type": "IP", + "uniqueId": "1706_HOTELSBRANDBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "description": "F-CS-4083079", + "elementCount": 44, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST", + "method": "PUT" + } + }, + "name": "Egencia Sisense Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "75756_EGENCIASISENSEWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS", + "method": "PUT" + } + }, + "name": "Egencia Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "51562_EGENCIABYPASS" + }, + { + "elementCount": 2767, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS", + "method": "PUT" + } + }, + "name": "Image Manager Servers", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 63, + "type": "IP", + "uniqueId": "14121_IMAGEMANAGERSERVERS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 20, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST", + "method": "PUT" + } + }, + "name": "artyprod-test-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 14, + "type": "IP", + "uniqueId": "40999_ARTYPRODTESTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Lydia - Removing IP 216.251.120.10", + "elementCount": 465, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO", + "method": "PUT" + } + }, + "name": "Security Bypass List - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "55214_SECURITYBYPASSLISTGCO" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "description": "ExpediaPartnerCentral IP Blacklist - Added 5 entries per SOC (Erik M, Sec Eng)", + "elementCount": 50, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST", + "method": "PUT" + } + }, + "name": "EPC Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 18, + "type": "IP", + "uniqueId": "32620_EPCBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "DO NOT USE!!! Testing list for automation - see Erik Mattison", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/74967_TESTLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/74967_TESTLIST", + "method": "PUT" + } + }, + "name": "Test-list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "74967_TESTLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "The whitelist for githubtest.expedia.biz", + "elementCount": 34, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST", + "method": "PUT" + } + }, + "name": "GitHubTest Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 17, + "type": "IP", + "uniqueId": "45358_GITHUBTESTWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 22, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68112_CHEFLAB", + "method": "PUT" + } + }, + "name": "ChefLab Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 6, + "type": "IP", + "uniqueId": "68112_CHEFLAB" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 47, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS", + "method": "PUT" + } + }, + "name": "CarRentals Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 7, + "type": "IP", + "uniqueId": "46789_CARRENTALSBYPASS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to allow traffic on jenkinsdecaf.expedia.biz", + "elementCount": 25, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST", + "method": "PUT" + } + }, + "name": "JenkinsDecaf Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "53433_JENKINSDECAFWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS", + "method": "PUT" + } + }, + "name": "Expediagroup Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "53077_EXPEDIAGROUPBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Duplicating ADYEN addresses to this list", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST", + "method": "PUT" + } + }, + "name": "Rate Controls Bypass List - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52769_RATECONTROLSBYPASSLIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Adding Non Prod VPCs", + "elementCount": 74, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/48306_ODSIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/48306_ODSIPS", + "method": "PUT" + } + }, + "name": "ODS IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 14, + "type": "IP", + "uniqueId": "48306_ODSIPS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP Whitelist for chefdecaf.expedia.biz, chefautodecaf.expedia.biz, chefsupermarketdecaf.expedia.biz", + "elementCount": 20, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68115_CHEFDECAF", + "method": "PUT" + } + }, + "name": "Chefdecaf Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "68115_CHEFDECAF" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP Whitelist for chefcorp.expedia.biz, chefautocorp.expedia.biz, chefsupermarketcorp.expedia.biz", + "elementCount": 54, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68113_CHEFCORP", + "method": "PUT" + } + }, + "name": "ChefCorp Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "68113_CHEFCORP" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS", + "method": "PUT" + } + }, + "name": "Hotwire WAF Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "68750_HOTWIREWAFBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "F-CS-3996326", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO", + "method": "PUT" + } + }, + "name": "Strict Whitelist – GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "72997_STRICTWHITELISTGCO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 9, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL", + "method": "PUT" + } + }, + "name": "vap-e2e-prod SWL", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "72924_VAPE2EPRODSWL" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "description": "new office in London Victoria for Vrbo", + "elementCount": 73, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST", + "method": "PUT" + } + }, + "name": "Lodging Internal Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 16, + "type": "IP", + "uniqueId": "45955_LODGINGINTERNALWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "External IPs allowed to access JIRA. See https://confluence.expedia.biz/display/JIRA/JIRA+IP+Whitelisting", + "elementCount": 304, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Vrbojiratest Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69322_VRBOJIRATESTALLOWEDIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 56, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST", + "method": "PUT" + } + }, + "name": "alm-blogtest-whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "67897_ALMBLOGTESTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 71, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS", + "method": "PUT" + } + }, + "name": "Expedia Group Public IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "65037_EXPEDIAGROUPPUBLICIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "List of EG owned/trusted IPs", + "elementCount": 67, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS", + "method": "PUT" + } + }, + "name": "EG Trusted IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69033_EGTRUSTEDIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "External IPs allowed to access Confluence. See https://confluence.expedia.biz/display/CON/Confluence+IP+Whitelisting", + "elementCount": 218, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Confluence Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 38, + "type": "IP", + "uniqueId": "42664_CONFLUENCEALLOWEDIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Added 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24, 103.72.8.217- Erik Mattison (ERS - Sec Eng)", + "elementCount": 24, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST", + "method": "PUT" + } + }, + "name": "Expedia Temporary Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "5703_EXPEDIATEMPORARYBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL", + "method": "PUT" + } + }, + "name": "Expedia Group Global Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "71830_EXPEDIAGROUPGLOBALBLACKL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Deny-By-IP, Apple Verification (STGR-2439), AWS Egress (PROD-5148, PROD-5319), Vitality (PROD-5818), Bangalore Office (PSUP-34217)", + "elementCount": 835, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST", + "method": "PUT" + } + }, + "name": "Staging Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 16, + "type": "IP", + "uniqueId": "64150_VITALITYIPLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS", + "method": "PUT" + } + }, + "name": "Classic vacations Black list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "17400_CLASSICVACATIONSBLACKLIS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "description": "Blocking 49.86.182.23 for scanning", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST", + "method": "PUT" + } + }, + "name": "TEMP IP Black List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "40015_TEMPIPBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI", + "method": "PUT" + } + }, + "name": "Voyager Call Center Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "2276_VOYAGERCALLCENTERBLACKLI" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST", + "method": "PUT" + } + }, + "name": "Voyager LAB Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "3402_VOYAGERLABBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 7, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST", + "method": "PUT" + } + }, + "name": "Hotwire Brand QA Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "4308_HOTWIREBRANDQABLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 7, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Venere Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "3380_VENEREBRANDBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 28, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL", + "method": "PUT" + } + }, + "name": "Voyager PROD Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "5624_VOYAGERCALLCENTERBLACKL" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 137, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Travelocity Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 19, + "type": "IP", + "uniqueId": "2643_TRAVELOCITYBRANDBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 19, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Via Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 6, + "type": "IP", + "uniqueId": "1538_VIABRANDBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 13, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST", + "method": "PUT" + } + }, + "name": "EAN IP Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "16864_EANIPBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST", + "method": "PUT" + } + }, + "name": "ECSC-Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "44828_ECSCBLACKLIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST", + "method": "PUT" + } + }, + "name": "CarRentals Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "46787_CARRENTALSBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST", + "method": "PUT" + } + }, + "name": "ADT - IP Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "49181_ADTIPBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST", + "method": "PUT" + } + }, + "name": "LegacyOrbitz BlackList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "49996_LEGACYORBITZBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO", + "method": "PUT" + } + }, + "name": "IP Blacklist - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52764_IPBLACKLISTDUO" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52782_APIBLACKLIST", + "method": "PUT" + } + }, + "name": "API_Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52782_APIBLACKLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS", + "method": "PUT" + } + }, + "name": "Blacklist_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "53347_BLACKLISTJENKINS" + }, + { + "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST", + "method": "PUT" + } + }, + "name": "GCO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "53726_GCOBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO", + "method": "PUT" + } + }, + "name": "IP Blacklist - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "55211_IPBLACKLISTGCO" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 15625, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Expedia Brand Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 71, + "type": "IP", + "uniqueId": "1933_EXPEDIABRANDBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "description": "Adding 64.15.129.112 as per approval from Narainder.", + "elementCount": 29, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST", + "method": "PUT" + } + }, + "name": "Hotwire Brand Prod Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "1883_HOTWIREBRANDBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST", + "method": "PUT" + } + }, + "name": "EGP Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "63705_EGPBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST", + "method": "PUT" + } + }, + "name": "WorldLine Prod Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69602_WORLDLINEPRODWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "195.35.91.69195.35.90.70", + "elementCount": 8, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST", + "method": "PUT" + } + }, + "name": "WorldPay Prod Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "69603_WORLDPAYPRODWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP Whitelist for chefsecure.expedia.biz, chefautosecure.expedia.biz, chefsupermarketsecure.expedia.biz", + "elementCount": 28, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68114_CHEFSECURE", + "method": "PUT" + } + }, + "name": "ChefSecure Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "68114_CHEFSECURE" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 319, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE", + "method": "PUT" + } + }, + "name": "Hotels Brand Blacklist Exceptions", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "42684_HOTELSBRANDBLACKLISTEXCE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 323, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "ADT StrictWhitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 11, + "type": "IP", + "uniqueId": "49178_ADTSTRICTWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "VPN IP to Whitelist", + "elementCount": 12, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST", + "method": "PUT" + } + }, + "name": "CarRentals Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 7, + "type": "IP", + "uniqueId": "46788_CARRENTALSWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "204.14.232.0/21", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "Placeholder", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "70704_FSPSTRICTWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "description": "204.14.232.0/21", + "elementCount": 27, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "FSP Strict Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "70705_FSPSTRICTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 27, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS", + "method": "PUT" + } + }, + "name": "SalesForce IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "70568_SALESFORCEIPS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "PROD-5818", + "elementCount": 49, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65875_ALLOWBYIP", + "method": "PUT" + } + }, + "name": "Vitality-IP-List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "65875_ALLOWBYIP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Iran APT IOC IPs addition to security controls\nJira ID - ERSST-2128", + "elementCount": 17, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS", + "method": "PUT" + } + }, + "name": "Iran APT IOC IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "70327_IRANAPTIOCIPS" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "description": "Added as requested by Atit: Expedia Partner JIRA: (AK-88) Add Qualys CIDR to EAN IP Bypass List\n\nAdded Deloitte IPs as requested by Atit. AK-104\n\nAdded Rapid7 IPs per Atit. Ak-171", + "elementCount": 13, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST", + "method": "PUT" + } + }, + "name": "EAN IP Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 10, + "type": "IP", + "uniqueId": "16862_EANIPBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST", + "method": "PUT" + } + }, + "name": "Adyen Prod Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "69601_ADYENPRODWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST", + "method": "PUT" + } + }, + "name": "Rate Controls Bypass List - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "55215_RATECONTROLSBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST", + "method": "PUT" + } + }, + "name": "WorldPay Test Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "68764_WORLDPAYWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST", + "method": "PUT" + } + }, + "name": "WorldLine Test Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "68765_WORLDLINEWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 10, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68762_ADYEN/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68762_ADYEN" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68762_ADYEN", + "method": "PUT" + } + }, + "name": "Adyen Test Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "68762_ADYEN" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST", + "method": "PUT" + } + }, + "name": "TEMP Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "40021_TEMPBYPASSLIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS", + "method": "PUT" + } + }, + "name": "Vrbojiratest_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "69324_VRBOJIRATESTBYPASS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST", + "method": "PUT" + } + }, + "name": "Vrbojiratest_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "69323_VRBOJIRATESTRCWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 16, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS", + "method": "PUT" + } + }, + "name": "BEX Rate Control Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "55919_BEXRATECONTROLBYPASS" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "description": "HAK-86, PROD-6167", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS", + "method": "PUT" + } + }, + "name": "AWS Egress IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "68043_AWSEGRESSIPS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "List of IPs allowed to access https://cheftest.expedia.biz", + "elementCount": 13, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68111_CHEFTEST", + "method": "PUT" + } + }, + "name": "ChefTest Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "68111_CHEFTEST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "IP whitelist for jenkinssecure.expedia.biz", + "elementCount": 39, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST", + "method": "PUT" + } + }, + "name": "jenkinssecure whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "55686_JENKINSSECUREWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 6, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (CarRentals)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "46792_REPUTATIONWHITELISTCARRE" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Adding New Relic San Francisco EndPoints for Synthetics", + "elementCount": 11, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP", + "method": "PUT" + } + }, + "name": "CarRentals Rate Control Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "46791_CARRENTALSRATECONTROLBYP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "F-CS-3817120\nES_Tuning - Rate Control Recommendations\nBy Akamai", + "elementCount": 14, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST", + "method": "PUT" + } + }, + "name": "Rate Controls Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "68495_RATECONTROLSWHITELIST" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (EAN WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "68344_REPUTATIONWHITELISTEANW" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 4, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST", + "method": "PUT" + } + }, + "name": "API_BypassList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "52784_APIBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/67900_EITSERVICES", + "method": "PUT" + } + }, + "name": "eIT Services", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "67900_EITSERVICES" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 16, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Hotels)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 7, + "type": "IP", + "uniqueId": "9606_REPUTATIONWHITELISTHOTEL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP", + "method": "PUT" + } + }, + "name": "WAF Bypass for \"DENY-By-IP-Policy\"", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "66858_WAFBYPASSFORDENYBYIP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "PROD-5839, HAK-81\nTarget: apihotels.net", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST", + "method": "PUT" + } + }, + "name": "API Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "65265_AWSBAMBOOWHITELIST" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (eIT Extranet Services)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "65827_REPUTATIONWHITELISTEITE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 20, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST", + "method": "PUT" + } + }, + "name": "ADT - WAF Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "49185_ADTWAFBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST", + "method": "PUT" + } + }, + "name": "Geo - Network List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "65654_GEONETWORKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION", + "method": "PUT" + } + }, + "name": "IP Block List Exception", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "65653_IPBLOCKLISTEXCEPTION" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST", + "method": "PUT" + } + }, + "name": "Amex Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "65651_AMEXWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Adding EG DAST IPs", + "elementCount": 3, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST", + "method": "PUT" + } + }, + "name": "CarRentals Partner Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "53725_PARTNERWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Hotwire WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "9833_REPUTATIONWHITELISTHOTWI" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44829_ECSCBYPASS", + "method": "PUT" + } + }, + "name": "ECSC-Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "44829_ECSCBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", + "elementCount": 213, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS", + "method": "PUT" + } + }, + "name": "CPI Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "49617_CPIALLOWEDIPS" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 29, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS", + "method": "PUT" + } + }, + "name": "Customer Client IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 10, + "type": "IP", + "uniqueId": "48307_CUSTOMERCLIENTIPS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 9, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL", + "method": "PUT" + } + }, + "name": "Egencia StrictWL", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "53659_EGENCIASTRICTWL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", + "elementCount": 213, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS", + "method": "PUT" + } + }, + "name": "Confluence Okta Allowed IPs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "50276_CONFLUENCEOKTAALLOWEDIPS" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 58, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST", + "method": "PUT" + } + }, + "name": "App Strict Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "44833_APPSTRICTWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 37, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST", + "method": "PUT" + } + }, + "name": "Corporate HQ Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "26371_CORPORATEHQWHITELIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 342, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST", + "method": "PUT" + } + }, + "name": "Voyager LAB Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 12, + "type": "IP", + "uniqueId": "3324_VOYAGERLABWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "List of allowed IPs for ALM GitHub Enterprise", + "elementCount": 18, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST", + "method": "PUT" + } + }, + "name": "bogus-github-whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "40196_GITHUBWHITELIST" + }, + { + "description": "The Akamai Portal Test Center is a tool that you can use to test configuration changes. To take advantage of the Test Center, you must ensure that test requests coming from the Test Center are not blocked, by whitelisting this list in your WAF policies.", + "elementCount": 12, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA", + "method": "PUT" + } + }, + "name": "Akamai Test Center (ATC) Agents", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 2, + "type": "IP", + "uniqueId": "46506_AKAMAIPORTALTESTCENTERA" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 227, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL", + "method": "PUT" + } + }, + "name": "Akamai Firewall", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "1327_AKAMAIFIREWALL" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Enterprise Solutions)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63829_REPUTATIONWHITELISTENTER" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (EGP)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63708_REPUTATIONWHITELISTEGP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63707_EGPGEOLIST", + "method": "PUT" + } + }, + "name": "EGP Geolist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "63707_EGPGEOLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST", + "method": "PUT" + } + }, + "name": "EGP Bypasslist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63706_EGPBYPASSLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/63704_EGPWHITELIST", + "method": "PUT" + } + }, + "name": "EGP Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "63704_EGPWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Allow Traffic from One UI Tool", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52781_APIWHITELIST", + "method": "PUT" + } + }, + "name": "API_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "52781_APIWHITELIST" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 75, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS", + "method": "PUT" + } + }, + "name": "Hotels Brand WAF Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "IP", + "uniqueId": "42686_HOTELSBRANDWAFBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - Offices", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "50637_WAFBYPASSWHITELISTOFFI" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 68, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS", + "method": "PUT" + } + }, + "name": "ECSC-RC Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "44830_ECSCRCBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 30, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP", + "method": "PUT" + } + }, + "name": "WAF Security File- Rate Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "62642_WAFSECURITYFILERATEBYP" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 9, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR", + "method": "PUT" + } + }, + "name": "WAF bypass IP list - Hotwire QA", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "886_WAFBYPASSIPLISTHOTWIR" + }, + { + "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", + "elementCount": 10, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR", + "method": "PUT" + } + }, + "name": "Hotels Brand - Whitelist from Custom Rule 621882", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "60322_HOTELSBRANDWHITELISTFR" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Testing the Network list automation using API and Flyte-Akamai chatbot, https://jira.hcom/browse/PLATFORM-461", + "elementCount": 18, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461", + "method": "PUT" + } + }, + "name": "test-PLATFORM-461", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 48, + "type": "IP", + "uniqueId": "50114_TESTPLATFORM461" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Negative match fro rate controls", + "elementCount": 2, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT", + "method": "PUT" + } + }, + "name": "Hotwire Rate Control Exceptions", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "50628_HOTWIRERATECONTROLEXCEPT" + }, + { + "description": "Gomez synthetic monitoring network", + "elementCount": 104, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS", + "method": "PUT" + } + }, + "name": "Gomez (Compuware) Agents", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 4, + "type": "IP", + "uniqueId": "1026_GOMEZCOMPUWAREAGENTS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (GCO)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "55664_REPUTATIONWHITELISTGCO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO", + "method": "PUT" + } + }, + "name": "Geo Blacklist - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "55213_GEOBLACKLISTGCO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC", + "method": "PUT" + } + }, + "name": "IP Blacklist Exception - GCO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "55212_IPBLACKLISTEXCEPTIONGC" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Added 203.37.166.130, new origin IP for .com.au", + "elementCount": 250, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - Hopscotch", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 38, + "type": "IP", + "uniqueId": "6487_WAFBYPASSWHITELISTHOPS" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "description": "Added 72.246.0.10 & 72.246.0.22 as requested by Jim George.", + "elementCount": 143, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE", + "method": "PUT" + } + }, + "name": "Akamai Cracker 2 and Cracker 3 IPs for testing purposes", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "48308_AKAMAICRACKER2ANDCRACKE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING", + "method": "PUT" + } + }, + "name": "Akamai_Internal_Testing", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "54056_AKAMAIINTERNALTESTING" + }, + { + "accessControlGroup": "IPA Hotwire - 3-4168BG", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Jenkins)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53355_REPUTATIONWHITELISTJENKI" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to bypass rate controls on Jenkins config, jenkins policy", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ", + "method": "PUT" + } + }, + "name": "Rate Control Bypass List _Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53351_RATECONTROLBYPASSLISTJ" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "Exclusion from blacklist", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS", + "method": "PUT" + } + }, + "name": "Whitelist_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53349_WHITELISTJENKINS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS", + "method": "PUT" + } + }, + "name": "GEO Blacklist_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "53348_GEOBLACKLISTJENKINS" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "description": "to bypass WAF on Jenkins Policy, Jenkins config", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS", + "method": "PUT" + } + }, + "name": "WAF Bypass List_Jenkins", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53345_WAFBYPASSLISTJENKINS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (ERS)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53080_REPUTATIONWHITELISTERS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB", + "method": "PUT" + } + }, + "name": "Expediagroup Rate Control Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53079_EXPEDIAGROUPRATECONTROLB" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST", + "method": "PUT" + } + }, + "name": "Expediagroup GEO list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "53076_EXPEDIAGROUPGEOLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST", + "method": "PUT" + } + }, + "name": "Expediagroup White list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53075_EXPEDIAGROUPWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST", + "method": "PUT" + } + }, + "name": "Expediagroup Black list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "53074_EXPEDIAGROUPBLACKLIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK", + "method": "PUT" + } + }, + "name": "API_GEOBlock", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "52783_APIGEOBLOCK" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Duo)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "52771_REPUTATIONWHITELISTDUO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO", + "method": "PUT" + } + }, + "name": "Security Bypass List - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "52768_SECURITYBYPASSLISTDUO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO", + "method": "PUT" + } + }, + "name": "Geo Blacklist - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "52767_GEOBLACKLISTDUO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU", + "method": "PUT" + } + }, + "name": "IP Blacklist Exception - Duo", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "52766_IPBLACKLISTEXCEPTIONDU" + }, + { + "elementCount": 468, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16656_CPISERVERS", + "method": "PUT" + } + }, + "name": "A2 Servers", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 15, + "type": "IP", + "uniqueId": "16656_CPISERVERS" + }, + { + "elementCount": 349, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/7054_FEOSERVERS", + "method": "PUT" + } + }, + "name": "FEO Servers", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 12, + "type": "IP", + "uniqueId": "7054_FEOSERVERS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK", + "method": "PUT" + } + }, + "name": "Egencia GEO Block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "51561_EGENCIAGEOBLOCK" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - Other", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50640_WAFBYPASSWHITELISTOTHE" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - AWS NATs", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50638_WAFBYPASSWHITELISTAWS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - CallCenter", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50636_WAFBYPASSWHITELISTCALL" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "Splitting up Hopscotch whitelist to improve management.", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - partner", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50635_WAFBYPASSWHITELISTPART" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "splitting up the hopscotch list for easier management", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC", + "method": "PUT" + } + }, + "name": "WAF Bypass Whitelist - DC", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50634_WAFBYPASSWHITELISTDC" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 10, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST", + "method": "PUT" + } + }, + "name": "hoteis.com GEO list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "GEO", + "uniqueId": "50337_HOTEISCOMGEOLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS", + "method": "PUT" + } + }, + "name": "Confluence Okta_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50278_CONFLUENCEOKTARCWHITELIS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS", + "method": "PUT" + } + }, + "name": "Confluence Okta_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "50277_CONFLUENCEOKTABYPASS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST", + "method": "PUT" + } + }, + "name": "LegacyOrbitz GEO BlackList", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "49997_LEGACYORBITZBLACKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST", + "method": "PUT" + } + }, + "name": "LegacyOrbitz Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49995_LEGACYORBITZWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST", + "method": "PUT" + } + }, + "name": "CPI_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49620_CPIRCWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49618_CPIBYPASS", + "method": "PUT" + } + }, + "name": "CPI_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49618_CPIBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS", + "method": "PUT" + } + }, + "name": "ADT - Rate Controls Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "49186_ADTRATECONTROLSBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "ADT - Geo Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "49182_ADTGEOBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED", + "method": "PUT" + } + }, + "name": "Hotels Brand GEO List (Used by Custom Bots)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "GEO", + "uniqueId": "47882_HOTELSBRANDGEOLISTUSED" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS", + "method": "PUT" + } + }, + "name": "legacyOrbitz_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "47546_LEGACYORBITZBYPASS" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST", + "method": "PUT" + } + }, + "name": "Digital Ocean Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "47517_DIGITALOCEANWHITELIST" + }, + { + "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK", + "method": "PUT" + } + }, + "name": "CarRentals Geo Block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "46790_CARRENTALSGEOBLOCK" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "EPC GEO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "45956_EPCGEOBLACKLIST" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45954_EPCBYPASS", + "method": "PUT" + } + }, + "name": "EPC Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "45954_EPCBYPASS" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "EPC GEO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "45953_EPCGEOBLACKLIST" + }, + { + "accessControlGroup": "EPC - 3-TE78Q.G82853", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/45952_EPCWHITELIST", + "method": "PUT" + } + }, + "name": "EPC Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "45952_EPCWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (ECSC)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "44832_REPUTATIONWHITELISTECSC" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "ECSC-GEO Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "44831_ECSCGEOBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST", + "method": "PUT" + } + }, + "name": "ECSC-Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "44827_ECSCWHITELIST" + }, + { + "accessControlGroup": "Classic Vacations - 3-TE78Q.G83605", + "description": "Classic Vacations Whitelist for", + "elementCount": 17, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST", + "method": "PUT" + } + }, + "name": "Classic Vacations Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 6, + "type": "IP", + "uniqueId": "31075_CLASSICVACATIONSWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST", + "method": "PUT" + } + }, + "name": "Egencia Brand Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "43172_EGENCIABRANDWHITELIST" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS", + "method": "PUT" + } + }, + "name": "Hotels Brand Rate Controls Bypass List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "42688_HOTELSBRANDRATECONTROLS" + }, + { + "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "Hotels Brand Geo Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "42687_HOTELSBRANDGEOBLACKLIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS", + "method": "PUT" + } + }, + "name": "Confluence_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "42666_CONFLUENCEBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST", + "method": "PUT" + } + }, + "name": "Confluence_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "42665_CONFLUENCERCWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP", + "method": "PUT" + } + }, + "name": "BM rollout-IP", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "IP", + "uniqueId": "40730_BMROLLOUTIP" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO", + "method": "PUT" + } + }, + "name": "BM rollout-GEO", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 8, + "type": "GEO", + "uniqueId": "40731_BMROLLOUTGEO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP", + "method": "PUT" + } + }, + "name": "Not Used _3-TE78Q ION", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 5, + "type": "IP", + "uniqueId": "40712_BMROLLOUTIP" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO", + "method": "PUT" + } + }, + "name": "Not Used_3-TE78Q ION", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 4, + "type": "GEO", + "uniqueId": "40713_BMROLLOUTGEO" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "description": "case F-CS-2759696", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE", + "method": "PUT" + } + }, + "name": "GEO-Block Hotwire", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "GEO", + "uniqueId": "40548_GEOBLOCKHOTWIRE" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Github)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "40198_REPUTATIONWHITELISTGITHU" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS", + "method": "PUT" + } + }, + "name": "Github Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "40197_GITHUBBYPASS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST", + "method": "PUT" + } + }, + "name": "TEMP Geo-Block List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "40016_TEMPGEOBLOCKLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST", + "method": "PUT" + } + }, + "name": "TEMP IP White List", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "40014_TEMPIPWHITELIST" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Expedia WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "37172_REPUTATIONWHITELISTEXPED" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST", + "method": "PUT" + } + }, + "name": "Jira_RC_Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "34616_JIRARCWHITELIST" + }, + { + "accessControlGroup": "ALM - 3-TE78Q.G112653", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/34613_JIRABYPASS", + "method": "PUT" + } + }, + "name": "Jira_Bypass", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "34613_JIRABYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS", + "method": "PUT" + } + }, + "name": "test3", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "32383_EANRATECONTROLBYPASS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST", + "method": "PUT" + } + }, + "name": "test2", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 2, + "type": "IP", + "uniqueId": "32378_RATECONTROLSBYPASSLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS", + "method": "PUT" + } + }, + "name": "EAN Rate Control bypass list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "32384_EANRATECONTROLBYPASSLIS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF", + "method": "PUT" + } + }, + "name": "Partner_turnoff", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "31755_PARTNERTURNOFF" + }, + { + "description": "reactivate to hide the variable. for Jira LUNADEVESC-5134", + "elementCount": 400, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS", + "method": "PUT" + } + }, + "name": "Keynote Agents", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 5, + "type": "IP", + "uniqueId": "1025_KEYNOTEAGENTS" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 186, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST", + "method": "PUT" + } + }, + "name": "Call Center Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "26372_CALLCENTERWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST", + "method": "PUT" + } + }, + "name": "HomeAway IP whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "25066_HOMEAWAYIPWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK", + "method": "PUT" + } + }, + "name": "HomeAway Geo Block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "25065_HOMEAWAYGEOBLOCK" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/25064_IPBLOCK", + "method": "PUT" + } + }, + "name": "HomeAway IP block", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "25064_IPBLOCK" + }, + { + "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", + "elementCount": 216, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/18511_AS37963/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/18511_AS37963" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/18511_AS37963", + "method": "PUT" + } + }, + "name": "AS37963", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "18511_AS37963" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS", + "method": "PUT" + } + }, + "name": "Classic vacations waf bypass list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "17403_CLASSICVACATIONSWAFBYPAS" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST", + "method": "PUT" + } + }, + "name": "Classic vacations whitelist exception to network control", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "17402_CLASSICVACATIONSWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK", + "method": "PUT" + } + }, + "name": "Classic vacations Geo Black list", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "17401_CLASSICVACATIONSGEOBLACK" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST", + "method": "PUT" + } + }, + "name": "EAN Geo Blacklist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "GEO", + "uniqueId": "16865_EANGEOBLACKLIST" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST", + "method": "PUT" + } + }, + "name": "EAN IP Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "16863_EANIPWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC", + "method": "PUT" + } + }, + "name": "Reputation Whitelist (Egencia WAF)", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "9818_REPUTATIONWHITELISTEGENC" + }, + { + "elementCount": 27, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST", + "method": "PUT" + } + }, + "name": "International Traffic in Arms Regulations (ITAR) List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 9, + "type": "GEO", + "uniqueId": "968_ITARCOUNTRYLIST" + }, + { + "elementCount": 22, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST", + "method": "PUT" + } + }, + "name": "International Emergency Economic Powers Act (IEEPA) List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 3, + "type": "GEO", + "uniqueId": "969_IEEPACOUNTRYLIST" + }, + { + "elementCount": 18, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST", + "method": "PUT" + } + }, + "name": "Office of Foreign Asset Control (OFAC) List", + "networkListType": "networkListResponse", + "readOnly": true, + "shared": true, + "syncPoint": 4, + "type": "GEO", + "uniqueId": "967_OFACCOUNTRYLIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST", + "method": "PUT" + } + }, + "name": "Reputation Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "6986_REPUTATIONWHITELIST" + }, + { + "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", + "elementCount": 4113, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC", + "method": "PUT" + } + }, + "name": "Tor Exit Nodes - Static", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 3, + "type": "IP", + "uniqueId": "5627_TOREXITNODESSTATIC" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 1, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/3453_TESTACCESS", + "method": "PUT" + } + }, + "name": "test access", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 1, + "type": "IP", + "uniqueId": "3453_TESTACCESS" + }, + { + "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", + "elementCount": 0, + "links": { + "activateInProduction": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/activate", + "method": "POST" + }, + "activateInStaging": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/activate", + "method": "POST" + }, + "appendItems": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/append", + "method": "POST" + }, + "retrieve": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI" + }, + "statusInProduction": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/status" + }, + "statusInStaging": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/status" + }, + "update": { + "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI", + "method": "PUT" + } + }, + "name": "Voyager Call Center Whitelist", + "networkListType": "networkListResponse", + "readOnly": false, + "shared": false, + "syncPoint": 0, + "type": "IP", + "uniqueId": "2275_VOYAGERCALLCENTERWHITELI" + } + ] + } +] \ No newline at end of file diff --git a/pkg/providers/networklists/testdata/TestResNetworkListSubscription/match_by_id.tf b/pkg/providers/networklists/testdata/TestResNetworkListSubscription/match_by_id.tf new file mode 100644 index 000000000..cbee15717 --- /dev/null +++ b/pkg/providers/networklists/testdata/TestResNetworkListSubscription/match_by_id.tf @@ -0,0 +1,10 @@ +provider "akamai" { + edgerc = "~/.edgerc_network" +} + + +resource "akamai_networklist_network_list_subscription" "test" { + recipients = ["test@email.com"] + unique_ids = ["79536_MARTINNETWORKLIST"] + } + From fd0546ef4a302f676efb32f4d317e18f96bed732 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Tue, 5 Jan 2021 13:48:15 -0600 Subject: [PATCH 002/215] Add hostname coverage API --- ...ata_akamai_appsec_api_hostname_coverage.go | 67 + ...sec_api_hostname_coverage_match_targets.go | 98 + ...pi_hostname_coverage_match_targets_test.go | 43 + ...ppsec_api_hostname_coverage_overlapping.go | 98 + ..._api_hostname_coverage_overlapping_test.go | 43 + ...kamai_appsec_api_hostname_coverage_test.go | 43 + pkg/providers/appsec/provider.go | 80 +- pkg/providers/appsec/templates.go | 16 + .../ApiHostnameCoverage.json | 1939 +++++++++++++++++ .../TestDSApiHostnameCoverage/match_by_id.tf | 7 + .../ApiHostnameCoverageMatchTargets.json | 85 + .../match_by_id.tf | 9 + .../ApiHostnameCoverageOverlapping.json | 9 + .../match_by_id.tf | 9 + ...tworklist_network_list_description_test.go | 4 +- pkg/providers/providers.go | 2 + 16 files changed, 2520 insertions(+), 32 deletions(-) create mode 100644 pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go create mode 100644 pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/ApiHostnameCoverage.json create mode 100644 pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/ApiHostnameCoverageMatchTargets.json create mode 100644 pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestDSApiHostnameCoverageOverlapping/ApiHostnameCoverageOverlapping.json create mode 100644 pkg/providers/appsec/testdata/TestDSApiHostnameCoverageOverlapping/match_by_id.tf diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go new file mode 100644 index 000000000..b0ee178e3 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go @@ -0,0 +1,67 @@ +package appsec + +import ( + "context" + "encoding/json" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceApiHostnameCoverage() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceApiHostnameCoverageRead, + Schema: map[string]*schema.Schema{ + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceApiHostnameCoverageRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceApiHostnameCoverageRead") + + getApiHostnameCoverage := appsec.GetApiHostnameCoverageRequest{} + + apihostnamecoverage, err := client.GetApiHostnameCoverage(ctx, getApiHostnameCoverage) + if err != nil { + logger.Errorf("calling 'getApiHostnameCoverage': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "apiHostnameCoverageDS", apihostnamecoverage) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(apihostnamecoverage) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(strconv.Itoa(getApiHostnameCoverage.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets.go new file mode 100644 index 000000000..b492f62af --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets.go @@ -0,0 +1,98 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceApiHostnameCoverageMatchTargets() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceApiHostnameCoverageMatchTargetsRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": &schema.Schema{ + Type: schema.TypeInt, + Required: true, + }, + "hostname": { + Type: schema.TypeString, + Required: true, + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceApiHostnameCoverageMatchTargetsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceApiHostnameCoverageMatchTargetsRead") + + getApiHostnameCoverageMatchTargets := appsec.GetApiHostnameCoverageMatchTargetsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiHostnameCoverageMatchTargets.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiHostnameCoverageMatchTargets.Version = version + + hostname, err := tools.GetStringValue("hostname", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiHostnameCoverageMatchTargets.Hostname = hostname + + apihostnamecoveragematchtargets, err := client.GetApiHostnameCoverageMatchTargets(ctx, getApiHostnameCoverageMatchTargets) + if err != nil { + logger.Errorf("calling 'getApiHostnameCoverageMatchTargets': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "apiHostnameCoverageMatchTargetsDS", apihostnamecoveragematchtargets) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(apihostnamecoveragematchtargets) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(strconv.Itoa(getApiHostnameCoverageMatchTargets.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets_test.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets_test.go new file mode 100644 index 000000000..dc0b767b5 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiApiHostnameCoverageMatchTargets_data_basic(t *testing.T) { + t.Run("match by ApiHostnameCoverageMatchTargets ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetApiHostnameCoverageMatchTargetsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSApiHostnameCoverageMatchTargets/ApiHostnameCoverageMatchTargets.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetApiHostnameCoverageMatchTargets", + mock.Anything, // ctx is irrelevant for this test + appsec.GetApiHostnameCoverageMatchTargetsRequest{ConfigID: 43253, Version: 7, Hostname: "rinaldi.sandbox.akamaideveloper.com"}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_api_hostname_coverage_match_targets.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping.go new file mode 100644 index 000000000..cde548b33 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping.go @@ -0,0 +1,98 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceApiHostnameCoverageOverlapping() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceApiHostnameCoverageOverlappingRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": &schema.Schema{ + Type: schema.TypeInt, + Required: true, + }, + "hostname": { + Type: schema.TypeString, + Required: true, + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceApiHostnameCoverageOverlappingRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceApiHostnameCoverageOverlappingRead") + + getApiHostnameCoverageOverlapping := appsec.GetApiHostnameCoverageOverlappingRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiHostnameCoverageOverlapping.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiHostnameCoverageOverlapping.Version = version + + hostname, err := tools.GetStringValue("hostname", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiHostnameCoverageOverlapping.Hostname = hostname + + apihostnamecoverageoverlapping, err := client.GetApiHostnameCoverageOverlapping(ctx, getApiHostnameCoverageOverlapping) + if err != nil { + logger.Errorf("calling 'getApiHostnameCoverageOverlapping': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "apiHostnameCoverageoverLappingDS", apihostnamecoverageoverlapping) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(apihostnamecoverageoverlapping) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(strconv.Itoa(getApiHostnameCoverageOverlapping.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping_test.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping_test.go new file mode 100644 index 000000000..e6ba2e554 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiApiHostnameCoverageOverlapping_data_basic(t *testing.T) { + t.Run("match by ApiHostnameCoverageOverlapping ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetApiHostnameCoverageOverlappingResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSApiHostnameCoverageOverlapping/ApiHostnameCoverageOverlapping.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetApiHostnameCoverageOverlapping", + mock.Anything, // ctx is irrelevant for this test + appsec.GetApiHostnameCoverageOverlappingRequest{ConfigID: 43253, Version: 7}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSApiHostnameCoverageOverlapping/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_api_hostname_coverage_overlapping.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go new file mode 100644 index 000000000..8281d7467 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiApiHostnameCoverage_data_basic(t *testing.T) { + t.Run("match by ApiHostnameCoverage ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetApiHostnameCoverageResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSApiHostnameCoverage/ApiHostnameCoverage.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetApiHostnameCoverage", + mock.Anything, // ctx is irrelevant for this test + appsec.GetApiHostnameCoverageRequest{ConfigID: 43253, Version: 7}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSApiHostnameCoverage/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_api_hostname_coverage.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index 286d67251..7b5b88b4f 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -61,38 +61,56 @@ func Provider() *schema.Provider { }, }, DataSourcesMap: map[string]*schema.Resource{ - "akamai_appsec_configuration": dataSourceConfiguration(), - "akamai_appsec_configuration_version": dataSourceConfigurationVersion(), - "akamai_appsec_custom_rules": dataSourceCustomRules(), - "akamai_appsec_custom_rule_actions": dataSourceCustomRuleActions(), - "akamai_appsec_export_configuration": dataSourceExportConfiguration(), - "akamai_appsec_eval": dataSourceEval(), - "akamai_appsec_eval_rule_actions": dataSourceEvalRuleActions(), - "akamai_appsec_eval_rule_condition_exception": dataSourceEvalRuleConditionException(), - "akamai_appsec_ip_geo": dataSourceIPGeo(), - "akamai_appsec_rule_actions": dataSourceRuleActions(), - "akamai_appsec_rule_condition_exception": dataSourceRuleConditionException(), - "akamai_appsec_match_targets": dataSourceMatchTargets(), - "akamai_appsec_penalty_box": dataSourcePenaltyBox(), - "akamai_appsec_security_policy_protections": dataSourcePolicyProtections(), - "akamai_appsec_rate_policies": dataSourceRatePolicies(), - "akamai_appsec_rate_policy_actions": dataSourceRatePolicyActions(), - "akamai_appsec_rate_protections": dataSourceRateProtections(), - "akamai_appsec_reputation_protections": dataSourceReputationProtections(), - "akamai_appsec_reputation_profiles": dataSourceReputationProfiles(), - "akamai_appsec_reputation_profile_actions": dataSourceReputationProfileActions(), - "akamai_appsec_rule_upgrade_details": dataSourceRuleUpgrade(), - "akamai_appsec_selectable_hostnames": dataSourceSelectableHostnames(), - "akamai_appsec_security_policy": dataSourceSecurityPolicy(), - "akamai_appsec_selected_hostnames": dataSourceSelectedHostnames(), - "akamai_appsec_slow_post": dataSourceSlowPostProtectionSettings(), - "akamai_appsec_slowpost_protections": dataSourceSlowPostProtections(), - "akamai_appsec_attack_group_actions": dataSourceAttackGroupActions(), - "akamai_appsec_waf_mode": dataSourceWAFMode(), - "akamai_appsec_waf_protection": dataSourceWAFProtections(), - "akamai_appsec_attack_group_condition_exception": dataSourceAttackGroupConditionException(), + "akamai_appsec_advanced_settings_logging": dataSourceAdvancedSettingsLogging(), + "akamai_appsec_advanced_settings_policy_logging": dataSourceAdvancedSettingsPolicyLogging(), + "akamai_appsec_advanced_settings_prefetch": dataSourceAdvancedSettingsPrefetch(), + "akamai_appsec_api_endpoints": dataSourceApiEndpoints(), + "akamai_appsec_api_hostname_coverage": dataSourceApiHostnameCoverage(), + "akamai_appsec_api_hostname_coverage_overlapping": dataSourceApiHostnameCoverageOverlapping(), + "akamai_appsec_api_hostname_coverage_match_targets": dataSourceApiHostnameCoverageMatchTargets(), + "akamai_appsec_policy_api_endpoints": dataSourcePolicyApiEndpoints(), + "akamai_appsec_api_request_constraints": dataSourceApiRequestConstraints(), + "akamai_appsec_configuration": dataSourceConfiguration(), + "akamai_appsec_configuration_version": dataSourceConfigurationVersion(), + "akamai_appsec_contract_groups": dataSourceContractsGroups(), + "akamai_appsec_custom_deny": dataSourceCustomDeny(), + "akamai_appsec_custom_rules": dataSourceCustomRules(), + "akamai_appsec_custom_rule_actions": dataSourceCustomRuleActions(), + "akamai_appsec_export_configuration": dataSourceExportConfiguration(), + "akamai_appsec_eval": dataSourceEval(), + "akamai_appsec_eval_rule_actions": dataSourceEvalRuleActions(), + "akamai_appsec_eval_rule_condition_exception": dataSourceEvalRuleConditionException(), + "akamai_appsec_failover_hostnames": dataSourceFailoverHostnames(), + "akamai_appsec_ip_geo": dataSourceIPGeo(), + "akamai_appsec_rule_actions": dataSourceRuleActions(), + "akamai_appsec_rule_condition_exception": dataSourceRuleConditionException(), + "akamai_appsec_match_targets": dataSourceMatchTargets(), + "akamai_appsec_penalty_box": dataSourcePenaltyBox(), + "akamai_appsec_security_policy_protections": dataSourcePolicyProtections(), + "akamai_appsec_rate_policies": dataSourceRatePolicies(), + "akamai_appsec_rate_policy_actions": dataSourceRatePolicyActions(), + "akamai_appsec_rate_protections": dataSourceRateProtections(), + "akamai_appsec_reputation_protections": dataSourceReputationProtections(), + "akamai_appsec_reputation_profiles": dataSourceReputationProfiles(), + "akamai_appsec_reputation_profile_actions": dataSourceReputationProfileActions(), + "akamai_appsec_rule_upgrade_details": dataSourceRuleUpgrade(), + "akamai_appsec_selectable_hostnames": dataSourceSelectableHostnames(), + "akamai_appsec_security_policy": dataSourceSecurityPolicy(), + "akamai_appsec_selected_hostnames": dataSourceSelectedHostnames(), + "akamai_appsec_siem_settings": dataSourceSiemSettings(), + "akamai_appsec_siem_definitions": dataSourceSiemDefinitions(), + "akamai_appsec_slow_post": dataSourceSlowPostProtectionSettings(), + "akamai_appsec_slowpost_protections": dataSourceSlowPostProtections(), + "akamai_appsec_attack_group_actions": dataSourceAttackGroupActions(), + "akamai_appsec_waf_mode": dataSourceWAFMode(), + "akamai_appsec_waf_protection": dataSourceWAFProtections(), + "akamai_appsec_attack_group_condition_exception": dataSourceAttackGroupConditionException(), }, ResourcesMap: map[string]*schema.Resource{ + "akamai_appsec_advanced_settings": resourceAdvancedSettingsLogging(), + "akamai_appsec_advanced_settings_prefetch": resourceAdvancedSettingsPrefetch(), + "akamai_api_request_constraints": resourceApiRequestConstraints(), + "akamai_appsec_configuration": resourceConfiguration(), "akamai_appsec_configuration_version_clone": resourceConfigurationClone(), "akamai_appsec_selected_hostnames": resourceSelectedHostname(), "akamai_appsec_security_policy_clone": resourceSecurityPolicyClone(), @@ -106,6 +124,7 @@ func Provider() *schema.Provider { "akamai_appsec_match_target_sequence": resourceMatchTargetSequence(), "akamai_appsec_penalty_box": resourcePenaltyBox(), "akamai_appsec_security_policy_protections": resourcePolicyProtections(), + "akamai_appsec_custom_deny": resourceCustomDeny(), "akamai_appsec_custom_rule": resourceCustomRule(), "akamai_appsec_custom_rule_action": resourceCustomRuleAction(), "akamai_appsec_activations": resourceActivations(), @@ -117,6 +136,7 @@ func Provider() *schema.Provider { "akamai_appsec_reputation_profile_action": resourceReputationProfileAction(), "akamai_appsec_rule_upgrade": resourceRuleUpgrade(), "akamai_appsec_security_policy": resourceSecurityPolicy(), + "akamai_appsec_siem_settings": resourceSiemSettings(), "akamai_appsec_slow_post": resourceSlowPostProtectionSetting(), "akamai_appsec_slowpost_protection": resourceSlowPostProtection(), "akamai_appsec_attack_group_action": resourceAttackGroupAction(), diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index f434e8325..1472cfd76 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -21,8 +21,10 @@ type OutputTemplate struct { func GetTemplate(ots map[string]*OutputTemplate, key string) (*OutputTemplate, error) { if f, ok := ots[key]; ok && f != nil { + // fmt.Printf("%s is in the OutputTemplate >> %+v\n", key, f) return f, nil } else { + // fmt.Printf("%s is NOT in the OutputTemplate!\n", key) return nil, fmt.Errorf("Error not found") } } @@ -90,9 +92,19 @@ func RenderTemplates(ots map[string]*OutputTemplate, key string, str interface{} } func InitTemplates(otm map[string]*OutputTemplate) { + otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Custom Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}}"} + otm["advancedSettingsPolicyLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsPolicyLoggingDS", TableTitle: "Allow Sampling|Custom Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}}"} + otm["advancedSettingsPrefetchDS"] = &OutputTemplate{TemplateName: "advancedSettingsPrefetchDS", TableTitle: "Enable App Layer|All Extension|Enable Rate Controls|Extensions", TemplateType: "TABULAR", TemplateString: "{{.AllExtensions}}|{{.EnableAppLayer}}|{{.EnableRateControls}}|{{range $index, $element := .Extensions}}{{.}} {{end}}"} + + //Extensions + otm["apiEndpointsDS"] = &OutputTemplate{TemplateName: "apiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} + otm["policyApiEndpointsDS"] = &OutputTemplate{TemplateName: "policyApiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} + otm["apiHostnameCoverageDS"] = &OutputTemplate{TemplateName: "apiHostnameCoverageDS", TableTitle: "Config ID|Config Name|Version|Status|Has Match Target|Hostname", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .HostnameCoverage}}{{if $index}},{{end}}{{.Configuration.ID}}|{{.Configuration.Name}}|{{.Configuration.Version}}|{{.Status}}|{{.HasMatchTarget}}|{{.Hostname}}{{end}}"} otm["configuration"] = &OutputTemplate{TemplateName: "Configurations", TableTitle: "Config_id|Name|Latest_version|Version_active_in_staging|Version_active_in_production", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .Configurations}}{{if $index}},{{end}}{{.ID}}|{{.Name}}|{{.LatestVersion}}|{{.StagingVersion}}|{{.ProductionVersion}}{{end}}"} otm["configurationVersion"] = &OutputTemplate{TemplateName: "ConfigurationVersion", TableTitle: "Version Number|Staging Status|Production Status", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .VersionList}}{{if $index}},{{end}}{{.Version}}|{{.Staging.Status}}|{{.Production.Status}}{{end}}"} + otm["contractsgroupsDS"] = &OutputTemplate{TemplateName: "contractsgroupsDS", TableTitle: "Contract|Groupid|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .ContractGroups}}{{if $index}},{{end}}{{.ContractID}}|{{.DisplayName}}|{{.GroupID}}{{end}}"} + otm["failoverHostnamesDS"] = &OutputTemplate{TemplateName: "failoverHostnamesDS", TableTitle: "Config ID|Config Version", TemplateType: "TABULAR", TemplateString: "{{.ConfigID}}|{{.ConfigVersion}}"} otm["penaltyBoxDS"] = &OutputTemplate{TemplateName: "penaltyBoxDS", TableTitle: "PenaltyBoxProtection|Action", TemplateType: "TABULAR", TemplateString: "{{.PenaltyBoxProtection}}|{{.Action}}"} @@ -101,6 +113,9 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["selectedHosts"] = &OutputTemplate{TemplateName: "selectedHosts", TableTitle: "Hostnames", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .SelectedHosts}}{{if $index}},{{end}}{{.}}{{end}}"} otm["selectedHostsDS"] = &OutputTemplate{TemplateName: "selectedHosts", TableTitle: "Hostnames", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .HostnameList}}{{if $index}},{{end}}{{.Hostname}}{{end}}"} otm["selectedHosts.tf"] = &OutputTemplate{TemplateName: "selectedHosts.tf", TableTitle: "Hostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"appsecselectedhostnames\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} + otm["siemsettingsDS"] = &OutputTemplate{TemplateName: "siemsettingsDS", TableTitle: "Enable For All Policies|Enable Siem|Enabled Botman Siem Events|Siem Definition ID|FirewallPolicyIds", TemplateType: "TABULAR", TemplateString: "{{.EnableForAllPolicies}}|{{.EnableSiem}}|{{.EnabledBotmanSiemEvents}}|{{.SiemDefinitionID}}|{{.FirewallPolicyIds}}"} + otm["siemDefinitionsDS"] = &OutputTemplate{TemplateName: "siemDefinitionsDS", TableTitle: "ID|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .SiemDefinitions}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} + otm["ratePolicies"] = &OutputTemplate{TemplateName: "ratePolicies", TableTitle: "ID|Policy Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .RatePolicies}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} otm["matchTargets"] = &OutputTemplate{TemplateName: "matchTargets", TableTitle: "ID|PolicyID", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .MatchTargets.WebsiteTargets}}{{if $index}},{{end}}{{.ID}}|{{.SecurityPolicy.PolicyID}}{{end}}"} otm["matchTargetDS"] = &OutputTemplate{TemplateName: "matchTarget", TableTitle: "ID|PolicyID", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .MatchTargets.WebsiteTargets}}{{if $index}},{{end}}{{.TargetID}}|{{.SecurityPolicy.PolicyID}}{{end}}"} @@ -111,6 +126,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["reputationProfilesActions"] = &OutputTemplate{TemplateName: "reputationProfilesActions", TableTitle: "ID|Action", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .ReputationProfiles}}{{if $index}},{{end}}{{.ID}}| {{.Action}}{{end}}"} otm["customRules"] = &OutputTemplate{TemplateName: "customRules", TableTitle: "ID|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .CustomRules}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} + otm["customDenyDS"] = &OutputTemplate{TemplateName: "customDenyDS", TableTitle: "ID|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .CustomDenyList}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} otm["customRuleActions"] = &OutputTemplate{TemplateName: "customRuleActions", TableTitle: "ID|Action", TemplateType: "TABULAR", TemplateString: "{{range .SecurityPolicies}}{{range $index, $element := .CustomRuleActions}}{{if $index}},{{end}}{{.ID}}|{{.Action}}{{end}}{{end}}"} otm["customRuleAction"] = &OutputTemplate{TemplateName: "customRuleAction", TableTitle: "ID|Name|Action", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .}}{{if $index}},{{end}}{{.RuleID}}|{{.Name}} |{{.Action}}{{end}}"} otm["ratePolicyActions"] = &OutputTemplate{TemplateName: "ratePolicyActions", TableTitle: "ID|Ipv4Action|Ipv6Action", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .RatePolicyActions}}{{if $index}},{{end}}{{.ID}}| {{.Ipv4Action}}|{{.Ipv6Action}}{{end}}"} diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/ApiHostnameCoverage.json b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/ApiHostnameCoverage.json new file mode 100644 index 000000000..a79d1437f --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/ApiHostnameCoverage.json @@ -0,0 +1,1939 @@ +[ + { + "hostnameCoverage": [ + { + "hasMatchTarget": false, + "hostname": "interlude.org.uk", + "policyNames": [], + "status": "not_covered" + }, + { + "configuration": { + "id": 3644, + "name": "WAF Security File", + "version": 12 + }, + "hasMatchTarget": true, + "hostname": "arm.slackware.com", + "policyNames": [ + "Slackware Sites" + ], + "status": "covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.350.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "rbaraut.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "fareportal-fppowerhotelxml.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "daveyshafik.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.schan-sf.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "2.bendell.ca", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "captainakamai-insecure.captainwhite.cool", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "apitest1.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "philipbrown.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "bfrancisproperty.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "anblanco.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.priyankasharma-delhi.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "*.canipush.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "gmt-demo.iwishtechdemoswere.cool", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "nverkland.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "kweechuan.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.tvaliji-london.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "kimmich.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.kirsten.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "s1.daveyshafik.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "static.hk.zalora.net.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "*-msltest-lh.akamaihd.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "test.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "ipa.akamaitools.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "mjaganna.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "nael.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "api.irresistibleapis.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.iahmed-yyz.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "configuration": { + "id": 3644, + "name": "WAF Security File", + "version": 12 + }, + "hasMatchTarget": true, + "hostname": "www.colinbendell.com", + "policyNames": [ + "Bot" + ], + "status": "covered" + }, + { + "hasMatchTarget": false, + "hostname": "jakebr.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "data.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "imoppty.akam.ai", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "edge2017-jramer.www.wp1.akamaiuweb.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "biscuit.org.uk.edgesuite.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.leokimseoul.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.aevans-seattle.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "yoav.ws", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.ezhang-sydney.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "rgamoji.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jennip.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "stage-www.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.261.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "prod.config-as-code.web.astronaut.training", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dereka.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "180125johnh.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "openapidemo.akamaized.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "static.urbancrawlapp.com", + "policyNames": [], + "status": "not_covered" + }, + { + "configuration": { + "id": 3644, + "name": "WAF Security File", + "version": 12 + }, + "hasMatchTarget": true, + "hostname": "*.colinbendell.com", + "policyNames": [ + "Bot" + ], + "status": "covered" + }, + { + "hasMatchTarget": false, + "hostname": "h1cwnd24.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "sjevsejev.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "*.liquidmatrix.org", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "kirsten.im.edgesuite.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "4.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "shouldipush.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.dquintero.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "push-ext.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "base-template.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "gtm-demo.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "lawlait.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.jthur-ams.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "fst.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "api.urbancrawlapp.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "im-florist.akamaiflowershop.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "test68.randomnoise.us", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "golang.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.bmt-shtakuma.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "justogusto1212.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.westest-waterloo.world-tour.akamaidevveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "*.geekgonenomad.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "tp7.utkarshgoel.in", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.aviso-madrid18.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "rodin.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "kj.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "www.biscuits.org.uk", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "pl242v_sea02.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "purgedemo.example.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "ak2.vaz.ac", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.168.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "imrtks.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "soorajb.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "shock1.iwishtechdemoswere.cool.edgesuite-staging.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "khunter.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.nmohammad-sfo.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jake.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "rdias-london.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "cztest2.sanbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dmbsdemo8.akamaized.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "geekgonenomad.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "khide.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev-www.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "pravin-costco.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "devhack7.sanguinesoul.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dshafik.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dquintero.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "configuration": { + "id": 3644, + "name": "WAF Security File", + "version": 12 + }, + "hasMatchTarget": true, + "hostname": "bendell.ca", + "policyNames": [ + "Bot" + ], + "status": "covered" + }, + { + "hasMatchTarget": false, + "hostname": "mk12345.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "test111.randomnoise.us", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "www.kirstenscats.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jgarza-sea5-dev.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dh.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jackieliuawesome.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "faster.akamaidev.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "static-hk.zacdn.com.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "terraform-example-1.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jgarza-sea5.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.krao-bangalore.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "akadev2tree.interlude.org.uk.internal", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "saurabh-demo.akamaized.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.config-as-code.web.astronaut.training", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "*.zacdn.com.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "vangeler.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "edgeworkers.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dynamic.zacdn.com.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.rdias-london.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "edgeworld.web.astronaut.training", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "2.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "domwuttke.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "johnsmith-wt2.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.jgarza-sea.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "h1cwnd10.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "3.bendell.ca", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.brandonyap1-sydney.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.sangjinn-seoul.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "shock1.iwishtechdemoswere.cool", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "pravin-costco-dev.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.jcao_sydney.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "push-san.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "www.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "robertzimmardi.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "*.akamaihd.net.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "tylake-addhosts.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "api-acs.urbancrawlapp.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "tp8.utkarshgoel.in", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "1.bendell.ca", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "static-sg.zacdn.com.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dmopendemo.akamaized.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "img.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "pl242v_att.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "test97.randomnoise.us", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jackieliu.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "netstorage-test.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.24.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "www.barneys.me.uk", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.171.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "akadev.interlude.org.uk", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "ak.vaz.ac", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "*.daveyshafik.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.domwuttke.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "www.prophostname1-origin1.iwishtechdemoswere.cool", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "qa.bendell.ca", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "javier-madrid.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "test67.randomnoise.us", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.jgarza-01.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "aarondotsteele.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "eddyl.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.5.gensess.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "testactivation2.example.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.dlovellsyd18.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.hermanw-sanfrancisco.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jose-ph.worldtour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "configuration": { + "id": 3644, + "name": "WAF Security File", + "version": 12 + }, + "hasMatchTarget": true, + "hostname": "www.slackware.com", + "policyNames": [ + "Slackware Sites" + ], + "status": "covered" + }, + { + "hasMatchTarget": false, + "hostname": "*.msltest-lh.akamaihd.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "static.sg.zalora.net.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "api.zalora.sg.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dom.akamai.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.synedra.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jgarza3.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "javiergarza-20180911.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.princesspolymath.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "joncarva3.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "pkok.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.219.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.hwang-la2019.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dmbsdemo7.akamaized.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.hsn-bellevue.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "tp9.utkarshgoel.in", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "5.bendell.ca", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.316.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "raitaarakawa.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "tomonori.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "qa-www.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "tai.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "api.zalora.com.hk.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "purge.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "siraj01.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.ychao-singapore.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "akaivadeveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "vpdemo.akamaiedge.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "akamai7devhack.meepity.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.pcoirault-sydney.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "urbancrawlapp.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "catfish.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "sravan1.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "*.api.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "zacdn.com.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "ak1.vaz.ac", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "amazon.iwishtechdemoswere.cool", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "api.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "kohls.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.275.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "cloudmonitor.princesspolymath.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "stage.config-as-code.web.astronaut.training", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "*.yoav.ws", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "www.kirstenscats.com.edgesuite.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.barrington.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "devops.iwishtechdemoswere.cool", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "edge2017-ezpc.www.wpl.akamaiuweb.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "zstatictw02-a.akamaihd.net.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "joncarva.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "www.akamaiapibootcamp.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "ankursi.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "bc.akamaiapibootcamp.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "fareportal-mobile-xml.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "meetup2.example.com", + "policyNames": [], + "status": "not_covered" + }, + { + "configuration": { + "id": 3644, + "name": "WAF Security File", + "version": 12 + }, + "hasMatchTarget": true, + "hostname": "www.biscuit.org.uk", + "policyNames": [ + "Slackware Sites" + ], + "status": "covered" + }, + { + "hasMatchTarget": false, + "hostname": "h1cwnd16.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "akamaitools.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "awesome2.iwishtechdemoswere2.cool", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "static-sg.zalora.net.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jgarza-muc-int.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.328.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "failover.akadev.interlude.org.uk", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "smakki.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "js.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "cloudmonitor.akamaitools.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "erahman.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "kirsten.im.edgesuite-staging.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "www.shouldipush.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.dsouzaa8g-sydney.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "sstest.akamaitools.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "edge2017-ah01.www.wpl.akamaiuweb.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "h1cwnd32.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.jgarza-20180928.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "www.urbancrawlapp.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "gsiewhia.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "akamaiapibootcamp.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "shock1.iwishtechdemoswere.cool.edgesuite.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.money-mitch.world-tour.akamaidevelpoer.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "1.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "2tree.singledns.interlude.org.uk", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "soha.io.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "2ndakadev2tree.interlude.org.uk", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "test72.randomnoise.us", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "push.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "tylake.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "wp-akamai.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "bootcamp.akamaiapibootcamp.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "mwisborg.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "brain.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "diegoproperty.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.173.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "h2cwnd24.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "h2cwnd32.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "srjones.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "static-hg.zacdn.com.akamaiedgedemo.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.donfr-bellevue.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "4.bendell.ca", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "canipush.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "testactivation.example.com", + "policyNames": [], + "status": "not_covered" + }, + { + "configuration": { + "id": 3644, + "name": "WAF Security File", + "version": 12 + }, + "hasMatchTarget": true, + "hostname": "*.bendell.ca", + "policyNames": [ + "Bot" + ], + "status": "covered" + }, + { + "hasMatchTarget": false, + "hostname": "devops7.iwishtechdemoswere.cool", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "www.kirstenscats.com.edgesuite-staging.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "improxy.akam.ai", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "usage.akam.ai", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "edge2017-chad.www.wp1.akamaiuweb.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "kirsten.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.akamaiapibootcamp.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "s2.daveyshafik.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "akamai7devhack.akamaized.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "*.akamaidev.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.nverkland.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "h2cwnd16.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "akadev2tree.interlude.org.uk", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.mkoerner.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "acedergr.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "www.akamaitools.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "ksinghchapitestdevops.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "3.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "angautam.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "achoi.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev-www.akamaiedgedemo.com.local", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.hgsydney.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "docs.slackware.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "bchitrakar.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "psalvado.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "benlin.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "www.irresistibleapis.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "production.kirsten", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "shashi1.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.tarambale.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "*.shouldipush.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "ksinghchtest.sanbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "h2cwnd10.colinbendell.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "margaretkho.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "devhack4.iwishtechdemoswere.cool", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.ferdinand-amsterdamn", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "vlours.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "papin.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "dev.ogravier-paris.world-tour.akamaideveloper.net", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "schan.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "george-bc.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.184.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "n.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "jenkins.4.gensess.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "testing123.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "kweechuan1.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "anokulka.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "tomhartnett.sandbox.akamaideveloper.com", + "policyNames": [], + "status": "not_covered" + }, + { + "hasMatchTarget": false, + "hostname": "logstash.sztykman.com", + "policyNames": [], + "status": "not_covered" + } + ] + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf new file mode 100644 index 000000000..b9b880e56 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf @@ -0,0 +1,7 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_api_hostname_coverage" "hostname_coverage" { +} + diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/ApiHostnameCoverageMatchTargets.json b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/ApiHostnameCoverageMatchTargets.json new file mode 100644 index 000000000..9c25cac1e --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/ApiHostnameCoverageMatchTargets.json @@ -0,0 +1,85 @@ +{ + "matchTargets": { + "apiTargets": [], + "websiteTargets": [ + { + "bypassNetworkLists": [ + { + "id": "1410_BYPASSWAFLIST", + "name": "gus - BypassWAFList" + } + ], + "configId": 2481, + "configVersion": 428, + "defaultFile": "NO_MATCH", + "effectiveSecurityControls": { + "applyApplicationLayerControls": true, + "applyBotmanControls": true, + "applyNetworkLayerControls": true, + "applyPageIntegrityControls": false, + "applyRateControls": true, + "applyReputationControls": true, + "applySlowPostControls": true + }, + "fileExtensions": [], + "filePaths": [ + "/content/tealeaf" + ], + "firewallPolicy": { + "evaluated": false, + "policyId": "GRD_4186", + "policyName": "Grainger USA", + "policySecurityControls": { + "applyApiConstraints": false, + "applyApplicationLayerControls": true, + "applyBotmanControls": true, + "applyNetworkLayerControls": true, + "applyPageIntegrityControls": false, + "applyRateControls": true, + "applyReputationControls": true, + "applySlowPostControls": true + } + }, + "hostnames": [ + "failover-m.lt.gcom.grainger.com", + "www.grainger.com", + "m.grainger.com", + "failover-m.lt2.gcom.grainger.com", + "keepstockselectiontool.grainger.com", + "failover-m.grainger.com", + "m.new.grainger.com", + "template-www.grainger.com", + "a.gc1.co", + "safety.grainger.com", + "static.grainger.net", + "failover-www.grainger.com", + "s.gc1.co", + "static.grainger.com", + "lt2.gcom.grainger.com", + "m.lt2.gcom.grainger.com", + "images.grainger.com", + "akamai-test.qa.graingercloud.com", + "failover-lt2.gcom.grainger.com", + "www.keepstocksecuredemo.com", + "waffailover.grainger.com", + "espanol.grainger.com" + ], + "isNegativeFileExtensionMatch": false, + "isNegativePathMatch": false, + "isTargetSecurityControlsEditable": false, + "logicalId": 1730010, + "sequence": 3, + "targetId": 2555705, + "targetSecurityControls": { + "applyApplicationLayerControls": true, + "applyNetworkLayerControls": true, + "applyPageIntegrityControls": false, + "applyRateControls": true, + "applyReputationControls": true, + "applySlowPostControls": true + }, + "type": "website" + } + ] + } +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf new file mode 100644 index 000000000..97dfd9df2 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf @@ -0,0 +1,9 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_api_hostname_coverage_match_targets" "test" { + config_id = 43253 + version = 7 + hostname = "example.com" +} diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageOverlapping/ApiHostnameCoverageOverlapping.json b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageOverlapping/ApiHostnameCoverageOverlapping.json new file mode 100644 index 000000000..7a4f417ea --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageOverlapping/ApiHostnameCoverageOverlapping.json @@ -0,0 +1,9 @@ +[ + { + "type": "https://problems.luna.akamaiapis.net/appsec/error-types/INVALID-INPUT-ERROR", + "status": 400, + "title": "Invalid Input Error", + "detail": "Hostname should not be null or empty.", + "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/bed82d19-4bb8-48ea-a9e8-8f89979bf63e" + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageOverlapping/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageOverlapping/match_by_id.tf new file mode 100644 index 000000000..e50aaeae4 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageOverlapping/match_by_id.tf @@ -0,0 +1,9 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_api_hostname_coverage_overlapping" "test" { + config_id = 43253 + version = 7 + hostname = "example.com" +} diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list_description_test.go b/pkg/providers/networklists/resource_akamai_networklist_network_list_description_test.go index 8a82d621f..a9cefc932 100644 --- a/pkg/providers/networklists/resource_akamai_networklist_network_list_description_test.go +++ b/pkg/providers/networklists/resource_akamai_networklist_network_list_description_test.go @@ -23,12 +23,12 @@ func TestAccAkamaiNetworkListDescription_res_basic(t *testing.T) { client.On("GetNetworkListDescription", mock.Anything, // ctx is irrelevant for this test - networklists.GetNetworkListDescriptionRequest{UniqueID: "79538_MARTINNETWORKLIST", Name: "Test"}, + networklists.GetNetworkListDescriptionRequest{UniqueID: "79538_MARTINNETWORKLIST", Name: "Martin Network List"}, ).Return(&cr, nil) client.On("UpdateNetworkListDescription", mock.Anything, // ctx is irrelevant for this test - networklists.UpdateNetworkListDescriptionRequest{UniqueID: "79538_MARTINNETWORKLIST", Name: "Test", Description: "Description"}, + networklists.UpdateNetworkListDescriptionRequest{UniqueID: "79538_MARTINNETWORKLIST", Name: "Martin Network List", Description: "Notes about this network list"}, ).Return(&cu, nil) useClient(client, func() { diff --git a/pkg/providers/providers.go b/pkg/providers/providers.go index 821f945d8..d87634a9a 100644 --- a/pkg/providers/providers.go +++ b/pkg/providers/providers.go @@ -5,5 +5,7 @@ import ( _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/appsec" _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/dns" _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/gtm" + + _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/networklists" _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/property" ) From 5d08674e5c43959ae0a4bef592b7919b20776192 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 6 Jan 2021 09:55:50 -0600 Subject: [PATCH 003/215] Add eval hosts fix template --- pkg/providers/appsec/appsec_test.go | 90 ++++++++++++ .../data_akamai_appsec_api_endpoints_test.go | 2 +- .../data_akamai_appsec_eval_hostnames.go | 103 ++++++++++++++ .../data_akamai_appsec_eval_hostnames_test.go | 43 ++++++ pkg/providers/appsec/provider.go | 3 + .../resource_akamai_appsec_eval_host.go | 129 ++++++++++++++++++ .../resource_akamai_appsec_eval_host_test.go | 52 +++++++ ...esource_akamai_appsec_eval_protect_host.go | 129 ++++++++++++++++++ ...ce_akamai_appsec_eval_protect_host_test.go | 52 +++++++ pkg/providers/appsec/templates.go | 2 +- .../match_by_id.tf | 1 - .../TestDSApiEndpoints/match_by_id.tf | 2 +- .../TestDSEvalHostnames/EvalHostnames.json | 38 ++++++ .../TestDSEvalHostnames/match_by_id.tf | 9 ++ .../testdata/TestResEvalHost/EvalHost.json | 9 ++ .../testdata/TestResEvalHost/match_by_id.tf | 12 ++ .../EvalProtectHost.json | 5 + .../TestResEvalProtectHost/match_by_id.tf | 18 +++ 18 files changed, 695 insertions(+), 4 deletions(-) create mode 100644 pkg/providers/appsec/data_akamai_appsec_eval_hostnames.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_eval_hostnames_test.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_eval_host.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_eval_protect_host.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_eval_protect_host_test.go create mode 100644 pkg/providers/appsec/testdata/TestDSEvalHostnames/EvalHostnames.json create mode 100644 pkg/providers/appsec/testdata/TestDSEvalHostnames/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResEvalHost/EvalHost.json create mode 100644 pkg/providers/appsec/testdata/TestResEvalHost/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResEvalProtectHost/EvalProtectHost.json create mode 100644 pkg/providers/appsec/testdata/TestResEvalProtectHost/match_by_id.tf diff --git a/pkg/providers/appsec/appsec_test.go b/pkg/providers/appsec/appsec_test.go index 3cee80330..386e8c0bd 100644 --- a/pkg/providers/appsec/appsec_test.go +++ b/pkg/providers/appsec/appsec_test.go @@ -131,6 +131,36 @@ func (p *mockappsec) GetApiEndpoints(ctx context.Context, params appsec.GetApiEn return args.Get(0).(*appsec.GetApiEndpointsResponse), args.Error(1) } +func (p *mockappsec) GetApiHostnameCoverage(ctx context.Context, params appsec.GetApiHostnameCoverageRequest) (*appsec.GetApiHostnameCoverageResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetApiHostnameCoverageResponse), args.Error(1) +} + +func (p *mockappsec) GetApiHostnameCoverageOverlapping(ctx context.Context, params appsec.GetApiHostnameCoverageOverlappingRequest) (*appsec.GetApiHostnameCoverageOverlappingResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetApiHostnameCoverageOverlappingResponse), args.Error(1) +} + +func (p *mockappsec) GetApiHostnameCoverageMatchTargets(ctx context.Context, params appsec.GetApiHostnameCoverageMatchTargetsRequest) (*appsec.GetApiHostnameCoverageMatchTargetsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetApiHostnameCoverageMatchTargetsResponse), args.Error(1) +} + func (p *mockappsec) GetApiRequestConstraints(ctx context.Context, params appsec.GetApiRequestConstraintsRequest) (*appsec.GetApiRequestConstraintsResponse, error) { args := p.Called(ctx, params) @@ -848,6 +878,66 @@ func (p *mockappsec) UpdateWAFMode(ctx context.Context, params appsec.UpdateWAFM return args.Get(0).(*appsec.UpdateWAFModeResponse), args.Error(1) } +func (p *mockappsec) GetEvalProtectHosts(ctx context.Context, params appsec.GetEvalProtectHostsRequest) (*appsec.GetEvalProtectHostsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetEvalProtectHostsResponse), args.Error(1) +} + +func (p *mockappsec) UpdateEvalProtectHost(ctx context.Context, params appsec.UpdateEvalProtectHostRequest) (*appsec.UpdateEvalProtectHostResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.UpdateEvalProtectHostResponse), args.Error(1) +} + +func (p *mockappsec) UpdateEvalHost(ctx context.Context, params appsec.UpdateEvalHostRequest) (*appsec.UpdateEvalHostResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.UpdateEvalHostResponse), args.Error(1) +} + +func (p *mockappsec) GetEvalProtectHost(ctx context.Context, params appsec.GetEvalProtectHostRequest) (*appsec.GetEvalProtectHostResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetEvalProtectHostResponse), args.Error(1) +} + +func (p *mockappsec) GetEvalHosts(ctx context.Context, params appsec.GetEvalHostsRequest) (*appsec.GetEvalHostsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetEvalHostsResponse), args.Error(1) +} + +func (p *mockappsec) GetEvalHost(ctx context.Context, params appsec.GetEvalHostRequest) (*appsec.GetEvalHostResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetEvalHostResponse), args.Error(1) +} + func (p *mockappsec) GetEval(ctx context.Context, params appsec.GetEvalRequest) (*appsec.GetEvalResponse, error) { args := p.Called(ctx, params) diff --git a/pkg/providers/appsec/data_akamai_appsec_api_endpoints_test.go b/pkg/providers/appsec/data_akamai_appsec_api_endpoints_test.go index 19c0e35ba..6b137bdda 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_endpoints_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_endpoints_test.go @@ -30,7 +30,7 @@ func TestAccAkamaiApiEndpoints_data_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestDSApiEndpoints/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_api_endpoints.test", "id", "43253"), + resource.TestCheckResourceAttr("data.akamai_appsec_api_endpoints.test", "id", "296100"), ), }, }, diff --git a/pkg/providers/appsec/data_akamai_appsec_eval_hostnames.go b/pkg/providers/appsec/data_akamai_appsec_eval_hostnames.go new file mode 100644 index 000000000..083acb222 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_eval_hostnames.go @@ -0,0 +1,103 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceEvalHostnames() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceEvalHostnamesRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": &schema.Schema{ + Type: schema.TypeInt, + Required: true, + }, + "hostnames": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceEvalHostnamesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceEvalHostnamesRead") + + getEvalHostnames := appsec.GetEvalHostsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalHostnames.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalHostnames.Version = version + + evalhostnames, err := client.GetEvalHosts(ctx, getEvalHostnames) + if err != nil { + logger.Errorf("calling 'getEvalHostnames': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "evalHostnamesDS", evalhostnames) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(evalhostnames) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + newhdata := make([]string, 0, len(evalhostnames.Hostnames)) + + for _, hosts := range evalhostnames.Hostnames { + newhdata = append(newhdata, hosts) + } + + if err := d.Set("hostnames", newhdata); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(strconv.Itoa(getEvalHostnames.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_eval_hostnames_test.go b/pkg/providers/appsec/data_akamai_appsec_eval_hostnames_test.go new file mode 100644 index 000000000..c62478527 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_eval_hostnames_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiEvalHostnames_data_basic(t *testing.T) { + t.Run("match by EvalHostnames ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetEvalHostsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSEvalHostnames/EvalHostnames.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetEvalHostnames", + mock.Anything, // ctx is irrelevant for this test + appsec.GetEvalHostsRequest{ConfigID: 43253, Version: 7}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSEvalHostnames/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_eval_hostnames.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index 7b5b88b4f..5d43d3bbf 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -78,6 +78,7 @@ func Provider() *schema.Provider { "akamai_appsec_custom_rule_actions": dataSourceCustomRuleActions(), "akamai_appsec_export_configuration": dataSourceExportConfiguration(), "akamai_appsec_eval": dataSourceEval(), + "akamai_appsec_eval_hostnames": dataSourceEvalHostnames(), "akamai_appsec_eval_rule_actions": dataSourceEvalRuleActions(), "akamai_appsec_eval_rule_condition_exception": dataSourceEvalRuleConditionException(), "akamai_appsec_failover_hostnames": dataSourceFailoverHostnames(), @@ -115,6 +116,8 @@ func Provider() *schema.Provider { "akamai_appsec_selected_hostnames": resourceSelectedHostname(), "akamai_appsec_security_policy_clone": resourceSecurityPolicyClone(), "akamai_appsec_eval": resourceEval(), + "akamai_appsec_eval_host": resourceEvalHost(), + "akamai_appsec_eval_protect_host": resourceEvalProtectHost(), "akamai_appsec_eval_rule_action": resourceEvalRuleAction(), "akamai_appsec_eval_rule_condition_exception": resourceEvalRuleConditionException(), "akamai_appsec_ip_geo": resourceIPGeo(), diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_host.go b/pkg/providers/appsec/resource_akamai_appsec_eval_host.go new file mode 100644 index 000000000..432ca4a7b --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_host.go @@ -0,0 +1,129 @@ +package appsec + +import ( + "context" + "errors" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceEvalHost() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceEvalHostUpdate, + ReadContext: resourceEvalHostRead, + UpdateContext: resourceEvalHostUpdate, + DeleteContext: resourceEvalHostDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "hostnames": { + Type: schema.TypeList, + Required: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func resourceEvalHostRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceEvalHostRead") + + getEvalHost := appsec.GetEvalHostRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalHost.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalHost.Version = version + + evalhost, err := client.GetEvalHost(ctx, getEvalHost) + if err != nil { + logger.Errorf("calling 'getEvalHost': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "evalHostDS", evalhost) + if err == nil { + d.Set("output_text", outputtext) + } + + d.SetId(strconv.Itoa(getEvalHost.ConfigID)) + + return nil +} + +func resourceEvalHostDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + + return schema.NoopContext(nil, d, m) +} + +func resourceEvalHostUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceEvalHostUpdate") + + updateEvalHost := appsec.UpdateEvalHostRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalHost.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalHost.Version = version + + hostnames := d.Get("hostnames").([]interface{}) + hn := make([]string, 0, len(hostnames)) + + for _, h := range hostnames { + hn = append(hn, h.(string)) + + } + updateEvalHost.Hostnames = hn + + _, erru := client.UpdateEvalHost(ctx, updateEvalHost) + if erru != nil { + logger.Errorf("calling 'updateEvalHost': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceEvalHostRead(ctx, d, m) +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go new file mode 100644 index 000000000..ad4d8deb4 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go @@ -0,0 +1,52 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiEvalHost_res_basic(t *testing.T) { + t.Run("match by EvalHost ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateEvalHostResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResEvalHost/EvalHost.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetEvalHostResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResEvalHost/EvalHost.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetEvalHost", + mock.Anything, // ctx is irrelevant for this test + appsec.GetEvalHostRequest{ConfigID: 43253, Version: 7}, + ).Return(&cr, nil) + + client.On("UpdateEvalHost", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateEvalHostRequest{ConfigID: 43253, Version: 7}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResEvalHost/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_eval_host.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host.go b/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host.go new file mode 100644 index 000000000..ccab73d5b --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host.go @@ -0,0 +1,129 @@ +package appsec + +import ( + "context" + "errors" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceEvalProtectHost() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceEvalProtectHostUpdate, + ReadContext: resourceEvalProtectHostRead, + UpdateContext: resourceEvalProtectHostUpdate, + DeleteContext: resourceEvalProtectHostDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "hostnames": { + Type: schema.TypeList, + Required: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func resourceEvalProtectHostRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceEvalProtectHostRead") + + getEvalProtectHost := appsec.GetEvalProtectHostRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalProtectHost.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalProtectHost.Version = version + + evalprotecthost, err := client.GetEvalProtectHost(ctx, getEvalProtectHost) + if err != nil { + logger.Errorf("calling 'getEvalProtectHost': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "evalProtectHostDS", evalprotecthost) + if err == nil { + d.Set("output_text", outputtext) + } + + d.SetId(strconv.Itoa(getEvalProtectHost.ConfigID)) + + return nil +} + +func resourceEvalProtectHostDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + + return schema.NoopContext(nil, d, m) +} + +func resourceEvalProtectHostUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceEvalProtectHostUpdate") + + updateEvalProtectHost := appsec.UpdateEvalProtectHostRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalProtectHost.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalProtectHost.Version = version + + hostnames := d.Get("hostnames").([]interface{}) + hn := make([]string, 0, len(hostnames)) + + for _, h := range hostnames { + hn = append(hn, h.(string)) + + } + updateEvalProtectHost.Hostnames = hn + + _, erru := client.UpdateEvalProtectHost(ctx, updateEvalProtectHost) + if erru != nil { + logger.Errorf("calling 'updateEvalProtectHost': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceEvalProtectHostRead(ctx, d, m) +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host_test.go new file mode 100644 index 000000000..0555c49b4 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host_test.go @@ -0,0 +1,52 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiEvalProtectHost_res_basic(t *testing.T) { + t.Run("match by EvalProtectHost ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateEvalProtectHostResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResEvalProtectHost/EvalProtectHost.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetEvalProtectHostResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResEvalProtectHost/EvalProtectHost.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetEvalProtectHost", + mock.Anything, // ctx is irrelevant for this test + appsec.GetEvalProtectHostRequest{ConfigID: 43253, Version: 7}, + ).Return(&cr, nil) + + client.On("UpdateEvalProtectHost", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateEvalProtectHostRequest{ConfigID: 43253, Version: 7}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResEvalProtectHost/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_eval_protect_host.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 1472cfd76..4edfa859c 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -132,7 +132,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["ratePolicyActions"] = &OutputTemplate{TemplateName: "ratePolicyActions", TableTitle: "ID|Ipv4Action|Ipv6Action", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .RatePolicyActions}}{{if $index}},{{end}}{{.ID}}| {{.Ipv4Action}}|{{.Ipv6Action}}{{end}}"} otm["RulesDS"] = &OutputTemplate{TemplateName: "RulesDS", TableTitle: "ID|Action", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .RuleActions}}{{if $index}},{{end}}{{.ID}}|{{.Action}}{{end}}"} otm["EvalRulesActionsDS"] = &OutputTemplate{TemplateName: "evalRulesActions", TableTitle: "ID|Action", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .RuleActions}}{{if $index}},{{end}}{{.ID}}| {{.Action}}{{end}}"} - + otm["evalHostnamesDS"] = &OutputTemplate{TemplateName: "evalHostnamesDS", TableTitle: "Hostnames", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .Hostnames}}{{if $index}},{{end}}{{.}}{{end}}"} otm["rulesets"] = &OutputTemplate{TemplateName: "rulesets", TableTitle: "ID|Name(Title)", TemplateType: "TABULAR", TemplateString: "{{range .Rulesets}}{{range $index, $element := .Rules}}{{if $index}},{{end}}{{.ID}}| {{.Title}}{{end}}{{end}}"} otm["securityPolicies"] = &OutputTemplate{TemplateName: "securityPolicies", TableTitle: "ID|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .SecurityPolicies}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} otm["securityPoliciesDS"] = &OutputTemplate{TemplateName: "securityPolicies", TableTitle: "ID|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .Policies}}{{if $index}},{{end}}{{.PolicyID}}|{{.PolicyName}}{{end}}"} diff --git a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf index 6b8a7fbf4..e6ca50451 100644 --- a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf @@ -5,6 +5,5 @@ provider "akamai" { data "akamai_appsec_advanced_settings_logging" "logging" { config_id = 43253 version = 7 - security_policy_id = "AAAA_81230" } diff --git a/pkg/providers/appsec/testdata/TestDSApiEndpoints/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiEndpoints/match_by_id.tf index 8ca12a8ed..304ecfe22 100644 --- a/pkg/providers/appsec/testdata/TestDSApiEndpoints/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSApiEndpoints/match_by_id.tf @@ -8,6 +8,6 @@ provider "akamai" { data "akamai_appsec_api_endpoints" "test" { config_id = 43253 version = 7 - security_policy_id = "AAAA_81230" + // name = var.api_endpoint_name } \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSEvalHostnames/EvalHostnames.json b/pkg/providers/appsec/testdata/TestDSEvalHostnames/EvalHostnames.json new file mode 100644 index 000000000..fc05a0cfe --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSEvalHostnames/EvalHostnames.json @@ -0,0 +1,38 @@ +[ + { + "attackGroupActions": [ + { + "action": "none", + "group": "TOOL" + }, + { + "action": "none", + "group": "PROTOCOL" + }, + { + "action": "none", + "group": "SQL" + }, + { + "action": "none", + "group": "XSS" + }, + { + "action": "none", + "group": "LFI" + }, + { + "action": "none", + "group": "RFI" + }, + { + "action": "none", + "group": "CMDI" + }, + { + "action": "none", + "group": "PLATFORM" + } + ] + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSEvalHostnames/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSEvalHostnames/match_by_id.tf new file mode 100644 index 000000000..961c51221 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSEvalHostnames/match_by_id.tf @@ -0,0 +1,9 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_eval_hostnames" "eval_hostnames" { + config_id = 43253 + version = 7 +} + diff --git a/pkg/providers/appsec/testdata/TestResEvalHost/EvalHost.json b/pkg/providers/appsec/testdata/TestResEvalHost/EvalHost.json new file mode 100644 index 000000000..60f9d6576 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResEvalHost/EvalHost.json @@ -0,0 +1,9 @@ +[ + { + "type": "https://problems.luna.akamaiapis.net/appsec/error-types/INVALID-INPUT-ERROR", + "status": 400, + "title": "Invalid Input Error", + "detail": "Config(43253) is not of type WAP (Web Application Protector).", + "instance": "https://problems.luna.akamaiapis.net/appsec/error-instances/b6a06093-2ea0-456a-8056-7d0edeb3c311" + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResEvalHost/match_by_id.tf b/pkg/providers/appsec/testdata/TestResEvalHost/match_by_id.tf new file mode 100644 index 000000000..4e1042bf6 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResEvalHost/match_by_id.tf @@ -0,0 +1,12 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +resource "akamai_appsec_eval_host" "eval_host" { + config_id = 43253 + version = 7 + hostnames = ["example.com"] +} + + + diff --git a/pkg/providers/appsec/testdata/TestResEvalProtectHost/EvalProtectHost.json b/pkg/providers/appsec/testdata/TestResEvalProtectHost/EvalProtectHost.json new file mode 100644 index 000000000..01f62e40d --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResEvalProtectHost/EvalProtectHost.json @@ -0,0 +1,5 @@ +[ + { + "action": "none" + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResEvalProtectHost/match_by_id.tf b/pkg/providers/appsec/testdata/TestResEvalProtectHost/match_by_id.tf new file mode 100644 index 000000000..071e79d31 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResEvalProtectHost/match_by_id.tf @@ -0,0 +1,18 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +resource "akamai_appsec_eval_protect_host" "protect_host" { + config_id = 43253 + version = 7 + hostnames = ["example.com"] +} +resource "akamai_appsec_attack_group_action" "test" { +config_id = 43253 + version = 7 + security_policy_id = "AAAA_81230" + api_endpoint_id = data.akamai_appsec_api_endpoints.api_endpoint.id + action = "alert" +} + + From af41b18fb5c32ddc10b0142ceeafd61569420233 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 7 Jan 2021 08:12:09 -0600 Subject: [PATCH 004/215] Add reputation Analysis --- pkg/providers/appsec/appsec_test.go | 30 +++ .../data_akamai_appsec_reputation_analysis.go | 100 ++++++++++ ..._akamai_appsec_reputation_analysis_test.go | 43 +++++ pkg/providers/appsec/provider.go | 2 + ...ource_akamai_appsec_reputation_analysis.go | 175 ++++++++++++++++++ ..._akamai_appsec_reputation_analysis_test.go | 67 +++++++ pkg/providers/appsec/templates.go | 1 + .../ReputationAnalysis.json | 5 + .../TestDSReputationAnalysis/match_by_id.tf | 11 ++ .../ReputationAnalysis.json | 5 + .../ReputationAnalysisUpdated.json | 5 + .../TestResReputationAnalysis/match_by_id.tf | 13 ++ .../TestResReputationAnalysis/update_by_id.tf | 13 ++ 13 files changed, 470 insertions(+) create mode 100644 pkg/providers/appsec/data_akamai_appsec_reputation_analysis.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_reputation_analysis_test.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go create mode 100644 pkg/providers/appsec/testdata/TestDSReputationAnalysis/ReputationAnalysis.json create mode 100644 pkg/providers/appsec/testdata/TestDSReputationAnalysis/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysis.json create mode 100644 pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysisUpdated.json create mode 100644 pkg/providers/appsec/testdata/TestResReputationAnalysis/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResReputationAnalysis/update_by_id.tf diff --git a/pkg/providers/appsec/appsec_test.go b/pkg/providers/appsec/appsec_test.go index 386e8c0bd..e22300599 100644 --- a/pkg/providers/appsec/appsec_test.go +++ b/pkg/providers/appsec/appsec_test.go @@ -31,6 +31,36 @@ func (p *mockappsec) GetConfigurationVersions(ctx context.Context, params appsec return args.Get(0).(*appsec.GetConfigurationVersionsResponse), args.Error(1) } +func (p *mockappsec) GetReputationAnalysis(ctx context.Context, params appsec.GetReputationAnalysisRequest) (*appsec.GetReputationAnalysisResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetReputationAnalysisResponse), args.Error(1) +} + +func (p *mockappsec) UpdateReputationAnalysis(ctx context.Context, params appsec.UpdateReputationAnalysisRequest) (*appsec.UpdateReputationAnalysisResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.UpdateReputationAnalysisResponse), args.Error(1) +} + +func (p *mockappsec) RemoveReputationAnalysis(ctx context.Context, params appsec.RemoveReputationAnalysisRequest) (*appsec.RemoveReputationAnalysisResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.RemoveReputationAnalysisResponse), args.Error(1) +} + func (p *mockappsec) CreateActivations(ctx context.Context, params appsec.CreateActivationsRequest, acknowledgeWarnings bool) (*appsec.CreateActivationsResponse, error) { args := p.Called(ctx, params) diff --git a/pkg/providers/appsec/data_akamai_appsec_reputation_analysis.go b/pkg/providers/appsec/data_akamai_appsec_reputation_analysis.go new file mode 100644 index 000000000..8c815b622 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_reputation_analysis.go @@ -0,0 +1,100 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceReputationAnalysis() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceReputationAnalysisRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "security_policy_id": { + Type: schema.TypeString, + Required: true, + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceReputationAnalysisRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceReputationAnalysisRead") + + getReputationAnalysis := appsec.GetReputationAnalysisRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationAnalysis.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationAnalysis.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationAnalysis.PolicyID = policyid + + reputationanalysis, err := client.GetReputationAnalysis(ctx, getReputationAnalysis) + if err != nil { + logger.Errorf("calling 'getReputationAnalysis': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "reputationAnalysisDS", reputationanalysis) + if err == nil { + if err := d.Set("output_text", outputtext); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + } + + jsonBody, err := json.Marshal(reputationanalysis) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(strconv.Itoa(getReputationAnalysis.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_reputation_analysis_test.go b/pkg/providers/appsec/data_akamai_appsec_reputation_analysis_test.go new file mode 100644 index 000000000..981bf45ca --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_reputation_analysis_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiReputationAnalysis_data_basic(t *testing.T) { + t.Run("match by ReputationAnalysis ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetReputationAnalysisResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSReputationAnalysis/ReputationAnalysis.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetReputationAnalysis", + mock.Anything, // ctx is irrelevant for this test + appsec.GetReputationAnalysisRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSReputationAnalysis/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_reputation_analysis.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index 5d43d3bbf..0242e15d0 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -92,6 +92,7 @@ func Provider() *schema.Provider { "akamai_appsec_rate_policy_actions": dataSourceRatePolicyActions(), "akamai_appsec_rate_protections": dataSourceRateProtections(), "akamai_appsec_reputation_protections": dataSourceReputationProtections(), + "akamai_appsec_reputation_analysis": dataSourceReputationAnalysis(), "akamai_appsec_reputation_profiles": dataSourceReputationProfiles(), "akamai_appsec_reputation_profile_actions": dataSourceReputationProfileActions(), "akamai_appsec_rule_upgrade_details": dataSourceRuleUpgrade(), @@ -134,6 +135,7 @@ func Provider() *schema.Provider { "akamai_appsec_rate_policy": resourceRatePolicy(), "akamai_appsec_rate_policy_action": resourceRatePolicyAction(), "akamai_appsec_rate_protection": resourceRateProtection(), + "akamai_appsec_reputation_analysis": resourceReputationAnalysis(), "akamai_appsec_reputation_protection": resourceReputationProtection(), "akamai_appsec_reputation_profile": resourceReputationProfile(), "akamai_appsec_reputation_profile_action": resourceReputationProfileAction(), diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go new file mode 100644 index 000000000..30efc7947 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go @@ -0,0 +1,175 @@ +package appsec + +import ( + "context" + "errors" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceReputationAnalysis() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceReputationAnalysisUpdate, + ReadContext: resourceReputationAnalysisRead, + UpdateContext: resourceReputationAnalysisUpdate, + DeleteContext: resourceReputationAnalysisDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "security_policy_id": { + Type: schema.TypeString, + Required: true, + }, + "forward_to_http_header": { + Type: schema.TypeBool, + Required: true, + }, + "forward_shared_ip_to_http_header_siem": { + Type: schema.TypeBool, + Required: true, + }, + }, + } +} + +func resourceReputationAnalysisUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceReputationAnalysisUpdate") + + updateReputationAnalysis := appsec.UpdateReputationAnalysisRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationAnalysis.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationAnalysis.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationAnalysis.PolicyID = policyid + + forwardToHttpHeader, err := tools.GetBoolValue("forward_to_http_header", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationAnalysis.ForwardToHTTPHeader = forwardToHttpHeader + + forwardSharedIpToHttpHeaderSiem, err := tools.GetBoolValue("forward_shared_ip_to_http_header_siem", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationAnalysis.ForwardSharedIPToHTTPHeaderAndSIEM = forwardSharedIpToHttpHeaderSiem + + _, erru := client.UpdateReputationAnalysis(ctx, updateReputationAnalysis) + if erru != nil { + logger.Errorf("calling 'updateReputationAnalysis': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceReputationAnalysisRead(ctx, d, m) +} + +func resourceReputationAnalysisDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceReputationAnalysisUpdate") + + updateReputationAnalysis := appsec.UpdateReputationAnalysisRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationAnalysis.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationAnalysis.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationAnalysis.PolicyID = policyid + + updateReputationAnalysis.ForwardToHTTPHeader = false + + updateReputationAnalysis.ForwardSharedIPToHTTPHeaderAndSIEM = false + + logger.Errorf("calling 'removeReputationAnalysis': STRUCT %v", updateReputationAnalysis) + + _, erru := client.UpdateReputationAnalysis(ctx, updateReputationAnalysis) + if erru != nil { + logger.Errorf("calling 'updateReputationAnalysis': %s", erru.Error()) + return diag.FromErr(erru) + } + + d.SetId("") + + return nil +} + +func resourceReputationAnalysisRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceReputationAnalysisRead") + + getReputationAnalysis := appsec.GetReputationAnalysisRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationAnalysis.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationAnalysis.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationAnalysis.PolicyID = policyid + + _, errg := client.GetReputationAnalysis(ctx, getReputationAnalysis) + if errg != nil { + logger.Errorf("calling 'getReputationAnalysis': %s", errg.Error()) + return diag.FromErr(errg) + } + + d.SetId(strconv.Itoa(getReputationAnalysis.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go new file mode 100644 index 000000000..fd20c80f0 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go @@ -0,0 +1,67 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiReputationAnalysis_res_basic(t *testing.T) { + t.Run("match by ReputationAnalysis ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateReputationAnalysisResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResReputationAnalysis/ReputationAnalysisUpdated.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetReputationAnalysisResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResReputationAnalysis/ReputationAnalysis.json")) + json.Unmarshal([]byte(expectJS), &cr) + + cd := appsec.RemoveReputationAnalysisResponse{} + expectJSD := compactJSON(loadFixtureBytes("testdata/TestResReputationAnalysis/ReputationAnalysis.json")) + json.Unmarshal([]byte(expectJSD), &cd) + + client.On("GetReputationAnalysis", + mock.Anything, // ctx is irrelevant for this test + appsec.GetReputationAnalysisRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cr, nil) + + client.On("UpdateReputationAnalysis", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateReputationAnalysisRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ForwardToHTTPHeader: true, ForwardSharedIPToHTTPHeaderAndSIEM: true}, + ).Return(&cu, nil) + + client.On("RemoveReputationAnalysis", + mock.Anything, // ctx is irrelevant for this test + appsec.RemoveReputationAnalysisRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ForwardToHTTPHeader: true, ForwardSharedIPToHTTPHeaderAndSIEM: true}, + ).Return(&cd, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResReputationAnalysis/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_reputation_analysis.test", "id", "43253"), + ), + }, + { + Config: loadFixtureString("testdata/TestResReputationAnalysis/update_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_reputation_analysis.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 4edfa859c..753d19924 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -120,6 +120,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["matchTargets"] = &OutputTemplate{TemplateName: "matchTargets", TableTitle: "ID|PolicyID", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .MatchTargets.WebsiteTargets}}{{if $index}},{{end}}{{.ID}}|{{.SecurityPolicy.PolicyID}}{{end}}"} otm["matchTargetDS"] = &OutputTemplate{TemplateName: "matchTarget", TableTitle: "ID|PolicyID", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .MatchTargets.WebsiteTargets}}{{if $index}},{{end}}{{.TargetID}}|{{.SecurityPolicy.PolicyID}}{{end}}"} otm["reputationProfiles"] = &OutputTemplate{TemplateName: "reputationProfiles", TableTitle: "ID|Name(Title)", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .ReputationProfiles}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} + otm["reputationAnalysisDS"] = &OutputTemplate{TemplateName: "reputationAnalysisDS", TableTitle: "forwardToHTTPHeader|forwardSharedIPToHTTPHeaderAndSIEM", TemplateType: "TABULAR", TemplateString: "{{.ForwardToHTTPHeader}}|{{.ForwardSharedIPToHTTPHeaderAndSIEM}}"} otm["reputationProfilesDS"] = &OutputTemplate{TemplateName: "reputationProfilesDS", TableTitle: "ID|Name(Title)", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .ReputationProfiles}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} diff --git a/pkg/providers/appsec/testdata/TestDSReputationAnalysis/ReputationAnalysis.json b/pkg/providers/appsec/testdata/TestDSReputationAnalysis/ReputationAnalysis.json new file mode 100644 index 000000000..28e4534de --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSReputationAnalysis/ReputationAnalysis.json @@ -0,0 +1,5 @@ + + { + "forwardSharedIPToHTTPHeaderAndSIEM": false, + "forwardToHTTPHeader": false + } diff --git a/pkg/providers/appsec/testdata/TestDSReputationAnalysis/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSReputationAnalysis/match_by_id.tf new file mode 100644 index 000000000..9f4d91dce --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSReputationAnalysis/match_by_id.tf @@ -0,0 +1,11 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + + +data "akamai_appsec_reputation_analysis" "reputation_analysis" { + config_id = 43253 + version = 7 + security_policy_id = "AAAA_81230" +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysis.json b/pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysis.json new file mode 100644 index 000000000..13528a085 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysis.json @@ -0,0 +1,5 @@ + + { + "forwardSharedIPToHTTPHeaderAndSIEM": true, + "forwardToHTTPHeader": true + } diff --git a/pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysisUpdated.json b/pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysisUpdated.json new file mode 100644 index 000000000..83d8e1ed8 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysisUpdated.json @@ -0,0 +1,5 @@ + + { + "forwardSharedIPToHTTPHeaderAndSIEM": true, + "forwardToHTTPHeader": false + } diff --git a/pkg/providers/appsec/testdata/TestResReputationAnalysis/match_by_id.tf b/pkg/providers/appsec/testdata/TestResReputationAnalysis/match_by_id.tf new file mode 100644 index 000000000..48a1a7e6d --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResReputationAnalysis/match_by_id.tf @@ -0,0 +1,13 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + +resource "akamai_appsec_reputation_analysis" "test" { + config_id = 43253 + version = 12 + security_policy_id = "AAAA_81230" + forward_to_http_header = false + forward_shared_ip_to_http_header_siem = true +} + diff --git a/pkg/providers/appsec/testdata/TestResReputationAnalysis/update_by_id.tf b/pkg/providers/appsec/testdata/TestResReputationAnalysis/update_by_id.tf new file mode 100644 index 000000000..2bc5f39b8 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResReputationAnalysis/update_by_id.tf @@ -0,0 +1,13 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + +resource "akamai_appsec_reputation_analysis" "test" { + config_id = 43253 + version = 12 + security_policy_id = "AAAA_81230" + forward_to_http_header = true + forward_shared_ip_to_http_header_siem = true +} + From 0fdfc5ee7de2fa39f11b1d8c3f5f590bdfc4bdaa Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 7 Jan 2021 10:12:14 -0600 Subject: [PATCH 005/215] Modify contracts groups --- .../data_akamai_appsec_contracts_groups.go | 43 ++++++++++++++++++- pkg/providers/appsec/provider.go | 2 +- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go index 84d71c2bd..0d23551c1 100644 --- a/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go +++ b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go @@ -3,7 +3,9 @@ package appsec import ( "context" "encoding/json" + "errors" "fmt" + "strconv" v2 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -17,7 +19,14 @@ func dataSourceContractsGroups() *schema.Resource { return &schema.Resource{ ReadContext: dataSourceContractsGroupsRead, Schema: map[string]*schema.Schema{ - + "contract": { + Type: schema.TypeString, + Optional: true, + }, + "group": { + Type: schema.TypeInt, + Optional: true, + }, "json": { Type: schema.TypeString, Computed: true, @@ -27,6 +36,14 @@ func dataSourceContractsGroups() *schema.Resource { Computed: true, Description: "Text Export representation", }, + "default_contract": { + Type: schema.TypeString, + Computed: true, + }, + "default_group": { + Type: schema.TypeString, + Computed: true, + }, }, } } @@ -38,6 +55,18 @@ func dataSourceContractsGroupsRead(ctx context.Context, d *schema.ResourceData, getContractsGroups := v2.GetContractsGroupsRequest{} + contract, err := tools.GetStringValue("contract", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getContractsGroups.ContractID = contract + + group, err := tools.GetIntValue("group", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getContractsGroups.GroupID = group + contractsgroups, err := client.GetContractsGroups(ctx, getContractsGroups) if err != nil { logger.Errorf("calling 'getContractsGroups': %s", err.Error()) @@ -61,8 +90,20 @@ func dataSourceContractsGroupsRead(ctx context.Context, d *schema.ResourceData, return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + for _, configval := range contractsgroups.ContractGroups { + + if configval.ContractID == contract && configval.GroupID == group { + if err := d.Set("default_contract", contract); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + if err := d.Set("default_group", strconv.Itoa(group)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + } + } if len(contractsgroups.ContractGroups) > 0 { d.SetId(contractsgroups.ContractGroups[0].ContractID) } + return nil } diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index 0242e15d0..3cf74d2b2 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -72,7 +72,7 @@ func Provider() *schema.Provider { "akamai_appsec_api_request_constraints": dataSourceApiRequestConstraints(), "akamai_appsec_configuration": dataSourceConfiguration(), "akamai_appsec_configuration_version": dataSourceConfigurationVersion(), - "akamai_appsec_contract_groups": dataSourceContractsGroups(), + "akamai_appsec_contracts_groups": dataSourceContractsGroups(), "akamai_appsec_custom_deny": dataSourceCustomDeny(), "akamai_appsec_custom_rules": dataSourceCustomRules(), "akamai_appsec_custom_rule_actions": dataSourceCustomRuleActions(), From d8613dcbf0437fe3ac30b84011d4e7b9947cbcde Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 7 Jan 2021 13:07:45 -0600 Subject: [PATCH 006/215] Refactor contract group names and report column order --- .../appsec/data_akamai_appsec_contracts_groups.go | 8 ++++---- pkg/providers/appsec/templates.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go index 0d23551c1..2a2d1ee5c 100644 --- a/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go +++ b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go @@ -36,11 +36,11 @@ func dataSourceContractsGroups() *schema.Resource { Computed: true, Description: "Text Export representation", }, - "default_contract": { + "default_contractId": { Type: schema.TypeString, Computed: true, }, - "default_group": { + "default_groupId": { Type: schema.TypeString, Computed: true, }, @@ -93,10 +93,10 @@ func dataSourceContractsGroupsRead(ctx context.Context, d *schema.ResourceData, for _, configval := range contractsgroups.ContractGroups { if configval.ContractID == contract && configval.GroupID == group { - if err := d.Set("default_contract", contract); err != nil { + if err := d.Set("default_contractId", contract); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - if err := d.Set("default_group", strconv.Itoa(group)); err != nil { + if err := d.Set("default_groupId", strconv.Itoa(group)); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } } diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 753d19924..7e504c687 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -103,7 +103,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["configuration"] = &OutputTemplate{TemplateName: "Configurations", TableTitle: "Config_id|Name|Latest_version|Version_active_in_staging|Version_active_in_production", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .Configurations}}{{if $index}},{{end}}{{.ID}}|{{.Name}}|{{.LatestVersion}}|{{.StagingVersion}}|{{.ProductionVersion}}{{end}}"} otm["configurationVersion"] = &OutputTemplate{TemplateName: "ConfigurationVersion", TableTitle: "Version Number|Staging Status|Production Status", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .VersionList}}{{if $index}},{{end}}{{.Version}}|{{.Staging.Status}}|{{.Production.Status}}{{end}}"} - otm["contractsgroupsDS"] = &OutputTemplate{TemplateName: "contractsgroupsDS", TableTitle: "Contract|Groupid|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .ContractGroups}}{{if $index}},{{end}}{{.ContractID}}|{{.DisplayName}}|{{.GroupID}}{{end}}"} + otm["contractsgroupsDS"] = &OutputTemplate{TemplateName: "contractsgroupsDS", TableTitle: "Contract|Groupid|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .ContractGroups}}{{if $index}},{{end}}{{.ContractID}}|{{.GroupID}}|{{.DisplayName}}{{end}}"} otm["failoverHostnamesDS"] = &OutputTemplate{TemplateName: "failoverHostnamesDS", TableTitle: "Config ID|Config Version", TemplateType: "TABULAR", TemplateString: "{{.ConfigID}}|{{.ConfigVersion}}"} otm["penaltyBoxDS"] = &OutputTemplate{TemplateName: "penaltyBoxDS", TableTitle: "PenaltyBoxProtection|Action", TemplateType: "TABULAR", TemplateString: "{{.PenaltyBoxProtection}}|{{.Action}}"} From 45095fc88c01ef7af5c1945770f0cb45f00dcb6f Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 7 Jan 2021 13:14:34 -0600 Subject: [PATCH 007/215] Refactor name to api_name for API endpoints --- .../data_akamai_appsec_api_endpoints.go | 20 ++++++------------- .../data_akamai_appsec_api_endpoints_test.go | 2 +- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go b/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go index b51f13413..2d52b6622 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go @@ -27,7 +27,7 @@ func dataSourceApiEndpoints() *schema.Resource { Type: schema.TypeInt, Required: true, }, - "name": { + "api_name": { Type: schema.TypeString, Optional: true, }, @@ -69,11 +69,11 @@ func dataSourceApiEndpointsRead(ctx context.Context, d *schema.ResourceData, m i } getApiEndpoints.Version = version - name, err := tools.GetStringValue("name", d) + apiName, err := tools.GetStringValue("api_name", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } - getApiEndpoints.Name = name + getApiEndpoints.Name = apiName apiendpoints, err := client.GetApiEndpoints(ctx, getApiEndpoints) if err != nil { @@ -100,28 +100,20 @@ func dataSourceApiEndpointsRead(ctx context.Context, d *schema.ResourceData, m i var idList []int - // d.Set("id_list", idList) - - //newhdata := make([]string, 0, len(apiendpoints.APIEndpoints)) - for _, ids := range apiendpoints.APIEndpoints { - //newhdata = append(newhdata, strconv.Itoa(ids.ID)) - //newhdata = append(newhdata, ids.Name) + idList = append(idList, ids.ID) } - logger.Errorf("calling 'getApiEndpoints': ARRAY INT %v", idList) + d.Set("id_list", idList) + // TODO errors out trying to set /*if err := d.Set("id_list", idList); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) }*/ if len(apiendpoints.APIEndpoints) > 0 { - - //d.SetId(strconv.Itoa(getCustomDeny.ConfigID)) d.SetId(strconv.Itoa(apiendpoints.APIEndpoints[0].ID)) } - //d.SetId(strconv.Itoa(getApiEndpoints.ConfigID)) - return nil } diff --git a/pkg/providers/appsec/data_akamai_appsec_api_endpoints_test.go b/pkg/providers/appsec/data_akamai_appsec_api_endpoints_test.go index 6b137bdda..a47d07073 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_endpoints_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_endpoints_test.go @@ -30,7 +30,7 @@ func TestAccAkamaiApiEndpoints_data_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestDSApiEndpoints/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_api_endpoints.test", "id", "296100"), + resource.TestCheckResourceAttr("data.akamai_appsec_api_endpoints.test", "id", "619183"), ), }, }, From f6700203362271195a05dce4a6932674ef6c4493 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 7 Jan 2021 16:14:23 -0600 Subject: [PATCH 008/215] Remove uppercase variable --- .../appsec/data_akamai_appsec_contracts_groups.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go index 2a2d1ee5c..889804c7e 100644 --- a/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go +++ b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go @@ -36,11 +36,11 @@ func dataSourceContractsGroups() *schema.Resource { Computed: true, Description: "Text Export representation", }, - "default_contractId": { + "default_contractid": { Type: schema.TypeString, Computed: true, }, - "default_groupId": { + "default_groupid": { Type: schema.TypeString, Computed: true, }, @@ -93,10 +93,10 @@ func dataSourceContractsGroupsRead(ctx context.Context, d *schema.ResourceData, for _, configval := range contractsgroups.ContractGroups { if configval.ContractID == contract && configval.GroupID == group { - if err := d.Set("default_contractId", contract); err != nil { + if err := d.Set("default_contractid", contract); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - if err := d.Set("default_groupId", strconv.Itoa(group)); err != nil { + if err := d.Set("default_groupid", strconv.Itoa(group)); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } } From 56fe7a8209b68fab0a6b3ada279a6dfaecd8dc67 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 7 Jan 2021 17:46:34 -0600 Subject: [PATCH 009/215] Add configuration Clone refactor configuration version clone --- pkg/providers/appsec/appsec_test.go | 30 ++++ pkg/providers/appsec/provider.go | 3 +- ...ource_akamai_appsec_configuration_clone.go | 102 ++++++++++++-- ..._akamai_appsec_configuration_clone_test.go | 17 ++- ...amai_appsec_configuration_version_clone.go | 133 ++++++++++++++++++ ...appsec_configuration_version_clone_test.go | 52 +++++++ .../TestResConfigurationClone/match_by_id.tf | 12 +- .../ConfigurationVersionClone.json | 16 +++ .../match_by_id.tf | 11 ++ 9 files changed, 357 insertions(+), 19 deletions(-) create mode 100644 pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone_test.go create mode 100644 pkg/providers/appsec/testdata/TestResConfigurationVersionClone/ConfigurationVersionClone.json create mode 100644 pkg/providers/appsec/testdata/TestResConfigurationVersionClone/match_by_id.tf diff --git a/pkg/providers/appsec/appsec_test.go b/pkg/providers/appsec/appsec_test.go index e22300599..a66b3c979 100644 --- a/pkg/providers/appsec/appsec_test.go +++ b/pkg/providers/appsec/appsec_test.go @@ -31,6 +31,26 @@ func (p *mockappsec) GetConfigurationVersions(ctx context.Context, params appsec return args.Get(0).(*appsec.GetConfigurationVersionsResponse), args.Error(1) } +func (p *mockappsec) RemoveConfigurationVersionClone(ctx context.Context, params appsec.RemoveConfigurationVersionCloneRequest) (*appsec.RemoveConfigurationVersionCloneResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.RemoveConfigurationVersionCloneResponse), args.Error(1) +} + +func (p *mockappsec) GetConfigurationVersionClone(ctx context.Context, params appsec.GetConfigurationVersionCloneRequest) (*appsec.GetConfigurationVersionCloneResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetConfigurationVersionCloneResponse), args.Error(1) +} + func (p *mockappsec) GetReputationAnalysis(ctx context.Context, params appsec.GetReputationAnalysisRequest) (*appsec.GetReputationAnalysisResponse, error) { args := p.Called(ctx, params) @@ -71,6 +91,16 @@ func (p *mockappsec) CreateActivations(ctx context.Context, params appsec.Create return args.Get(0).(*appsec.CreateActivationsResponse), args.Error(1) } +func (p *mockappsec) CreateConfigurationVersionClone(ctx context.Context, params appsec.CreateConfigurationVersionCloneRequest) (*appsec.CreateConfigurationVersionCloneResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.CreateConfigurationVersionCloneResponse), args.Error(1) +} + func (p *mockappsec) GetActivations(ctx context.Context, params appsec.GetActivationsRequest) (*appsec.GetActivationsResponse, error) { args := p.Called(ctx, params) diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index 3cf74d2b2..35b111db0 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -113,7 +113,8 @@ func Provider() *schema.Provider { "akamai_appsec_advanced_settings_prefetch": resourceAdvancedSettingsPrefetch(), "akamai_api_request_constraints": resourceApiRequestConstraints(), "akamai_appsec_configuration": resourceConfiguration(), - "akamai_appsec_configuration_version_clone": resourceConfigurationClone(), + "akamai_appsec_configuration_clone": resourceConfigurationClone(), + "akamai_appsec_configuration_version_clone": resourceConfigurationVersionClone(), "akamai_appsec_selected_hostnames": resourceSelectedHostname(), "akamai_appsec_security_policy_clone": resourceSecurityPolicyClone(), "akamai_appsec_eval": resourceEval(), diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_clone.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_clone.go index c329c112d..dfabf06f5 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_configuration_clone.go +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_clone.go @@ -23,7 +23,28 @@ func resourceConfigurationClone() *schema.Resource { UpdateContext: resourceConfigurationCloneUpdate, DeleteContext: resourceConfigurationCloneDelete, Schema: map[string]*schema.Schema{ - "config_id": { + "name": { + Type: schema.TypeString, + Required: true, + }, + "description": { + Type: schema.TypeString, + Required: true, + }, + "contract_id": { + Type: schema.TypeString, + Required: true, + }, + "group_id": { + Type: schema.TypeInt, + Required: true, + }, + "host_names": { + Type: schema.TypeList, + Required: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "create_from_config_id": { Type: schema.TypeInt, Required: true, }, @@ -31,11 +52,10 @@ func resourceConfigurationClone() *schema.Resource { Type: schema.TypeInt, Required: true, }, - - "rule_update": { - Type: schema.TypeBool, - Optional: true, - Default: false, + "config_id": { + Type: schema.TypeInt, + Computed: true, + Description: "Config id of cloned configuration", }, "version": { Type: schema.TypeInt, @@ -53,17 +73,50 @@ func resourceConfigurationCloneCreate(ctx context.Context, d *schema.ResourceDat createConfigurationClone := appsec.CreateConfigurationCloneRequest{} - configid, err := tools.GetIntValue("config_id", d) + createFromConfigID, err := tools.GetIntValue("create_from_config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } - createConfigurationClone.ConfigID = configid + createConfigurationClone.CreateFrom.ConfigID = createFromConfigID version, err := tools.GetIntValue("create_from_version", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } - createConfigurationClone.CreateFromVersion = version + createConfigurationClone.CreateFrom.Version = version + + name, err := tools.GetStringValue("name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createConfigurationClone.Name = name + + description, err := tools.GetStringValue("description", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createConfigurationClone.Description = description + + contractID, err := tools.GetStringValue("contract_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createConfigurationClone.ContractID = contractID + + groupID, err := tools.GetIntValue("group_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createConfigurationClone.GroupID = groupID + + hostnamelist := d.Get("host_names").([]interface{}) + hnl := make([]string, 0, len(hostnamelist)) + + for _, h := range hostnamelist { + hnl = append(hnl, h.(string)) + + } + createConfigurationClone.Hostnames = hnl ccr, err := client.CreateConfigurationClone(ctx, createConfigurationClone) if err != nil { @@ -76,6 +129,10 @@ func resourceConfigurationCloneCreate(ctx context.Context, d *schema.ResourceDat return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("config_id", ccr.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(strconv.Itoa(ccr.ConfigID)) return resourceConfigurationCloneRead(ctx, d, m) @@ -100,19 +157,40 @@ func resourceConfigurationCloneRead(ctx context.Context, d *schema.ResourceData, } getConfigurationClone.Version = version - configurationclone, err := client.GetConfigurationClone(ctx, getConfigurationClone) + Configurationclone, err := client.GetConfigurationClone(ctx, getConfigurationClone) if err != nil { logger.Errorf("calling 'getConfigurationClone': %s", err.Error()) return diag.FromErr(err) } - d.SetId(strconv.Itoa(configurationclone.ConfigID)) + d.SetId(strconv.Itoa(Configurationclone.ConfigID)) return nil } func resourceConfigurationCloneDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - return schema.NoopContext(nil, d, m) + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceConfigurationRemove") + + removeConfiguration := appsec.RemoveConfigurationRequest{} + + configid, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + removeConfiguration.ConfigID = configid + + _, errd := client.RemoveConfiguration(ctx, removeConfiguration) + if errd != nil { + logger.Errorf("calling 'removeConfiguration': %s", errd.Error()) + return diag.FromErr(errd) + } + + d.SetId("") + + return nil } func resourceConfigurationCloneUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_clone_test.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_clone_test.go index 8f00105d5..cd14fe492 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_configuration_clone_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_clone_test.go @@ -21,6 +21,10 @@ func TestAccAkamaiConfigurationClone_res_basic(t *testing.T) { expectJS := compactJSON(loadFixtureBytes("testdata/TestResConfigurationClone/ConfigurationClone.json")) json.Unmarshal([]byte(expectJS), &cr) + crd := appsec.GetConfigurationCloneResponse{} + expectJSD := compactJSON(loadFixtureBytes("testdata/TestResConfigurationClone/ConfigurationClone.json")) + json.Unmarshal([]byte(expectJSD), &crd) + client.On("GetConfigurationClone", mock.Anything, // ctx is irrelevant for this test appsec.GetConfigurationCloneRequest{ConfigID: 43253, Version: 15}, @@ -28,12 +32,21 @@ func TestAccAkamaiConfigurationClone_res_basic(t *testing.T) { client.On("CreateConfigurationClone", mock.Anything, // ctx is irrelevant for this test - appsec.CreateConfigurationCloneRequest{ConfigID: 43253, CreateFromVersion: 7}, + appsec.CreateConfigurationCloneRequest{Name: "Test Configuratin", Description: "New configuration test", ContractID: "C-1FRYVV3", GroupID: 64867, Hostnames: []string{"rinaldi.sandbox.akamaideveloper.com", "sujala.sandbox.akamaideveloper.com"}, CreateFrom: struct { + ConfigID int `json:"configId"` + Version int `json:"version"` + }{ConfigID: 43253, + Version: 15}}, ).Return(&cu, nil) + client.On("RemoveConfiguration", + mock.Anything, // ctx is irrelevant for this test + appsec.RemoveConfigurationRequest{ConfigID: 43253}, + ).Return(&crd, nil) + useClient(client, func() { resource.Test(t, resource.TestCase{ - IsUnitTest: true, + IsUnitTest: false, Providers: testAccProviders, Steps: []resource.TestStep{ { diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone.go new file mode 100644 index 000000000..51babfcba --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone.go @@ -0,0 +1,133 @@ +package appsec + +import ( + "context" + "errors" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceConfigurationVersionClone() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceConfigurationVersionCloneCreate, + ReadContext: resourceConfigurationVersionCloneRead, + UpdateContext: resourceConfigurationVersionCloneUpdate, + DeleteContext: resourceConfigurationVersionCloneDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "create_from_version": { + Type: schema.TypeInt, + Required: true, + }, + + "rule_update": { + Type: schema.TypeBool, + Optional: true, + Default: false, + }, + "version": { + Type: schema.TypeInt, + Computed: true, + Description: "Version of cloned configuration", + }, + }, + } +} + +func resourceConfigurationVersionCloneCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceConfigurationVersionCloneCreate") + + createConfigurationVersionClone := appsec.CreateConfigurationVersionCloneRequest{} + + createConfigurationVersionClone.ConfigID = d.Get("config_id").(int) + createConfigurationVersionClone.CreateFromVersion = d.Get("create_from_version").(int) + + ccr, err := client.CreateConfigurationVersionClone(ctx, createConfigurationVersionClone) + if err != nil { + logger.Errorf("calling 'createConfigurationVersionClone': %s", err.Error()) + return diag.FromErr(err) + } + + d.Set("version", ccr.Version) + d.SetId(strconv.Itoa(ccr.Version)) + + return resourceConfigurationVersionCloneRead(ctx, d, m) +} + +func resourceConfigurationVersionCloneRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceConfigurationVersionCloneRead") + + getConfigurationVersionClone := appsec.GetConfigurationVersionCloneRequest{} + + getConfigurationVersionClone.ConfigID = d.Get("config_id").(int) + //getConfigurationVersionClone.Version = d.Get("create_from_version").(int) + version, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + getConfigurationVersionClone.Version = version + + _, err := client.GetConfigurationVersionClone(ctx, getConfigurationVersionClone) + if err != nil { + logger.Errorf("calling 'getConfigurationVersionClone': %s", err.Error()) + return diag.FromErr(err) + } + + //d.SetId(strconv.Itoa(configurationversionclone.ConfigID)) + d.SetId(strconv.Itoa(version)) + return nil +} + +func resourceConfigurationVersionCloneDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceConfigurationVersionCloneRead") + + removeConfigurationVersionClone := appsec.RemoveConfigurationVersionCloneRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeConfigurationVersionClone.ConfigID = configid + + version, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + removeConfigurationVersionClone.Version = version + + _, errd := client.RemoveConfigurationVersionClone(ctx, removeConfigurationVersionClone) + if errd != nil { + logger.Errorf("calling 'getConfigurationVersionClone': %s", errd.Error()) + return diag.FromErr(errd) + } + + d.SetId("") + return nil +} + +func resourceConfigurationVersionCloneUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + return schema.NoopContext(nil, d, m) +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone_test.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone_test.go new file mode 100644 index 000000000..dd5610a3f --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone_test.go @@ -0,0 +1,52 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiConfigurationVersionClone_res_basic(t *testing.T) { + t.Run("match by ConfigurationVersionClone ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.CreateConfigurationVersionCloneResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResConfigurationVersionClone/ConfigurationVersionClone.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetConfigurationVersionCloneResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResConfigurationVersionClone/ConfigurationVersionClone.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetConfigurationVersionClone", + mock.Anything, // ctx is irrelevant for this test + appsec.GetConfigurationVersionCloneRequest{ConfigID: 43253, Version: 7}, + ).Return(&cr, nil) + + client.On("CreateConfigurationVersionClone", + mock.Anything, // ctx is irrelevant for this test + appsec.CreateConfigurationVersionCloneRequest{ConfigID: 43253, CreateFromVersion: 7}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: false, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResConfigurationVersionClone/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_configuration_version_clone.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/testdata/TestResConfigurationClone/match_by_id.tf b/pkg/providers/appsec/testdata/TestResConfigurationClone/match_by_id.tf index 27cf3b487..ed32aae27 100644 --- a/pkg/providers/appsec/testdata/TestResConfigurationClone/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResConfigurationClone/match_by_id.tf @@ -3,9 +3,13 @@ provider "akamai" { } -resource "akamai_appsec_configuration_version_clone" "test" { - config_id = 43253 - create_from_version = 7 - rule_update = false +resource "akamai_appsec_configuration_clone" "test" { + create_from_config_id = 43253 + create_from_version = 7 + name = "Test Configuratin" + description = "New configuration test" + contract_id= "C-1FRYVV3" + group_id = "64867" + host_names = ["rinaldi.sandbox.akamaideveloper.com","sujala.sandbox.akamaideveloper.com"] } diff --git a/pkg/providers/appsec/testdata/TestResConfigurationVersionClone/ConfigurationVersionClone.json b/pkg/providers/appsec/testdata/TestResConfigurationVersionClone/ConfigurationVersionClone.json new file mode 100644 index 000000000..3bf9ac1b0 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResConfigurationVersionClone/ConfigurationVersionClone.json @@ -0,0 +1,16 @@ +[ + { + "basedOn": 3, + "configId": 43253, + "configName": "Akamai Tools", + "createDate": "2020-10-06T18:00:20Z", + "createdBy": "akava-terraform", + "production": { + "status": "Inactive" + }, + "staging": { + "status": "Inactive" + }, + "version": 15 + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResConfigurationVersionClone/match_by_id.tf b/pkg/providers/appsec/testdata/TestResConfigurationVersionClone/match_by_id.tf new file mode 100644 index 000000000..27cf3b487 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResConfigurationVersionClone/match_by_id.tf @@ -0,0 +1,11 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + +resource "akamai_appsec_configuration_version_clone" "test" { + config_id = 43253 + create_from_version = 7 + rule_update = false + } + From 9305b9171a19997c9328fbaeb8169da615740065 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 8 Jan 2021 09:05:26 -0600 Subject: [PATCH 010/215] Refactor contract group to contractid groupid --- .../appsec/data_akamai_appsec_contracts_groups.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go index 889804c7e..6986d1de0 100644 --- a/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go +++ b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go @@ -19,11 +19,11 @@ func dataSourceContractsGroups() *schema.Resource { return &schema.Resource{ ReadContext: dataSourceContractsGroupsRead, Schema: map[string]*schema.Schema{ - "contract": { + "contractid": { Type: schema.TypeString, Optional: true, }, - "group": { + "groupid": { Type: schema.TypeInt, Optional: true, }, @@ -55,13 +55,13 @@ func dataSourceContractsGroupsRead(ctx context.Context, d *schema.ResourceData, getContractsGroups := v2.GetContractsGroupsRequest{} - contract, err := tools.GetStringValue("contract", d) + contract, err := tools.GetStringValue("contractid", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } getContractsGroups.ContractID = contract - group, err := tools.GetIntValue("group", d) + group, err := tools.GetIntValue("groupid", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } From dd5d592d17a69a41905c9312038261d31ada8bd6 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 8 Jan 2021 09:43:31 -0600 Subject: [PATCH 011/215] Add support for delete of advanced settings --- ...kamai_appsec_advanced_settings_prefetch.go | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go index 3a1ec8a11..0bd1509d9 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go @@ -101,7 +101,36 @@ func resourceAdvancedSettingsPrefetchRead(ctx context.Context, d *schema.Resourc func resourceAdvancedSettingsPrefetchDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - return schema.NoopContext(nil, d, m) + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceAdvancedSettingsPrefetchRemove") + + updateAdvancedSettingsPrefetch := appsec.UpdateAdvancedSettingsPrefetchRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPrefetch.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPrefetch.Version = version + + updateAdvancedSettingsPrefetch.EnableAppLayer = false + + updateAdvancedSettingsPrefetch.EnableRateControls = false + + _, erru := client.UpdateAdvancedSettingsPrefetch(ctx, updateAdvancedSettingsPrefetch) + if erru != nil { + logger.Errorf("calling 'removeAdvancedSettingsPrefetch': %s", erru.Error()) + return diag.FromErr(erru) + } + + d.SetId("") + return nil } func resourceAdvancedSettingsPrefetchUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { From 01063bd83a37d587d13ee579b9c3c8e9d1dc0374 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 8 Jan 2021 12:42:28 -0600 Subject: [PATCH 012/215] Add support for TF export --- pkg/providers/appsec/templates.go | 32 ++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 7e504c687..cf47c6a1f 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -2,6 +2,7 @@ package appsec import ( "bytes" + "encoding/json" "fmt" "strconv" "strings" @@ -39,6 +40,10 @@ func RenderTemplates(ots map[string]*OutputTemplate, key string, str interface{} funcs = template.FuncMap{ "join": strings.Join, "quote": func(in string) string { return fmt.Sprintf("\"%s\"", in) }, + "marshal": func(v interface{}) string { + a, _ := json.Marshal(v) + return string(a) + }, "dash": func(in int) string { if in == 0 { return "-" @@ -46,6 +51,16 @@ func RenderTemplates(ots map[string]*OutputTemplate, key string, str interface{} return strconv.Itoa(in) } }, + + "substring": func(start, end int, s string) string { + if start < 0 { + return s[:end] + } + if end < 0 || end > len(s) { + return s[start:] + } + return s[start:end] + }, } ) @@ -112,7 +127,6 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["selectableHostsDS"] = &OutputTemplate{TemplateName: "selectableHosts", TableTitle: "Hostname|ConfigIDInProduction|ConfigNameInProduction", TemplateType: "TABULAR", TemplateString: "{{range .AvailableSet}}{{.Hostname}}|{{ dash .ConfigIDInProduction }}|{{.ConfigNameInProduction}},{{end}}"} otm["selectedHosts"] = &OutputTemplate{TemplateName: "selectedHosts", TableTitle: "Hostnames", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .SelectedHosts}}{{if $index}},{{end}}{{.}}{{end}}"} otm["selectedHostsDS"] = &OutputTemplate{TemplateName: "selectedHosts", TableTitle: "Hostnames", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .HostnameList}}{{if $index}},{{end}}{{.Hostname}}{{end}}"} - otm["selectedHosts.tf"] = &OutputTemplate{TemplateName: "selectedHosts.tf", TableTitle: "Hostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"appsecselectedhostnames\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} otm["siemsettingsDS"] = &OutputTemplate{TemplateName: "siemsettingsDS", TableTitle: "Enable For All Policies|Enable Siem|Enabled Botman Siem Events|Siem Definition ID|FirewallPolicyIds", TemplateType: "TABULAR", TemplateString: "{{.EnableForAllPolicies}}|{{.EnableSiem}}|{{.EnabledBotmanSiemEvents}}|{{.SiemDefinitionID}}|{{.FirewallPolicyIds}}"} otm["siemDefinitionsDS"] = &OutputTemplate{TemplateName: "siemDefinitionsDS", TableTitle: "ID|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .SiemDefinitions}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} @@ -149,4 +163,20 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["reputationProtectionDS"] = &OutputTemplate{TemplateName: "reputationProtection", TableTitle: "APIConstraints|ApplicationLayerControls|BotmanControls|NetworkLayerControls|RateControls|ReputationControls|SlowPostControls", TemplateType: "TABULAR", TemplateString: "{{.ApplyAPIConstraints}}|{{.ApplyApplicationLayerControls}}|{{.ApplyBotmanControls}}|{{.ApplyNetworkLayerControls}}|{{.ApplyRateControls}}|{{.ApplyReputationControls}}|{{.ApplySlowPostControls}}"} otm["slowpostProtectionDS"] = &OutputTemplate{TemplateName: "slowpostProtection", TableTitle: "APIConstraints|ApplicationLayerControls|BotmanControls|NetworkLayerControls|RateControls|ReputationControls|SlowPostControls", TemplateType: "TABULAR", TemplateString: "{{.ApplyAPIConstraints}}|{{.ApplyApplicationLayerControls}}|{{.ApplyBotmanControls}}|{{.ApplyNetworkLayerControls}}|{{.ApplyRateControls}}|{{.ApplyReputationControls}}|{{.ApplySlowPostControls}}"} otm["RuleConditionException"] = &OutputTemplate{TemplateName: "RuleConditionException", TableTitle: "Conditions|Exceptions", TemplateType: "TABULAR", TemplateString: "{{range $index, $element :=.Conditions}}True{{else}}False{{end}}|{{with .Exception}}True{{else}}False{{end}}"} + + // TF templates + otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF {{marshal .AdvancedOptions.Logging}} EOF \n }"} + otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} + otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"appsec_attack_group_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}}{{if $index}},{{end}}\nresource \"akamai_appsec_custom_rule\" \"appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF {{marshal .}} \n EOF \n }\n {{end}}"} + otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"appsec_custom_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} + otm["MatchTarget.tf"] = &OutputTemplate{TemplateName: "MatchTarget.tf", TableTitle: "MatchTarget", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .MatchTargets.WebsiteTargets}}\nresource \"akamai_appsec_match_target\" \"appsec_match_target{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF {{marshal .}} \n EOF \n }\n {{end}}"} + otm["RatePolicy.tf"] = &OutputTemplate{TemplateName: "RatePolicy.tf", TableTitle: "RatePolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .RatePolicies}}\nresource \"akamai_appsec_rate_policy\" \"appsec_rate_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n rate_policy = <<-EOF {{marshal .}} \n EOF \n \n }\n{{end}}"} + otm["RatePolicyAction.tf"] = &OutputTemplate{TemplateName: "RatePolicyAction.tf", TableTitle: "RatePolicyAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{ range $index, $element := .RatePolicyActions }}\nresource \"akamai_appsec_rate_policy_action\" \"appsec_rate_policy_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rate_policy_id = {{.ID}} \n ipv4_action = \"{{.Ipv4Action}}\" \n ipv6_action = \"{{.Ipv6Action}}\" \n }\n {{end}} {{end}}"} + otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF {{marshal .}} \n \n EOF \n }{{end}}"} + otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"appsec_reputation_profile_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"appsec_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{substring 0 2 .ID}}\" \n default_settings = true \n }{{end}}"} + otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostname\" \"appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} + } From b6f6c963c39d9bbfa5c6ca3d5e3c60ff88f56c71 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Mon, 11 Jan 2021 09:18:46 -0600 Subject: [PATCH 013/215] Refactor tests --- ...i_appsec_advanced_settings_logging_test.go | 2 +- ..._api_hostname_coverage_overlapping_test.go | 2 +- .../data_akamai_appsec_custom_deny_test.go | 8 ++-- .../data_akamai_appsec_eval_hostnames_test.go | 2 +- ...ata_akamai_appsec_siem_definitions_test.go | 2 +- pkg/providers/appsec/templates.go | 6 ++- .../match_by_id.tf | 1 + .../testdata/TestDSCustomDeny/match_by_id.tf | 2 +- .../TestDSEvalHostnames/EvalHostnames.json | 45 +++---------------- .../TestDSEvalHostnames/match_by_id.tf | 2 +- .../TestDSReputationAnalysis/match_by_id.tf | 2 +- .../TestDSSiemSettings/match_by_id.tf | 2 +- .../match_by_id.tf | 1 + 13 files changed, 25 insertions(+), 52 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging_test.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging_test.go index b8678dbb5..9e80728ed 100644 --- a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging_test.go @@ -19,7 +19,7 @@ func TestAccAkamaiAdvancedSettingsLogging_data_basic(t *testing.T) { client.On("GetAdvancedSettingsLogging", mock.Anything, // ctx is irrelevant for this test - appsec.GetAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + appsec.GetAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7}, ).Return(&cv, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping_test.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping_test.go index e6ba2e554..0384f414f 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping_test.go @@ -19,7 +19,7 @@ func TestAccAkamaiApiHostnameCoverageOverlapping_data_basic(t *testing.T) { client.On("GetApiHostnameCoverageOverlapping", mock.Anything, // ctx is irrelevant for this test - appsec.GetApiHostnameCoverageOverlappingRequest{ConfigID: 43253, Version: 7}, + appsec.GetApiHostnameCoverageOverlappingRequest{ConfigID: 43253, Version: 7, Hostname: "example.com"}, ).Return(&cv, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/data_akamai_appsec_custom_deny_test.go b/pkg/providers/appsec/data_akamai_appsec_custom_deny_test.go index 7f9b0c353..97743e249 100644 --- a/pkg/providers/appsec/data_akamai_appsec_custom_deny_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_custom_deny_test.go @@ -13,13 +13,13 @@ func TestAccAkamaiCustomDeny_data_basic(t *testing.T) { t.Run("match by CustomDeny ID", func(t *testing.T) { client := &mockappsec{} - cv := appsec.GetCustomDenyResponse{} + cv := appsec.GetCustomDenyListResponse{} expectJS := compactJSON(loadFixtureBytes("testdata/TestDSCustomDeny/CustomDeny.json")) json.Unmarshal([]byte(expectJS), &cv) - client.On("GetCustomDeny", + client.On("GetCustomDenyList", mock.Anything, // ctx is irrelevant for this test - appsec.GetCustomDenyRequest{ConfigID: 43253, Version: 7, ID: "deny_custom_622918"}, + appsec.GetCustomDenyListRequest{ConfigID: 43253, Version: 7, ID: "deny_custom_622918"}, ).Return(&cv, nil) useClient(client, func() { @@ -30,7 +30,7 @@ func TestAccAkamaiCustomDeny_data_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestDSCustomDeny/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_custom_deny.test", "custom_deny_id", "deny_custom_54994"), + resource.TestCheckResourceAttr("data.akamai_appsec_custom_deny.test", "custom_deny_id", "deny_custom_622918"), ), }, }, diff --git a/pkg/providers/appsec/data_akamai_appsec_eval_hostnames_test.go b/pkg/providers/appsec/data_akamai_appsec_eval_hostnames_test.go index c62478527..f7e1276eb 100644 --- a/pkg/providers/appsec/data_akamai_appsec_eval_hostnames_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_eval_hostnames_test.go @@ -17,7 +17,7 @@ func TestAccAkamaiEvalHostnames_data_basic(t *testing.T) { expectJS := compactJSON(loadFixtureBytes("testdata/TestDSEvalHostnames/EvalHostnames.json")) json.Unmarshal([]byte(expectJS), &cv) - client.On("GetEvalHostnames", + client.On("GetEvalHosts", mock.Anything, // ctx is irrelevant for this test appsec.GetEvalHostsRequest{ConfigID: 43253, Version: 7}, ).Return(&cv, nil) diff --git a/pkg/providers/appsec/data_akamai_appsec_siem_definitions_test.go b/pkg/providers/appsec/data_akamai_appsec_siem_definitions_test.go index 721f7d6cb..d46934fcc 100644 --- a/pkg/providers/appsec/data_akamai_appsec_siem_definitions_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_siem_definitions_test.go @@ -19,7 +19,7 @@ func TestAccAkamaiSiemDefinitions_data_basic(t *testing.T) { client.On("GetSiemDefinitions", mock.Anything, // ctx is irrelevant for this test - appsec.GetSiemDefinitionsRequest{}, + appsec.GetSiemDefinitionsRequest{SiemDefinitionName: "SIEM Version 01"}, ).Return(&cv, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index cf47c6a1f..5a4019ce8 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -61,6 +61,8 @@ func RenderTemplates(ots map[string]*OutputTemplate, key string, str interface{} } return s[start:end] }, + + "replace": func(old, new, src string) string { return strings.Replace(src, old, new, -1) }, } ) @@ -118,7 +120,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["configuration"] = &OutputTemplate{TemplateName: "Configurations", TableTitle: "Config_id|Name|Latest_version|Version_active_in_staging|Version_active_in_production", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .Configurations}}{{if $index}},{{end}}{{.ID}}|{{.Name}}|{{.LatestVersion}}|{{.StagingVersion}}|{{.ProductionVersion}}{{end}}"} otm["configurationVersion"] = &OutputTemplate{TemplateName: "ConfigurationVersion", TableTitle: "Version Number|Staging Status|Production Status", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .VersionList}}{{if $index}},{{end}}{{.Version}}|{{.Staging.Status}}|{{.Production.Status}}{{end}}"} - otm["contractsgroupsDS"] = &OutputTemplate{TemplateName: "contractsgroupsDS", TableTitle: "Contract|Groupid|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .ContractGroups}}{{if $index}},{{end}}{{.ContractID}}|{{.GroupID}}|{{.DisplayName}}{{end}}"} + otm["contractsgroupsDS"] = &OutputTemplate{TemplateName: "contractsgroupsDS", TableTitle: "ContractID|GroupID|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .ContractGroups}}{{if $index}},{{end}}{{.ContractID}}|{{.GroupID}}|{{.DisplayName}}{{end}}"} otm["failoverHostnamesDS"] = &OutputTemplate{TemplateName: "failoverHostnamesDS", TableTitle: "Config ID|Config Version", TemplateType: "TABULAR", TemplateString: "{{.ConfigID}}|{{.ConfigVersion}}"} otm["penaltyBoxDS"] = &OutputTemplate{TemplateName: "penaltyBoxDS", TableTitle: "PenaltyBoxProtection|Action", TemplateType: "TABULAR", TemplateString: "{{.PenaltyBoxProtection}}|{{.Action}}"} @@ -148,7 +150,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["RulesDS"] = &OutputTemplate{TemplateName: "RulesDS", TableTitle: "ID|Action", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .RuleActions}}{{if $index}},{{end}}{{.ID}}|{{.Action}}{{end}}"} otm["EvalRulesActionsDS"] = &OutputTemplate{TemplateName: "evalRulesActions", TableTitle: "ID|Action", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .RuleActions}}{{if $index}},{{end}}{{.ID}}| {{.Action}}{{end}}"} otm["evalHostnamesDS"] = &OutputTemplate{TemplateName: "evalHostnamesDS", TableTitle: "Hostnames", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .Hostnames}}{{if $index}},{{end}}{{.}}{{end}}"} - otm["rulesets"] = &OutputTemplate{TemplateName: "rulesets", TableTitle: "ID|Name(Title)", TemplateType: "TABULAR", TemplateString: "{{range .Rulesets}}{{range $index, $element := .Rules}}{{if $index}},{{end}}{{.ID}}| {{.Title}}{{end}}{{end}}"} + otm["rulesets"] = &OutputTemplate{TemplateName: "rulesets", TableTitle: "ID|Name(Title)", TemplateType: "TABULAR", TemplateString: "{{range .Rulesets}}{{range $index, $element := .Rules}}{{if $index}},{{end}}{{.ID}}| {{substring 0 45 .Title}}{{end}}{{end}}"} otm["securityPolicies"] = &OutputTemplate{TemplateName: "securityPolicies", TableTitle: "ID|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .SecurityPolicies}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} otm["securityPoliciesDS"] = &OutputTemplate{TemplateName: "securityPolicies", TableTitle: "ID|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .Policies}}{{if $index}},{{end}}{{.PolicyID}}|{{.PolicyName}}{{end}}"} diff --git a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/match_by_id.tf index b13641f04..e5402e2f6 100644 --- a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/match_by_id.tf @@ -5,6 +5,7 @@ provider "akamai" { data "akamai_appsec_advanced_settings_logging" "test" { config_id = 43253 version = 7 + } diff --git a/pkg/providers/appsec/testdata/TestDSCustomDeny/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSCustomDeny/match_by_id.tf index f7d44f2f4..df7405554 100644 --- a/pkg/providers/appsec/testdata/TestDSCustomDeny/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSCustomDeny/match_by_id.tf @@ -5,6 +5,6 @@ provider "akamai" { data "akamai_appsec_custom_deny" "test" { config_id = 43253 version = 7 - custom_deny_id = "deny_custom_54994" + custom_deny_id = "deny_custom_622918" } diff --git a/pkg/providers/appsec/testdata/TestDSEvalHostnames/EvalHostnames.json b/pkg/providers/appsec/testdata/TestDSEvalHostnames/EvalHostnames.json index fc05a0cfe..6b91a4a6b 100644 --- a/pkg/providers/appsec/testdata/TestDSEvalHostnames/EvalHostnames.json +++ b/pkg/providers/appsec/testdata/TestDSEvalHostnames/EvalHostnames.json @@ -1,38 +1,7 @@ -[ - { - "attackGroupActions": [ - { - "action": "none", - "group": "TOOL" - }, - { - "action": "none", - "group": "PROTOCOL" - }, - { - "action": "none", - "group": "SQL" - }, - { - "action": "none", - "group": "XSS" - }, - { - "action": "none", - "group": "LFI" - }, - { - "action": "none", - "group": "RFI" - }, - { - "action": "none", - "group": "CMDI" - }, - { - "action": "none", - "group": "PLATFORM" - } - ] - } -] \ No newline at end of file +{ + "hostnmes": [ + "*.exsmple.net", + "example.com", + "m.example.com" + ] +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSEvalHostnames/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSEvalHostnames/match_by_id.tf index 961c51221..e53121f57 100644 --- a/pkg/providers/appsec/testdata/TestDSEvalHostnames/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSEvalHostnames/match_by_id.tf @@ -2,7 +2,7 @@ provider "akamai" { edgerc = "~/.edgerc" } -data "akamai_appsec_eval_hostnames" "eval_hostnames" { +data "akamai_appsec_eval_hostnames" "test" { config_id = 43253 version = 7 } diff --git a/pkg/providers/appsec/testdata/TestDSReputationAnalysis/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSReputationAnalysis/match_by_id.tf index 9f4d91dce..74caf567a 100644 --- a/pkg/providers/appsec/testdata/TestDSReputationAnalysis/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSReputationAnalysis/match_by_id.tf @@ -4,7 +4,7 @@ provider "akamai" { -data "akamai_appsec_reputation_analysis" "reputation_analysis" { +data "akamai_appsec_reputation_analysis" "test" { config_id = 43253 version = 7 security_policy_id = "AAAA_81230" diff --git a/pkg/providers/appsec/testdata/TestDSSiemSettings/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSSiemSettings/match_by_id.tf index e33b21f4d..445ace6aa 100644 --- a/pkg/providers/appsec/testdata/TestDSSiemSettings/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSSiemSettings/match_by_id.tf @@ -2,7 +2,7 @@ provider "akamai" { edgerc = "~/.edgerc" } -data "akamai_appsec_siem_settings" "siem_settings" { +data "akamai_appsec_siem_settings" "test" { config_id = 43253 version = 7 } diff --git a/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf b/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf index c09e4baf1..ce1dc960b 100644 --- a/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf @@ -6,6 +6,7 @@ provider "akamai" { resource "akamai_appsec_advanced_settings" "logging" { config_id = 43253 version = 7 + security_policy_id = "AAAA_81230" logging = <<-EOF { "allowSampling": true, From a62fa2d9af8f68fffc0d4f5938c70bfba58ca665 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Mon, 11 Jan 2021 10:25:59 -0600 Subject: [PATCH 014/215] Refactor tests consolidate api constraints and advanced settings --- pkg/providers/appsec/appsec_test.go | 30 ---- ...akamai_appsec_advanced_settings_logging.go | 12 ++ ...appsec_advanced_settings_policy_logging.go | 98 ------------- ...c_advanced_settings_policy_logging_test.go | 43 ------ ..._appsec_advanced_settings_prefetch_test.go | 2 +- ...ata_akamai_appsec_api_hostname_coverage.go | 9 +- ...kamai_appsec_api_hostname_coverage_test.go | 4 +- ...mai_appsec_api_request_constraints_test.go | 2 +- ...ata_akamai_appsec_contracts_groups_test.go | 2 +- .../data_akamai_appsec_custom_deny_test.go | 6 +- .../data_akamai_appsec_match_targets_test.go | 4 +- ...data_akamai_appsec_policy_api_endpoints.go | 108 -------------- ...akamai_appsec_policy_api_endpoints_test.go | 43 ------ ...ata_akamai_appsec_siem_definitions_test.go | 2 +- pkg/providers/appsec/provider.go | 4 +- ...akamai_appsec_advanced_settings_logging.go | 17 ++- ...i_appsec_advanced_settings_logging_test.go | 14 +- ...appsec_advanced_settings_policy_logging.go | 132 ------------------ ...c_advanced_settings_policy_logging_test.go | 52 ------- ..._appsec_advanced_settings_prefetch_test.go | 4 +- ...mai_appsec_api_request_constraints_test.go | 2 +- .../resource_akamai_appsec_configuration.go | 15 +- ...ource_akamai_appsec_configuration_clone.go | 5 +- ..._akamai_appsec_configuration_clone_test.go | 13 +- ...source_akamai_appsec_configuration_test.go | 36 ++++- ...amai_appsec_configuration_version_clone.go | 4 +- ...appsec_configuration_version_clone_test.go | 15 +- ...resource_akamai_appsec_custom_deny_test.go | 70 +++++++++- .../resource_akamai_appsec_eval_host_test.go | 2 +- ...ce_akamai_appsec_eval_protect_host_test.go | 2 +- ...ource_akamai_appsec_reputation_analysis.go | 25 ++-- ..._akamai_appsec_reputation_analysis_test.go | 8 +- ...source_akamai_appsec_siem_settings_test.go | 2 +- .../match_by_id.tf | 1 - .../AdvancedSettingsPolicyLogging.json | 15 -- .../match_by_id.tf | 9 -- .../match_by_id.tf | 4 +- .../TestDSApiEndpoints/match_by_id.tf | 2 +- .../ApiHostnameCoverage.json | 3 +- .../TestDSApiHostnameCoverage/match_by_id.tf | 2 +- .../match_by_id.tf | 2 +- .../ApiRequestConstraints.json | 41 +----- .../match_by_id.tf | 4 +- .../TestDSAttackGroupActions/match_by_id.tf | 1 + .../TestDSContractsGroups/match_by_id.tf | 2 +- .../testdata/TestDSCustomDeny/CustomDeny.json | 2 +- .../TestDSCustomDeny/CustomDenyList.json | 2 +- .../testdata/TestDSCustomDeny/match_by_id.tf | 2 +- .../TestDSEvalHostnames/EvalHostnames.json | 4 +- .../PolicyApiEndpoints.json | 23 --- .../TestDSPolicyApiEndpoints/match_by_id.tf | 11 -- .../AdvancedSettingsLogging.json | 3 +- .../match_by_id.tf | 3 +- .../AdvancedSettingsPolicyLogging.json | 15 -- .../match_by_id.tf | 29 ---- .../match_by_id.tf | 2 +- .../match_by_id.tf | 4 +- .../TestResConfiguration/Configuration.json | 11 +- .../ConfigurationCreate.json | 6 + .../ConfigurationUpdate.json | 5 + .../TestResConfiguration/match_by_id.tf | 2 +- .../TestResConfiguration/update_by_id.tf | 13 ++ .../TestResConfigurationClone/test.json | 14 ++ .../ConfigurationVersionClone.json | 5 +- .../TestResCustomDeny/CustomDenyCreate.json | 24 ++++ .../TestResCustomDeny/CustomDenyUpdate.json | 28 ++++ .../testdata/TestResCustomDeny/match_by_id.tf | 2 +- .../TestResCustomDeny/update_by_id.tf | 36 +++++ .../testdata/TestResEvalHost/match_by_id.tf | 2 +- .../TestResEvalProtectHost/match_by_id.tf | 9 +- .../ReputationAnalysisDelete.json | 5 + .../ReputationAnalysisUpdated.json | 2 +- .../TestResReputationAnalysis/match_by_id.tf | 2 +- 73 files changed, 383 insertions(+), 756 deletions(-) delete mode 100644 pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging.go delete mode 100644 pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging_test.go delete mode 100644 pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints.go delete mode 100644 pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints_test.go delete mode 100644 pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging.go delete mode 100644 pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging_test.go delete mode 100644 pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json delete mode 100644 pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf delete mode 100644 pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/PolicyApiEndpoints.json delete mode 100644 pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/match_by_id.tf delete mode 100644 pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json delete mode 100644 pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResConfiguration/ConfigurationCreate.json create mode 100644 pkg/providers/appsec/testdata/TestResConfiguration/ConfigurationUpdate.json create mode 100644 pkg/providers/appsec/testdata/TestResConfiguration/update_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResConfigurationClone/test.json create mode 100644 pkg/providers/appsec/testdata/TestResCustomDeny/CustomDenyCreate.json create mode 100644 pkg/providers/appsec/testdata/TestResCustomDeny/CustomDenyUpdate.json create mode 100644 pkg/providers/appsec/testdata/TestResCustomDeny/update_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysisDelete.json diff --git a/pkg/providers/appsec/appsec_test.go b/pkg/providers/appsec/appsec_test.go index a66b3c979..eee790b10 100644 --- a/pkg/providers/appsec/appsec_test.go +++ b/pkg/providers/appsec/appsec_test.go @@ -151,16 +151,6 @@ func (p *mockappsec) UpdateAdvancedSettingsPrefetch(ctx context.Context, params return args.Get(0).(*appsec.UpdateAdvancedSettingsPrefetchResponse), args.Error(1) } -func (p *mockappsec) GetAdvancedSettingsPolicyLogging(ctx context.Context, params appsec.GetAdvancedSettingsPolicyLoggingRequest) (*appsec.GetAdvancedSettingsPolicyLoggingResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*appsec.GetAdvancedSettingsPolicyLoggingResponse), args.Error(1) -} - func (p *mockappsec) UpdateAdvancedSettingsLogging(ctx context.Context, params appsec.UpdateAdvancedSettingsLoggingRequest) (*appsec.UpdateAdvancedSettingsLoggingResponse, error) { args := p.Called(ctx, params) @@ -171,16 +161,6 @@ func (p *mockappsec) UpdateAdvancedSettingsLogging(ctx context.Context, params a return args.Get(0).(*appsec.UpdateAdvancedSettingsLoggingResponse), args.Error(1) } -func (p *mockappsec) UpdateAdvancedSettingsPolicyLogging(ctx context.Context, params appsec.UpdateAdvancedSettingsPolicyLoggingRequest) (*appsec.UpdateAdvancedSettingsPolicyLoggingResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*appsec.UpdateAdvancedSettingsPolicyLoggingResponse), args.Error(1) -} - func (p *mockappsec) GetApiEndpoints(ctx context.Context, params appsec.GetApiEndpointsRequest) (*appsec.GetApiEndpointsResponse, error) { args := p.Called(ctx, params) @@ -241,16 +221,6 @@ func (p *mockappsec) UpdateApiRequestConstraints(ctx context.Context, params app return args.Get(0).(*appsec.UpdateApiRequestConstraintsResponse), args.Error(1) } -func (p *mockappsec) GetPolicyApiEndpoints(ctx context.Context, params appsec.GetPolicyApiEndpointsRequest) (*appsec.GetPolicyApiEndpointsResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*appsec.GetPolicyApiEndpointsResponse), args.Error(1) -} - func (p *mockappsec) GetContractsGroups(ctx context.Context, params appsec.GetContractsGroupsRequest) (*appsec.GetContractsGroupsResponse, error) { args := p.Called(ctx, params) diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go index 380e61c06..d1ed97d44 100644 --- a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go +++ b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go @@ -60,6 +60,18 @@ func dataSourceAdvancedSettingsLoggingRead(ctx context.Context, d *schema.Resour } getAdvancedSettingsLogging.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsLogging.PolicyID = policyid + + if policyid != "" { + + } else { + + } + advancedsettingslogging, err := client.GetAdvancedSettingsLogging(ctx, getAdvancedSettingsLogging) if err != nil { logger.Errorf("calling 'getAdvancedSettingsLogging': %s", err.Error()) diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging.go deleted file mode 100644 index 84cdec089..000000000 --- a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging.go +++ /dev/null @@ -1,98 +0,0 @@ -package appsec - -import ( - "context" - "encoding/json" - "errors" - "fmt" - "strconv" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" - "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" -) - -func dataSourceAdvancedSettingsPolicyLogging() *schema.Resource { - return &schema.Resource{ - ReadContext: dataSourceAdvancedSettingsPolicyLoggingRead, - Schema: map[string]*schema.Schema{ - "config_id": { - Type: schema.TypeInt, - Required: true, - }, - "version": &schema.Schema{ - Type: schema.TypeInt, - Required: true, - }, - "security_policy_id": { - Type: schema.TypeString, - Required: true, - }, - "json": { - Type: schema.TypeString, - Computed: true, - }, - "output_text": { - Type: schema.TypeString, - Computed: true, - Description: "Text Export representation", - }, - }, - } -} - -func dataSourceAdvancedSettingsPolicyLoggingRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceAdvancedSettingsPolicyLoggingRead") - - getAdvancedSettingsPolicyLogging := appsec.GetAdvancedSettingsPolicyLoggingRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAdvancedSettingsPolicyLogging.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAdvancedSettingsPolicyLogging.Version = version - - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAdvancedSettingsPolicyLogging.PolicyID = policyid - - advancedsettingspolicylogging, err := client.GetAdvancedSettingsPolicyLogging(ctx, getAdvancedSettingsPolicyLogging) - if err != nil { - logger.Errorf("calling 'getAdvancedSettingsPolicyLogging': %s", err.Error()) - return diag.FromErr(err) - } - - ots := OutputTemplates{} - InitTemplates(ots) - - outputtext, err := RenderTemplates(ots, "advancedSettingsPolicyLoggingDS", advancedsettingspolicylogging) - if err == nil { - d.Set("output_text", outputtext) - } - - jsonBody, err := json.Marshal(advancedsettingspolicylogging) - if err != nil { - return diag.FromErr(err) - } - - if err := d.Set("json", string(jsonBody)); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } - - d.SetId(strconv.Itoa(getAdvancedSettingsPolicyLogging.ConfigID)) - - return nil -} diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging_test.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging_test.go deleted file mode 100644 index 8525342e6..000000000 --- a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_policy_logging_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package appsec - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiAdvancedSettingsPolicyLogging_data_basic(t *testing.T) { - t.Run("match by AdvancedSettingsPolicyLogging ID", func(t *testing.T) { - client := &mockappsec{} - - cv := appsec.GetAdvancedSettingsPolicyLoggingResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestDSAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json")) - json.Unmarshal([]byte(expectJS), &cv) - - client.On("GetAdvancedSettingsPolicyLogging", - mock.Anything, // ctx is irrelevant for this test - appsec.GetAdvancedSettingsPolicyLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, - ).Return(&cv, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_advanced_settings_policy_logging.test", "id", "43253"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch_test.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch_test.go index 047a9d1c0..d8053d694 100644 --- a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch_test.go @@ -19,7 +19,7 @@ func TestAccAkamaiAdvancedSettingsPrefetch_data_basic(t *testing.T) { client.On("GetAdvancedSettingsPrefetch", mock.Anything, // ctx is irrelevant for this test - appsec.GetAdvancedSettingsPrefetchRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + appsec.GetAdvancedSettingsPrefetchRequest{ConfigID: 43253, Version: 7}, ).Return(&cv, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go index b0ee178e3..04427376e 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go @@ -61,7 +61,14 @@ func dataSourceApiHostnameCoverageRead(ctx context.Context, d *schema.ResourceDa return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(getApiHostnameCoverage.ConfigID)) + if len(apihostnamecoverage.HostnameCoverage) > 0 { + for _, configval := range apihostnamecoverage.HostnameCoverage { + + if configval.Configuration.ID != 0 { + d.SetId(strconv.Itoa(configval.Configuration.ID)) + } + } + } return nil } diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go index 8281d7467..ef72c1e73 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go @@ -19,7 +19,7 @@ func TestAccAkamaiApiHostnameCoverage_data_basic(t *testing.T) { client.On("GetApiHostnameCoverage", mock.Anything, // ctx is irrelevant for this test - appsec.GetApiHostnameCoverageRequest{ConfigID: 43253, Version: 7}, + appsec.GetApiHostnameCoverageRequest{}, ).Return(&cv, nil) useClient(client, func() { @@ -30,7 +30,7 @@ func TestAccAkamaiApiHostnameCoverage_data_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestDSApiHostnameCoverage/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_api_hostname_coverage.test", "id", "43253"), + resource.TestCheckResourceAttr("data.akamai_appsec_api_hostname_coverage.test", "id", "3644"), ), }, }, diff --git a/pkg/providers/appsec/data_akamai_appsec_api_request_constraints_test.go b/pkg/providers/appsec/data_akamai_appsec_api_request_constraints_test.go index de54eae9d..79f28fc2c 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_request_constraints_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_request_constraints_test.go @@ -19,7 +19,7 @@ func TestAccAkamaiApiRequestConstraints_data_basic(t *testing.T) { client.On("GetApiRequestConstraints", mock.Anything, // ctx is irrelevant for this test - appsec.GetApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + appsec.GetApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ApiID: 1}, ).Return(&cv, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/data_akamai_appsec_contracts_groups_test.go b/pkg/providers/appsec/data_akamai_appsec_contracts_groups_test.go index 9910a57c4..7c741b326 100644 --- a/pkg/providers/appsec/data_akamai_appsec_contracts_groups_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_contracts_groups_test.go @@ -30,7 +30,7 @@ func TestAccAkamaiContractsGroups_data_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestDSContractsGroups/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_contracts_groups.test", "id", "43253"), + resource.TestCheckResourceAttr("data.akamai_appsec_contracts_groups.test", "id", "C-1FRYVV3"), ), }, }, diff --git a/pkg/providers/appsec/data_akamai_appsec_custom_deny_test.go b/pkg/providers/appsec/data_akamai_appsec_custom_deny_test.go index 97743e249..b828a12f0 100644 --- a/pkg/providers/appsec/data_akamai_appsec_custom_deny_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_custom_deny_test.go @@ -14,12 +14,12 @@ func TestAccAkamaiCustomDeny_data_basic(t *testing.T) { client := &mockappsec{} cv := appsec.GetCustomDenyListResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestDSCustomDeny/CustomDeny.json")) + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSCustomDeny/CustomDenyList.json")) json.Unmarshal([]byte(expectJS), &cv) client.On("GetCustomDenyList", mock.Anything, // ctx is irrelevant for this test - appsec.GetCustomDenyListRequest{ConfigID: 43253, Version: 7, ID: "deny_custom_622918"}, + appsec.GetCustomDenyListRequest{ConfigID: 43253, Version: 7, ID: "deny_custom_54994"}, ).Return(&cv, nil) useClient(client, func() { @@ -30,7 +30,7 @@ func TestAccAkamaiCustomDeny_data_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestDSCustomDeny/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_custom_deny.test", "custom_deny_id", "deny_custom_622918"), + resource.TestCheckResourceAttr("data.akamai_appsec_custom_deny.test", "custom_deny_id", "deny_custom_54994"), ), }, }, diff --git a/pkg/providers/appsec/data_akamai_appsec_match_targets_test.go b/pkg/providers/appsec/data_akamai_appsec_match_targets_test.go index caa01eacb..c99d35577 100644 --- a/pkg/providers/appsec/data_akamai_appsec_match_targets_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_match_targets_test.go @@ -19,12 +19,12 @@ func TestAccAkamaiMatchTargets_data_basic(t *testing.T) { client.On("GetMatchTargets", mock.Anything, // ctx is irrelevant for this test - appsec.GetMatchTargetsRequest{ConfigID: 43253, ConfigVersion: 15}, + appsec.GetMatchTargetsRequest{ConfigID: 43253, ConfigVersion: 7}, ).Return(&cv, nil) useClient(client, func() { resource.Test(t, resource.TestCase{ - IsUnitTest: true, + IsUnitTest: false, Providers: testAccProviders, Steps: []resource.TestStep{ { diff --git a/pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints.go b/pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints.go deleted file mode 100644 index 79d7015f8..000000000 --- a/pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints.go +++ /dev/null @@ -1,108 +0,0 @@ -package appsec - -import ( - "context" - "encoding/json" - "errors" - "fmt" - "strconv" - - v2 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" - "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" -) - -func dataSourcePolicyApiEndpoints() *schema.Resource { - return &schema.Resource{ - ReadContext: dataSourceApiEndpointsRead, - Schema: map[string]*schema.Schema{ - "config_id": { - Type: schema.TypeInt, - Required: true, - }, - "version": &schema.Schema{ - Type: schema.TypeInt, - Required: true, - }, - "security_policy_id": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Optional: true, - }, - "json": { - Type: schema.TypeString, - Computed: true, - }, - "output_text": { - Type: schema.TypeString, - Computed: true, - Description: "Text Export representation", - }, - }, - } -} - -func dataSourcePolicyApiEndpointsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceApiEndpointsRead") - - getPolicyApiEndpoints := v2.GetPolicyApiEndpointsRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getPolicyApiEndpoints.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getPolicyApiEndpoints.Version = version - - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getPolicyApiEndpoints.PolicyID = policyid - - apiPolicyEndpoints, err := client.GetPolicyApiEndpoints(ctx, getPolicyApiEndpoints) - if err != nil { - logger.Errorf("calling 'getPolicyApiEndpoints': %s", err.Error()) - return diag.FromErr(err) - } - - ots := OutputTemplates{} - InitTemplates(ots) - - outputtext, err := RenderTemplates(ots, "policyApiEndpointsDS", apiPolicyEndpoints) - if err == nil { - d.Set("output_text", outputtext) - } - - jsonBody, err := json.Marshal(apiPolicyEndpoints) - if err != nil { - return diag.FromErr(err) - } - - if err := d.Set("json", string(jsonBody)); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } - - if len(apiPolicyEndpoints.APIEndpoints) > 0 { - - //d.SetId(strconv.Itoa(getCustomDeny.ConfigID)) - d.SetId(strconv.Itoa(apiPolicyEndpoints.APIEndpoints[0].ID)) - } - - //d.SetId(strconv.Itoa(getApiEndpoints.ConfigID)) - - return nil -} diff --git a/pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints_test.go b/pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints_test.go deleted file mode 100644 index 1d4b27258..000000000 --- a/pkg/providers/appsec/data_akamai_appsec_policy_api_endpoints_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package appsec - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiPolicyApiEndpoints_data_basic(t *testing.T) { - t.Run("match by ApiEndpoints ID", func(t *testing.T) { - client := &mockappsec{} - - cv := appsec.GetPolicyApiEndpointsResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestDSPolicyApiEndpoints/PolicyApiEndpoints.json")) - json.Unmarshal([]byte(expectJS), &cv) - - client.On("GetApiEndpoints", - mock.Anything, // ctx is irrelevant for this test - appsec.GetPolicyApiEndpointsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ID: 619183}, - ).Return(&cv, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestDSPolicyApiEndpoints/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_policy_api_endpoints.test", "id", "619183"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/appsec/data_akamai_appsec_siem_definitions_test.go b/pkg/providers/appsec/data_akamai_appsec_siem_definitions_test.go index d46934fcc..4c53953a1 100644 --- a/pkg/providers/appsec/data_akamai_appsec_siem_definitions_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_siem_definitions_test.go @@ -19,7 +19,7 @@ func TestAccAkamaiSiemDefinitions_data_basic(t *testing.T) { client.On("GetSiemDefinitions", mock.Anything, // ctx is irrelevant for this test - appsec.GetSiemDefinitionsRequest{SiemDefinitionName: "SIEM Version 01"}, + appsec.GetSiemDefinitionsRequest{ID: 0, SiemDefinitionName: "SIEM Version 01"}, ).Return(&cv, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index 35b111db0..dbe56b1a7 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -62,13 +62,11 @@ func Provider() *schema.Provider { }, DataSourcesMap: map[string]*schema.Resource{ "akamai_appsec_advanced_settings_logging": dataSourceAdvancedSettingsLogging(), - "akamai_appsec_advanced_settings_policy_logging": dataSourceAdvancedSettingsPolicyLogging(), "akamai_appsec_advanced_settings_prefetch": dataSourceAdvancedSettingsPrefetch(), "akamai_appsec_api_endpoints": dataSourceApiEndpoints(), "akamai_appsec_api_hostname_coverage": dataSourceApiHostnameCoverage(), "akamai_appsec_api_hostname_coverage_overlapping": dataSourceApiHostnameCoverageOverlapping(), "akamai_appsec_api_hostname_coverage_match_targets": dataSourceApiHostnameCoverageMatchTargets(), - "akamai_appsec_policy_api_endpoints": dataSourcePolicyApiEndpoints(), "akamai_appsec_api_request_constraints": dataSourceApiRequestConstraints(), "akamai_appsec_configuration": dataSourceConfiguration(), "akamai_appsec_configuration_version": dataSourceConfigurationVersion(), @@ -111,7 +109,7 @@ func Provider() *schema.Provider { ResourcesMap: map[string]*schema.Resource{ "akamai_appsec_advanced_settings": resourceAdvancedSettingsLogging(), "akamai_appsec_advanced_settings_prefetch": resourceAdvancedSettingsPrefetch(), - "akamai_api_request_constraints": resourceApiRequestConstraints(), + "akamai_appsec_api_request_constraints": resourceApiRequestConstraints(), "akamai_appsec_configuration": resourceConfiguration(), "akamai_appsec_configuration_clone": resourceConfigurationClone(), "akamai_appsec_configuration_version_clone": resourceConfigurationVersionClone(), diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go index 0165f87e3..83f72a96b 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go @@ -35,7 +35,10 @@ func resourceAdvancedSettingsLogging() *schema.Resource { Type: schema.TypeInt, Required: true, }, - + "security_policy_id": { + Type: schema.TypeString, + Optional: true, + }, "logging": { Type: schema.TypeString, Required: true, @@ -64,6 +67,12 @@ func resourceAdvancedSettingsLoggingRead(ctx context.Context, d *schema.Resource } getAdvancedSettingsLogging.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsLogging.PolicyID = policyid + advancedsettingslogging, err := client.GetAdvancedSettingsLogging(ctx, getAdvancedSettingsLogging) if err != nil { logger.Errorf("calling 'getAdvancedSettingsLogging': %s", err.Error()) @@ -107,6 +116,12 @@ func resourceAdvancedSettingsLoggingUpdate(ctx context.Context, d *schema.Resour } updateAdvancedSettingsLogging.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsLogging.PolicyID = policyid + _, erru := client.UpdateAdvancedSettingsLogging(ctx, updateAdvancedSettingsLogging) if erru != nil { logger.Errorf("calling 'updateAdvancedSettingsLogging': %s", erru.Error()) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go index 8005ee400..1c3d3f662 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go @@ -23,12 +23,20 @@ func TestAccAkamaiAdvancedSettingsLogging_res_basic(t *testing.T) { client.On("GetAdvancedSettingsLogging", mock.Anything, // ctx is irrelevant for this test - appsec.GetAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + appsec.GetAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7}, ).Return(&cr, nil) client.On("UpdateAdvancedSettingsLogging", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + appsec.UpdateAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "", AllowSampling: false, Cookies: struct { + Type string "json:\"type\"" + }{Type: ""}, CustomHeaders: struct { + Type string "json:\"type\"" + Values []string "json:\"values\"" + }{Type: "", Values: []string(nil)}, StandardHeaders: struct { + Type string "json:\"type\"" + Values []string "json:\"values\"" + }{Type: "", Values: []string(nil)}}, ).Return(&cu, nil) useClient(client, func() { @@ -39,7 +47,7 @@ func TestAccAkamaiAdvancedSettingsLogging_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResAdvancedSettingsLogging/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_advanced_settings_logging.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_advanced_settings.test", "id", "43253"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging.go deleted file mode 100644 index c04624834..000000000 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging.go +++ /dev/null @@ -1,132 +0,0 @@ -package appsec - -import ( - "context" - "errors" - "strconv" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" - "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" -) - -// appsec v1 -// -// https://developer.akamai.com/api/cloud_security/application_security/v1.html -func resourceAdvancedSettingsPolicyLogging() *schema.Resource { - return &schema.Resource{ - CreateContext: resourceAdvancedSettingsPolicyLoggingUpdate, - ReadContext: resourceAdvancedSettingsPolicyLoggingRead, - UpdateContext: resourceAdvancedSettingsPolicyLoggingUpdate, - DeleteContext: resourceAdvancedSettingsPolicyLoggingDelete, - Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, - }, - Schema: map[string]*schema.Schema{ - "config_id": { - Type: schema.TypeInt, - Required: true, - }, - "version": { - Type: schema.TypeInt, - Required: true, - }, - "security_policy_id": { - Type: schema.TypeString, - Required: true, - }, - "logging": { - Type: schema.TypeString, - Required: true, - ValidateFunc: validation.StringIsJSON, - }, - }, - } -} - -func resourceAdvancedSettingsPolicyLoggingRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceAdvancedSettingsPolicyLoggingRead") - - getAdvancedSettingsPolicyLogging := appsec.GetAdvancedSettingsPolicyLoggingRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAdvancedSettingsPolicyLogging.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAdvancedSettingsPolicyLogging.Version = version - - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAdvancedSettingsPolicyLogging.PolicyID = policyid - - advancedsettingspolicylogging, err := client.GetAdvancedSettingsPolicyLogging(ctx, getAdvancedSettingsPolicyLogging) - if err != nil { - logger.Errorf("calling 'getAdvancedSettingsPolicyLogging': %s", err.Error()) - return diag.FromErr(err) - } - - ots := OutputTemplates{} - InitTemplates(ots) - - outputtext, err := RenderTemplates(ots, "advancedSettingsPolicyLoggingDS", advancedsettingspolicylogging) - if err == nil { - d.Set("output_text", outputtext) - } - - d.SetId(strconv.Itoa(getAdvancedSettingsPolicyLogging.ConfigID)) - - return nil -} - -func resourceAdvancedSettingsPolicyLoggingDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - - return schema.NoopContext(nil, d, m) -} - -func resourceAdvancedSettingsPolicyLoggingUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceAdvancedSettingsPolicyLoggingUpdate") - - updateAdvancedSettingsPolicyLogging := appsec.UpdateAdvancedSettingsPolicyLoggingRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAdvancedSettingsPolicyLogging.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAdvancedSettingsPolicyLogging.Version = version - - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAdvancedSettingsPolicyLogging.PolicyID = policyid - - _, erru := client.UpdateAdvancedSettingsPolicyLogging(ctx, updateAdvancedSettingsPolicyLogging) - if erru != nil { - logger.Errorf("calling 'updateAdvancedSettingsPolicyLogging': %s", erru.Error()) - return diag.FromErr(erru) - } - - return resourceAdvancedSettingsPolicyLoggingRead(ctx, d, m) -} diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging_test.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging_test.go deleted file mode 100644 index b11215839..000000000 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_policy_logging_test.go +++ /dev/null @@ -1,52 +0,0 @@ -package appsec - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiAdvancedSettingsPolicyLogging_res_basic(t *testing.T) { - t.Run("match by AdvancedSettingsPolicyLogging ID", func(t *testing.T) { - client := &mockappsec{} - - cu := appsec.UpdateAdvancedSettingsPolicyLoggingResponse{} - expectJSU := compactJSON(loadFixtureBytes("testdata/TestResAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json")) - json.Unmarshal([]byte(expectJSU), &cu) - - cr := appsec.GetAdvancedSettingsPolicyLoggingResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestResAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json")) - json.Unmarshal([]byte(expectJS), &cr) - - client.On("GetAdvancedSettingsPolicyLogging", - mock.Anything, // ctx is irrelevant for this test - appsec.GetAdvancedSettingsPolicyLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, - ).Return(&cr, nil) - - client.On("UpdateAdvancedSettingsPolicyLogging", - mock.Anything, // ctx is irrelevant for this test - appsec.UpdateAdvancedSettingsPolicyLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, - ).Return(&cu, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestResAdvancedSettingsPolicyLogging/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_advanced_settings_policy_logging.test", "id", "43253"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch_test.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch_test.go index 5c1acc832..b554eef2d 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch_test.go @@ -28,12 +28,12 @@ func TestAccAkamaiAdvancedSettingsPrefetch_res_basic(t *testing.T) { client.On("UpdateAdvancedSettingsPrefetch", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateAdvancedSettingsPrefetchRequest{ConfigID: 43253, Version: 7}, + appsec.UpdateAdvancedSettingsPrefetchRequest{ConfigID: 43253, Version: 7, AllExtensions: true, EnableAppLayer: false, EnableRateControls: false, Extensions: []string{"cgi", "jsp", "aspx", "EMPTY_STRING", "php", "py", "asp"}}, ).Return(&cu, nil) useClient(client, func() { resource.Test(t, resource.TestCase{ - IsUnitTest: true, + IsUnitTest: false, Providers: testAccProviders, Steps: []resource.TestStep{ { diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go index 86b3aecf2..862df949c 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go @@ -28,7 +28,7 @@ func TestAccAkamaiApiRequestConstraints_res_basic(t *testing.T) { client.On("UpdateApiRequestConstraints", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", Action: "alert"}, + appsec.UpdateApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ApiID: 1, Action: "alert"}, ).Return(&cu, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration.go b/pkg/providers/appsec/resource_akamai_appsec_configuration.go index 038593e00..8b9d64328 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_configuration.go +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration.go @@ -183,12 +183,19 @@ func resourceConfigurationRead(ctx context.Context, d *schema.ResourceData, m in logger := meta.Log("APPSEC", "resourceConfigurationRead") getConfiguration := appsec.GetConfigurationsRequest{} + /* + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getConfiguration.ConfigID = configid + */ + ID, errconv := strconv.Atoi(d.Id()) - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if errconv != nil { + return diag.FromErr(errconv) } - getConfiguration.ConfigID = configid + getConfiguration.ConfigID = ID configName, err := tools.GetStringValue("name", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_clone.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_clone.go index dfabf06f5..47467562c 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_configuration_clone.go +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_clone.go @@ -123,7 +123,7 @@ func resourceConfigurationCloneCreate(ctx context.Context, d *schema.ResourceDat logger.Errorf("calling 'createConfigurationClone': %s", err.Error()) return diag.FromErr(err) } - logger.Errorf("calling 'createConfigurationClone CCR ': %v", ccr) + //logger.Errorf("calling 'createConfigurationClone CCR ': %v", ccr) if err := d.Set("version", ccr.Version); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) @@ -194,5 +194,6 @@ func resourceConfigurationCloneDelete(ctx context.Context, d *schema.ResourceDat } func resourceConfigurationCloneUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - return schema.NoopContext(nil, d, m) + //return schema.NoopContext(nil, d, m) + return resourceConfigurationCloneRead(ctx, d, m) } diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_clone_test.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_clone_test.go index cd14fe492..4fc0a8f53 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_configuration_clone_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_clone_test.go @@ -21,7 +21,7 @@ func TestAccAkamaiConfigurationClone_res_basic(t *testing.T) { expectJS := compactJSON(loadFixtureBytes("testdata/TestResConfigurationClone/ConfigurationClone.json")) json.Unmarshal([]byte(expectJS), &cr) - crd := appsec.GetConfigurationCloneResponse{} + crd := appsec.RemoveConfigurationResponse{} expectJSD := compactJSON(loadFixtureBytes("testdata/TestResConfigurationClone/ConfigurationClone.json")) json.Unmarshal([]byte(expectJSD), &crd) @@ -33,10 +33,9 @@ func TestAccAkamaiConfigurationClone_res_basic(t *testing.T) { client.On("CreateConfigurationClone", mock.Anything, // ctx is irrelevant for this test appsec.CreateConfigurationCloneRequest{Name: "Test Configuratin", Description: "New configuration test", ContractID: "C-1FRYVV3", GroupID: 64867, Hostnames: []string{"rinaldi.sandbox.akamaideveloper.com", "sujala.sandbox.akamaideveloper.com"}, CreateFrom: struct { - ConfigID int `json:"configId"` - Version int `json:"version"` - }{ConfigID: 43253, - Version: 15}}, + ConfigID int "json:\"configId\"" + Version int "json:\"version\"" + }{ConfigID: 43253, Version: 7}}, ).Return(&cu, nil) client.On("RemoveConfiguration", @@ -46,13 +45,13 @@ func TestAccAkamaiConfigurationClone_res_basic(t *testing.T) { useClient(client, func() { resource.Test(t, resource.TestCase{ - IsUnitTest: false, + IsUnitTest: true, Providers: testAccProviders, Steps: []resource.TestStep{ { Config: loadFixtureString("testdata/TestResConfigurationClone/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_configuration_version_clone.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_configuration_clone.test", "id", "43253"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_test.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_test.go index 8df0d1f2e..5ad31e245 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_configuration_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_test.go @@ -14,23 +14,41 @@ func TestAccAkamaiConfiguration_res_basic(t *testing.T) { client := &mockappsec{} cu := appsec.UpdateConfigurationResponse{} - expectJSU := compactJSON(loadFixtureBytes("testdata/TestResConfiguration/Configuration.json")) + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResConfiguration/ConfigurationUpdate.json")) json.Unmarshal([]byte(expectJSU), &cu) - cr := appsec.GetConfigurationResponse{} + cr := appsec.GetConfigurationsResponse{} expectJS := compactJSON(loadFixtureBytes("testdata/TestResConfiguration/Configuration.json")) json.Unmarshal([]byte(expectJS), &cr) - client.On("GetConfiguration", + crd := appsec.RemoveConfigurationResponse{} + expectJSD := compactJSON(loadFixtureBytes("testdata/TestResConfiguration/Configuration.json")) + json.Unmarshal([]byte(expectJSD), &crd) + + ccr := appsec.CreateConfigurationResponse{} + expectJSC := compactJSON(loadFixtureBytes("testdata/TestResConfiguration/ConfigurationCreate.json")) + json.Unmarshal([]byte(expectJSC), &ccr) + + client.On("CreateConfiguration", mock.Anything, // ctx is irrelevant for this test - appsec.GetConfigurationRequest{}, + appsec.CreateConfigurationRequest{Name: "Akamai Tools New", Description: "TF Tools", ContractID: "C-1FRYVV3", GroupID: 64867, Hostnames: []string{"rinaldi.sandbox.akamaideveloper.com", "sujala.sandbox.akamaideveloper.com"}}, + ).Return(&ccr, nil) + + client.On("GetConfigurations", + mock.Anything, // ctx is irrelevant for this test + appsec.GetConfigurationsRequest{ConfigID: 432531, Name: "Akamai Tools New"}, ).Return(&cr, nil) client.On("UpdateConfiguration", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateConfigurationRequest{}, + appsec.UpdateConfigurationRequest{ConfigID: 432531, Name: "Akamai Tools New", Description: "TF Tools 1"}, ).Return(&cu, nil) + client.On("RemoveConfiguration", + mock.Anything, // ctx is irrelevant for this test + appsec.RemoveConfigurationRequest{ConfigID: 432531}, + ).Return(&crd, nil) + useClient(client, func() { resource.Test(t, resource.TestCase{ IsUnitTest: true, @@ -39,7 +57,13 @@ func TestAccAkamaiConfiguration_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResConfiguration/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_configuration.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_configuration.test", "id", "432531"), + ), + }, + { + Config: loadFixtureString("testdata/TestResConfiguration/update_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_configuration.test", "id", "432531"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone.go index 51babfcba..f01a8ef16 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone.go +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone.go @@ -87,14 +87,14 @@ func resourceConfigurationVersionCloneRead(ctx context.Context, d *schema.Resour } getConfigurationVersionClone.Version = version - _, err := client.GetConfigurationVersionClone(ctx, getConfigurationVersionClone) + configurationversionclone, err := client.GetConfigurationVersionClone(ctx, getConfigurationVersionClone) if err != nil { logger.Errorf("calling 'getConfigurationVersionClone': %s", err.Error()) return diag.FromErr(err) } //d.SetId(strconv.Itoa(configurationversionclone.ConfigID)) - d.SetId(strconv.Itoa(version)) + d.SetId(strconv.Itoa(configurationversionclone.Version)) return nil } diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone_test.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone_test.go index dd5610a3f..5298731b4 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_version_clone_test.go @@ -21,9 +21,13 @@ func TestAccAkamaiConfigurationVersionClone_res_basic(t *testing.T) { expectJS := compactJSON(loadFixtureBytes("testdata/TestResConfigurationVersionClone/ConfigurationVersionClone.json")) json.Unmarshal([]byte(expectJS), &cr) + crd := appsec.RemoveConfigurationVersionCloneResponse{} + expectJSD := compactJSON(loadFixtureBytes("testdata/TestResConfigurationVersionClone/ConfigurationVersionClone.json")) + json.Unmarshal([]byte(expectJSD), &crd) + client.On("GetConfigurationVersionClone", mock.Anything, // ctx is irrelevant for this test - appsec.GetConfigurationVersionCloneRequest{ConfigID: 43253, Version: 7}, + appsec.GetConfigurationVersionCloneRequest{ConfigID: 43253, Version: 15}, ).Return(&cr, nil) client.On("CreateConfigurationVersionClone", @@ -31,15 +35,20 @@ func TestAccAkamaiConfigurationVersionClone_res_basic(t *testing.T) { appsec.CreateConfigurationVersionCloneRequest{ConfigID: 43253, CreateFromVersion: 7}, ).Return(&cu, nil) + client.On("RemoveConfigurationVersionClone", + mock.Anything, // ctx is irrelevant for this test + appsec.RemoveConfigurationVersionCloneRequest{ConfigID: 43253, Version: 15}, + ).Return(&crd, nil) + useClient(client, func() { resource.Test(t, resource.TestCase{ - IsUnitTest: false, + IsUnitTest: true, Providers: testAccProviders, Steps: []resource.TestStep{ { Config: loadFixtureString("testdata/TestResConfigurationVersionClone/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_configuration_version_clone.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_configuration_version_clone.test", "id", "15"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go b/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go index 8faaa81e4..9fddd27fb 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go @@ -14,13 +14,26 @@ func TestAccAkamaiCustomDeny_res_basic(t *testing.T) { client := &mockappsec{} cu := appsec.UpdateCustomDenyResponse{} - expectJSU := compactJSON(loadFixtureBytes("testdata/TestResCustomDeny/CustomDeny.json")) + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResCustomDeny/CustomDenyUpdate.json")) json.Unmarshal([]byte(expectJSU), &cu) cr := appsec.GetCustomDenyResponse{} expectJS := compactJSON(loadFixtureBytes("testdata/TestResCustomDeny/CustomDeny.json")) json.Unmarshal([]byte(expectJS), &cr) + crd := appsec.RemoveCustomDenyResponse{} + expectJSD := compactJSON(loadFixtureBytes("testdata/TestResCustomDeny/CustomDeny.json")) + json.Unmarshal([]byte(expectJSD), &crd) + + client.On("RemoveCustomDeny", + mock.Anything, // ctx is irrelevant for this test + appsec.RemoveCustomDenyRequest{ConfigID: 43253, Version: 7, ID: "deny_custom_622918"}, + ).Return(&crd, nil) + + crc := appsec.CreateCustomDenyResponse{} + expectJSC := compactJSON(loadFixtureBytes("testdata/TestResCustomDeny/CustomDenyCreate.json")) + json.Unmarshal([]byte(expectJSC), &crc) + client.On("GetCustomDeny", mock.Anything, // ctx is irrelevant for this test appsec.GetCustomDenyRequest{ConfigID: 43253, Version: 7, ID: "deny_custom_622918"}, @@ -28,9 +41,54 @@ func TestAccAkamaiCustomDeny_res_basic(t *testing.T) { client.On("UpdateCustomDeny", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateCustomDenyRequest{ConfigID: 43253, Version: 7, ID: "deny_custom_622918"}, + appsec.UpdateCustomDenyRequest{ConfigID: 43253, Version: 7, Description: "testing", Name: "new_custom_deny", ID: "deny_custom_622918", Parameters: []struct { + DisplayName string "json:\"displayName\"" + Name string "json:\"name\"" + Value string "json:\"value\"" + }{struct { + DisplayName string "json:\"displayName\"" + Name string "json:\"name\"" + Value string "json:\"value\"" + }{DisplayName: "", Name: "response_status_code", Value: "403"}, struct { + DisplayName string "json:\"displayName\"" + Name string "json:\"name\"" + Value string "json:\"value\"" + }{DisplayName: "", Name: "prevent_browser_cache", Value: "false"}, struct { + DisplayName string "json:\"displayName\"" + Name string "json:\"name\"" + Value string "json:\"value\"" + }{DisplayName: "", Name: "response_content_type", Value: "application/json"}, struct { + DisplayName string "json:\"displayName\"" + Name string "json:\"name\"" + Value string "json:\"value\"" + }{DisplayName: "", Name: "response_body_content", Value: "new testing"}}}, ).Return(&cu, nil) + client.On("CreateCustomDeny", + mock.Anything, // ctx is irrelevant for this test + appsec.CreateCustomDenyRequest{ConfigID: 43253, Version: 7, Description: "testing", Name: "new_custom_deny", Parameters: []struct { + DisplayName string "json:\"displayName\"" + Name string "json:\"name\"" + Value string "json:\"value\"" + }{struct { + DisplayName string "json:\"displayName\"" + Name string "json:\"name\"" + Value string "json:\"value\"" + }{DisplayName: "", Name: "response_status_code", Value: "403"}, struct { + DisplayName string "json:\"displayName\"" + Name string "json:\"name\"" + Value string "json:\"value\"" + }{DisplayName: "", Name: "prevent_browser_cache", Value: "true"}, struct { + DisplayName string "json:\"displayName\"" + Name string "json:\"name\"" + Value string "json:\"value\"" + }{DisplayName: "", Name: "response_content_type", Value: "application/json"}, struct { + DisplayName string "json:\"displayName\"" + Name string "json:\"name\"" + Value string "json:\"value\"" + }{DisplayName: "", Name: "response_body_content", Value: "new testing"}}}, + ).Return(&crc, nil) + useClient(client, func() { resource.Test(t, resource.TestCase{ IsUnitTest: true, @@ -39,7 +97,13 @@ func TestAccAkamaiCustomDeny_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResCustomDeny/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_custom_deny.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_custom_deny.test", "id", "deny_custom_622918"), + ), + }, + { + Config: loadFixtureString("testdata/TestResCustomDeny/update_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_custom_deny.test", "id", "deny_custom_622918"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go index ad4d8deb4..d466dd0ff 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go @@ -28,7 +28,7 @@ func TestAccAkamaiEvalHost_res_basic(t *testing.T) { client.On("UpdateEvalHost", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateEvalHostRequest{ConfigID: 43253, Version: 7}, + appsec.UpdateEvalHostRequest{ConfigID: 43253, Version: 7, Hostnames: []string{"example.com"}}, ).Return(&cu, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host_test.go index 0555c49b4..ad76e5e4c 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host_test.go @@ -28,7 +28,7 @@ func TestAccAkamaiEvalProtectHost_res_basic(t *testing.T) { client.On("UpdateEvalProtectHost", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateEvalProtectHostRequest{ConfigID: 43253, Version: 7}, + appsec.UpdateEvalProtectHostRequest{ConfigID: 43253, Version: 7, Hostnames: []string{"example.com"}}, ).Return(&cu, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go index 30efc7947..15849506c 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go @@ -92,6 +92,7 @@ func resourceReputationAnalysisUpdate(ctx context.Context, d *schema.ResourceDat logger.Errorf("calling 'updateReputationAnalysis': %s", erru.Error()) return diag.FromErr(erru) } + d.SetId(strconv.Itoa(updateReputationAnalysis.ConfigID)) return resourceReputationAnalysisRead(ctx, d, m) } @@ -99,37 +100,37 @@ func resourceReputationAnalysisUpdate(ctx context.Context, d *schema.ResourceDat func resourceReputationAnalysisDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceReputationAnalysisUpdate") + logger := meta.Log("APPSEC", "resourceReputationAnalysisRemove") - updateReputationAnalysis := appsec.UpdateReputationAnalysisRequest{} + RemoveReputationAnalysis := appsec.RemoveReputationAnalysisRequest{} configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } - updateReputationAnalysis.ConfigID = configid + RemoveReputationAnalysis.ConfigID = configid version, err := tools.GetIntValue("version", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } - updateReputationAnalysis.Version = version + RemoveReputationAnalysis.Version = version policyid, err := tools.GetStringValue("security_policy_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } - updateReputationAnalysis.PolicyID = policyid + RemoveReputationAnalysis.PolicyID = policyid - updateReputationAnalysis.ForwardToHTTPHeader = false + RemoveReputationAnalysis.ForwardToHTTPHeader = false - updateReputationAnalysis.ForwardSharedIPToHTTPHeaderAndSIEM = false + RemoveReputationAnalysis.ForwardSharedIPToHTTPHeaderAndSIEM = false - logger.Errorf("calling 'removeReputationAnalysis': STRUCT %v", updateReputationAnalysis) + logger.Errorf("calling 'removeReputationAnalysis': STRUCT %v", RemoveReputationAnalysis) - _, erru := client.UpdateReputationAnalysis(ctx, updateReputationAnalysis) + _, erru := client.RemoveReputationAnalysis(ctx, RemoveReputationAnalysis) if erru != nil { - logger.Errorf("calling 'updateReputationAnalysis': %s", erru.Error()) + logger.Errorf("calling 'RemoveReputationAnalysis': %s", erru.Error()) return diag.FromErr(erru) } @@ -163,12 +164,12 @@ func resourceReputationAnalysisRead(ctx context.Context, d *schema.ResourceData, } getReputationAnalysis.PolicyID = policyid - _, errg := client.GetReputationAnalysis(ctx, getReputationAnalysis) + getresp, errg := client.GetReputationAnalysis(ctx, getReputationAnalysis) if errg != nil { logger.Errorf("calling 'getReputationAnalysis': %s", errg.Error()) return diag.FromErr(errg) } - + logger.Errorf("calling 'getReputationAnalysis': %v", getresp) d.SetId(strconv.Itoa(getReputationAnalysis.ConfigID)) return nil diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go index fd20c80f0..a1e915ea8 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go @@ -22,22 +22,22 @@ func TestAccAkamaiReputationAnalysis_res_basic(t *testing.T) { json.Unmarshal([]byte(expectJS), &cr) cd := appsec.RemoveReputationAnalysisResponse{} - expectJSD := compactJSON(loadFixtureBytes("testdata/TestResReputationAnalysis/ReputationAnalysis.json")) + expectJSD := compactJSON(loadFixtureBytes("testdata/TestResReputationAnalysis/ReputationAnalysisDelete.json")) json.Unmarshal([]byte(expectJSD), &cd) client.On("GetReputationAnalysis", mock.Anything, // ctx is irrelevant for this test - appsec.GetReputationAnalysisRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + appsec.GetReputationAnalysisRequest{ConfigID: 43253, Version: 12, PolicyID: "AAAA_81230"}, ).Return(&cr, nil) client.On("UpdateReputationAnalysis", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateReputationAnalysisRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ForwardToHTTPHeader: true, ForwardSharedIPToHTTPHeaderAndSIEM: true}, + appsec.UpdateReputationAnalysisRequest{ConfigID: 43253, Version: 12, PolicyID: "AAAA_81230", ForwardToHTTPHeader: true, ForwardSharedIPToHTTPHeaderAndSIEM: true}, ).Return(&cu, nil) client.On("RemoveReputationAnalysis", mock.Anything, // ctx is irrelevant for this test - appsec.RemoveReputationAnalysisRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ForwardToHTTPHeader: true, ForwardSharedIPToHTTPHeaderAndSIEM: true}, + appsec.RemoveReputationAnalysisRequest{ConfigID: 43253, Version: 12, PolicyID: "AAAA_81230", ForwardToHTTPHeader: false, ForwardSharedIPToHTTPHeaderAndSIEM: false}, ).Return(&cd, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go b/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go index c108c59ed..3adfa8c30 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go @@ -28,7 +28,7 @@ func TestAccAkamaiSiemSettings_res_basic(t *testing.T) { client.On("UpdateSiemSettings", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateSiemSettingsRequest{ConfigID: 43253, Version: 7}, + appsec.UpdateSiemSettingsRequest{ConfigID: 43253, Version: 7, EnableForAllPolicies: false, EnableSiem: true, EnabledBotmanSiemEvents: true, SiemDefinitionID: 1, FirewallPolicyIds: []string{"12345"}}, ).Return(&cu, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/match_by_id.tf index e5402e2f6..b13641f04 100644 --- a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsLogging/match_by_id.tf @@ -5,7 +5,6 @@ provider "akamai" { data "akamai_appsec_advanced_settings_logging" "test" { config_id = 43253 version = 7 - } diff --git a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json deleted file mode 100644 index 7781b688d..000000000 --- a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - { - "allowSampling": true, - "cookies": { - "type": "all" - }, - "customHeaders": { - "type": "all" - }, - "override": false, - "standardHeaders": { - "type": "all" - } - } -] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf deleted file mode 100644 index e6ca50451..000000000 --- a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPolicyLogging/match_by_id.tf +++ /dev/null @@ -1,9 +0,0 @@ -provider "akamai" { - edgerc = "~/.edgerc" -} - -data "akamai_appsec_advanced_settings_logging" "logging" { - config_id = 43253 - version = 7 -} - diff --git a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPrefetch/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPrefetch/match_by_id.tf index 0ccdca372..4c8496f5d 100644 --- a/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPrefetch/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSAdvancedSettingsPrefetch/match_by_id.tf @@ -3,9 +3,7 @@ provider "akamai" { } -data "akamai_appsec_api_request_constraints" "api_request_constraints" { +data "akamai_appsec_advanced_settings_prefetch" "test" { config_id = 43253 version = 7 - security_policy_id = "AAAA_81230" - api_id = var.api_id } diff --git a/pkg/providers/appsec/testdata/TestDSApiEndpoints/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiEndpoints/match_by_id.tf index 304ecfe22..d6ae33320 100644 --- a/pkg/providers/appsec/testdata/TestDSApiEndpoints/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSApiEndpoints/match_by_id.tf @@ -9,5 +9,5 @@ data "akamai_appsec_api_endpoints" "test" { config_id = 43253 version = 7 - // name = var.api_endpoint_name + // api_name = var.api_endpoint_name } \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/ApiHostnameCoverage.json b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/ApiHostnameCoverage.json index a79d1437f..02b524ef4 100644 --- a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/ApiHostnameCoverage.json +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/ApiHostnameCoverage.json @@ -1,4 +1,4 @@ -[ + { "hostnameCoverage": [ { @@ -1936,4 +1936,3 @@ } ] } -] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf index b9b880e56..0aadbaf5d 100644 --- a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf @@ -2,6 +2,6 @@ provider "akamai" { edgerc = "~/.edgerc" } -data "akamai_appsec_api_hostname_coverage" "hostname_coverage" { +data "akamai_appsec_api_hostname_coverage" "test" { } diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf index 97dfd9df2..cb7e5809f 100644 --- a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf @@ -5,5 +5,5 @@ provider "akamai" { data "akamai_appsec_api_hostname_coverage_match_targets" "test" { config_id = 43253 version = 7 - hostname = "example.com" + hostname = "rinaldi.sandbox.akamaideveloper.com" } diff --git a/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/ApiRequestConstraints.json b/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/ApiRequestConstraints.json index fc05a0cfe..d68b73fc9 100644 --- a/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/ApiRequestConstraints.json +++ b/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/ApiRequestConstraints.json @@ -1,38 +1,3 @@ -[ - { - "attackGroupActions": [ - { - "action": "none", - "group": "TOOL" - }, - { - "action": "none", - "group": "PROTOCOL" - }, - { - "action": "none", - "group": "SQL" - }, - { - "action": "none", - "group": "XSS" - }, - { - "action": "none", - "group": "LFI" - }, - { - "action": "none", - "group": "RFI" - }, - { - "action": "none", - "group": "CMDI" - }, - { - "action": "none", - "group": "PLATFORM" - } - ] - } -] \ No newline at end of file +{ + "action": "alert" +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/match_by_id.tf index 0ccdca372..feb837d20 100644 --- a/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSApiRequestConstraints/match_by_id.tf @@ -3,9 +3,9 @@ provider "akamai" { } -data "akamai_appsec_api_request_constraints" "api_request_constraints" { +data "akamai_appsec_api_request_constraints" "test" { config_id = 43253 version = 7 security_policy_id = "AAAA_81230" - api_id = var.api_id + api_id = 1 } diff --git a/pkg/providers/appsec/testdata/TestDSAttackGroupActions/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSAttackGroupActions/match_by_id.tf index 072d21661..37019acd3 100644 --- a/pkg/providers/appsec/testdata/TestDSAttackGroupActions/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSAttackGroupActions/match_by_id.tf @@ -1,5 +1,6 @@ provider "akamai" { edgerc = "~/.edgerc" + //version = "1.0.1" } diff --git a/pkg/providers/appsec/testdata/TestDSContractsGroups/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSContractsGroups/match_by_id.tf index 9eece57d2..314397d1d 100644 --- a/pkg/providers/appsec/testdata/TestDSContractsGroups/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSContractsGroups/match_by_id.tf @@ -3,5 +3,5 @@ provider "akamai" { } -data "akamai_appsec_contract_groups" "contract_groups" { +data "akamai_appsec_contracts_groups" "test" { } diff --git a/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDeny.json b/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDeny.json index 9a8558b23..f356047de 100644 --- a/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDeny.json +++ b/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDeny.json @@ -1,7 +1,7 @@ { "description": "Custom Deny Example 1", "name": "Custom Deny Example 1", - "id": "deny_custom_622918", + "id": "deny_custom_54994", "parameters": [ { "displayName": "Prevent browser caching", diff --git a/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDenyList.json b/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDenyList.json index e1e566f58..4758318f5 100644 --- a/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDenyList.json +++ b/pkg/providers/appsec/testdata/TestDSCustomDeny/CustomDenyList.json @@ -4,7 +4,7 @@ { "description": "Custom Deny Example 1", "name": "Custom Deny Example 1", - "id": "deny_custom_622918", + "id": "deny_custom_54994", "parameters": [ { "displayName": "Prevent browser caching", diff --git a/pkg/providers/appsec/testdata/TestDSCustomDeny/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSCustomDeny/match_by_id.tf index df7405554..f7d44f2f4 100644 --- a/pkg/providers/appsec/testdata/TestDSCustomDeny/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSCustomDeny/match_by_id.tf @@ -5,6 +5,6 @@ provider "akamai" { data "akamai_appsec_custom_deny" "test" { config_id = 43253 version = 7 - custom_deny_id = "deny_custom_622918" + custom_deny_id = "deny_custom_54994" } diff --git a/pkg/providers/appsec/testdata/TestDSEvalHostnames/EvalHostnames.json b/pkg/providers/appsec/testdata/TestDSEvalHostnames/EvalHostnames.json index 6b91a4a6b..e0c0715d3 100644 --- a/pkg/providers/appsec/testdata/TestDSEvalHostnames/EvalHostnames.json +++ b/pkg/providers/appsec/testdata/TestDSEvalHostnames/EvalHostnames.json @@ -1,6 +1,6 @@ { - "hostnmes": [ - "*.exsmple.net", + "hostnames": [ + "*.example.net", "example.com", "m.example.com" ] diff --git a/pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/PolicyApiEndpoints.json b/pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/PolicyApiEndpoints.json deleted file mode 100644 index c95e17a08..000000000 --- a/pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/PolicyApiEndpoints.json +++ /dev/null @@ -1,23 +0,0 @@ -[ - { - "apiEndpoints": [ - { - "id": 296100, - "name": "API Test", - "basePath": "/api/bootcamp", - "apiEndPointHosts": [ - "bc.akamaiapibootcamp.com" - ], - "stagingVersion": { - "status": "ACTIVE", - "versionNumber": 1 - }, - "productionVersion": { - "status": "ACTIVE", - "versionNumber": 1 - }, - "requestConstraintsEnabled": false - } - ] - } -] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/match_by_id.tf deleted file mode 100644 index effe97ecd..000000000 --- a/pkg/providers/appsec/testdata/TestDSPolicyApiEndpoints/match_by_id.tf +++ /dev/null @@ -1,11 +0,0 @@ -provider "akamai" { - edgerc = "~/.edgerc" -} - -data "akamai_appsec_policy_api_endpoints" "api_endpoint" { - config_id = 43253 - version = 7 - security_policy_id = "AAAA_81230" - name = "TestEndpoint" -} - diff --git a/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/AdvancedSettingsLogging.json b/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/AdvancedSettingsLogging.json index e9c621f1e..574804661 100644 --- a/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/AdvancedSettingsLogging.json +++ b/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/AdvancedSettingsLogging.json @@ -1,4 +1,4 @@ -[ + { "allowSampling": true, "cookies": { @@ -11,4 +11,3 @@ "type": "all" } } -] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf b/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf index ce1dc960b..a425e81bc 100644 --- a/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf @@ -3,10 +3,9 @@ provider "akamai" { } -resource "akamai_appsec_advanced_settings" "logging" { +resource "akamai_appsec_advanced_settings" "test" { config_id = 43253 version = 7 - security_policy_id = "AAAA_81230" logging = <<-EOF { "allowSampling": true, diff --git a/pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json b/pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json deleted file mode 100644 index 7781b688d..000000000 --- a/pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/AdvancedSettingsPolicyLogging.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - { - "allowSampling": true, - "cookies": { - "type": "all" - }, - "customHeaders": { - "type": "all" - }, - "override": false, - "standardHeaders": { - "type": "all" - } - } -] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/match_by_id.tf b/pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/match_by_id.tf deleted file mode 100644 index c09e4baf1..000000000 --- a/pkg/providers/appsec/testdata/TestResAdvancedSettingsPolicyLogging/match_by_id.tf +++ /dev/null @@ -1,29 +0,0 @@ -provider "akamai" { - edgerc = "~/.edgerc" -} - - -resource "akamai_appsec_advanced_settings" "logging" { - config_id = 43253 - version = 7 - logging = <<-EOF -{ - "allowSampling": true, - "cookies": { - "type": "all" - }, - "customHeaders": { - "type": "exclude", - "values": [ - "csdasdad" - ] - }, - "standardHeaders": { - "type": "only", - "values": [ - "Accept" - ] - } -} -EOF -} diff --git a/pkg/providers/appsec/testdata/TestResAdvancedSettingsPrefetch/match_by_id.tf b/pkg/providers/appsec/testdata/TestResAdvancedSettingsPrefetch/match_by_id.tf index 057afb8cb..3738d5176 100644 --- a/pkg/providers/appsec/testdata/TestResAdvancedSettingsPrefetch/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResAdvancedSettingsPrefetch/match_by_id.tf @@ -2,7 +2,7 @@ provider "akamai" { edgerc = "~/.edgerc" } -resource "akamai_appsec_advanced_settings_prefetch" "prefetch" { +resource "akamai_appsec_advanced_settings_prefetch" "test" { config_id = 43253 version = 7 enable_app_layer = false diff --git a/pkg/providers/appsec/testdata/TestResApiRequestConstraints/match_by_id.tf b/pkg/providers/appsec/testdata/TestResApiRequestConstraints/match_by_id.tf index 94905bfe5..482c10fdb 100644 --- a/pkg/providers/appsec/testdata/TestResApiRequestConstraints/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResApiRequestConstraints/match_by_id.tf @@ -3,11 +3,11 @@ provider "akamai" { } -resource "akamai_appsec_attack_group_action" "test" { +resource "akamai_appsec_api_request_constraints" "test" { config_id = 43253 version = 7 security_policy_id = "AAAA_81230" - api_endpoint_id = data.akamai_appsec_api_endpoints.api_endpoint.id + api_endpoint_id = 1 action = "alert" } diff --git a/pkg/providers/appsec/testdata/TestResConfiguration/Configuration.json b/pkg/providers/appsec/testdata/TestResConfiguration/Configuration.json index d871c3dfc..645741f1e 100644 --- a/pkg/providers/appsec/testdata/TestResConfiguration/Configuration.json +++ b/pkg/providers/appsec/testdata/TestResConfiguration/Configuration.json @@ -1,4 +1,4 @@ -[ + { "configurations": [ { @@ -9,6 +9,14 @@ "name": "Akamai Tools", "targetProduct": "KSD" }, + { + "description": "Akamai Tools", + "fileType": "RBAC", + "id": 432531, + "latestVersion": 23, + "name": "Akamai Tools New", + "targetProduct": "KSD" + }, { "fileType": "RBAC", "id": 39085, @@ -44,4 +52,3 @@ } ] } -] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResConfiguration/ConfigurationCreate.json b/pkg/providers/appsec/testdata/TestResConfiguration/ConfigurationCreate.json new file mode 100644 index 000000000..2eb98aae2 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResConfiguration/ConfigurationCreate.json @@ -0,0 +1,6 @@ +{ + "configId": 432531, + "version": 1, + "description": "description1", + "name": "Akamai Tools New" +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResConfiguration/ConfigurationUpdate.json b/pkg/providers/appsec/testdata/TestResConfiguration/ConfigurationUpdate.json new file mode 100644 index 000000000..33c339d6c --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResConfiguration/ConfigurationUpdate.json @@ -0,0 +1,5 @@ + + { + "description": "Akamai Tools", + "name": "Akamai Tools New" + } \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResConfiguration/match_by_id.tf b/pkg/providers/appsec/testdata/TestResConfiguration/match_by_id.tf index b29ce9cf6..5dacf8de3 100644 --- a/pkg/providers/appsec/testdata/TestResConfiguration/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResConfiguration/match_by_id.tf @@ -2,7 +2,7 @@ provider "akamai" { edgerc = "~/.edgerc" } -resource "akamai_appsec_configuration" "create_config" { +resource "akamai_appsec_configuration" "test" { name = "Akamai Tools New" description = "TF Tools" contract_id= "C-1FRYVV3" diff --git a/pkg/providers/appsec/testdata/TestResConfiguration/update_by_id.tf b/pkg/providers/appsec/testdata/TestResConfiguration/update_by_id.tf new file mode 100644 index 000000000..c6c163399 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResConfiguration/update_by_id.tf @@ -0,0 +1,13 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +resource "akamai_appsec_configuration" "test" { + name = "Akamai Tools New" + description = "TF Tools 1" + contract_id= "C-1FRYVV3" + group_id = 64867 + host_names = ["rinaldi.sandbox.akamaideveloper.com", + "sujala.sandbox.akamaideveloper.com"] +} + diff --git a/pkg/providers/appsec/testdata/TestResConfigurationClone/test.json b/pkg/providers/appsec/testdata/TestResConfigurationClone/test.json new file mode 100644 index 000000000..2f050e959 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResConfigurationClone/test.json @@ -0,0 +1,14 @@ +{ +   "name": "New Clone config", +   "description": "description1", +   "contractId": "C-AVLN15", +   "groupId": 42085, +   "hostnames": [ +     "new.acklandsgrainger.com", +     "www.acklandsgrainger.com" +   ], +  "createFrom": { +     "configId": 56879, +     "version": 3 +   } +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResConfigurationVersionClone/ConfigurationVersionClone.json b/pkg/providers/appsec/testdata/TestResConfigurationVersionClone/ConfigurationVersionClone.json index 3bf9ac1b0..e9d01666d 100644 --- a/pkg/providers/appsec/testdata/TestResConfigurationVersionClone/ConfigurationVersionClone.json +++ b/pkg/providers/appsec/testdata/TestResConfigurationVersionClone/ConfigurationVersionClone.json @@ -1,6 +1,6 @@ -[ + { - "basedOn": 3, + "basedOn": 7, "configId": 43253, "configName": "Akamai Tools", "createDate": "2020-10-06T18:00:20Z", @@ -13,4 +13,3 @@ }, "version": 15 } -] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResCustomDeny/CustomDenyCreate.json b/pkg/providers/appsec/testdata/TestResCustomDeny/CustomDenyCreate.json new file mode 100644 index 000000000..7a8a58810 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResCustomDeny/CustomDenyCreate.json @@ -0,0 +1,24 @@ +{ + "name": "new_custom_deny", + "description": "testing", + "isPageUrl" : false, + "id": "deny_custom_622918", + "parameters": [ + { + "name": "response_status_code", + "value": "403" + }, + { + "name": "prevent_browser_cache", + "value": "true" + }, + { + "name": "response_content_type", + "value": "application/json" + }, + { + "name": "response_body_content", + "value": "new testing" + } + ] +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResCustomDeny/CustomDenyUpdate.json b/pkg/providers/appsec/testdata/TestResCustomDeny/CustomDenyUpdate.json new file mode 100644 index 000000000..ca803e3f7 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResCustomDeny/CustomDenyUpdate.json @@ -0,0 +1,28 @@ + + { + "description": "Custom Deny Example 1", + "name": "Custom Deny Example 1", + "id": "deny_custom_622918", + "parameters": [ + { + "displayName": "Prevent browser caching", + "name": "prevent_browser_cache", + "value": "false" + }, + { + "displayName": "Response body content", + "name": "response_body_content", + "value": "body comes here2222." + }, + { + "displayName": "Response content type", + "name": "response_content_type", + "value": "application/json" + }, + { + "displayName": "Response status code", + "name": "response_status_code", + "value": "403" + } + ] + } \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResCustomDeny/match_by_id.tf b/pkg/providers/appsec/testdata/TestResCustomDeny/match_by_id.tf index 8557774c8..c510c8160 100644 --- a/pkg/providers/appsec/testdata/TestResCustomDeny/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResCustomDeny/match_by_id.tf @@ -2,7 +2,7 @@ provider "akamai" { edgerc = "~/.edgerc" } -resource "akamai_appsec_custom_deny" "custom_deny" { +resource "akamai_appsec_custom_deny" "test" { config_id = 43253 version = 7 custom_deny = <<-EOF diff --git a/pkg/providers/appsec/testdata/TestResCustomDeny/update_by_id.tf b/pkg/providers/appsec/testdata/TestResCustomDeny/update_by_id.tf new file mode 100644 index 000000000..c11e4b65b --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResCustomDeny/update_by_id.tf @@ -0,0 +1,36 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +resource "akamai_appsec_custom_deny" "test" { + config_id = 43253 + version = 7 + custom_deny = <<-EOF +{ + "name": "new_custom_deny", + "description": "testing", + "isPageUrl" : false, + "parameters": [ + { + "name": "response_status_code", + "value": "403" + }, + { + "name": "prevent_browser_cache", + "value": "false" + }, + { + "name": "response_content_type", + "value": "application/json" + }, + { + "name": "response_body_content", + "value": "new testing" + } + ] +} +EOF +} + + + diff --git a/pkg/providers/appsec/testdata/TestResEvalHost/match_by_id.tf b/pkg/providers/appsec/testdata/TestResEvalHost/match_by_id.tf index 4e1042bf6..96ff6e108 100644 --- a/pkg/providers/appsec/testdata/TestResEvalHost/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResEvalHost/match_by_id.tf @@ -2,7 +2,7 @@ provider "akamai" { edgerc = "~/.edgerc" } -resource "akamai_appsec_eval_host" "eval_host" { +resource "akamai_appsec_eval_host" "test" { config_id = 43253 version = 7 hostnames = ["example.com"] diff --git a/pkg/providers/appsec/testdata/TestResEvalProtectHost/match_by_id.tf b/pkg/providers/appsec/testdata/TestResEvalProtectHost/match_by_id.tf index 071e79d31..819cafd5d 100644 --- a/pkg/providers/appsec/testdata/TestResEvalProtectHost/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResEvalProtectHost/match_by_id.tf @@ -2,17 +2,10 @@ provider "akamai" { edgerc = "~/.edgerc" } -resource "akamai_appsec_eval_protect_host" "protect_host" { +resource "akamai_appsec_eval_protect_host" "test" { config_id = 43253 version = 7 hostnames = ["example.com"] } -resource "akamai_appsec_attack_group_action" "test" { -config_id = 43253 - version = 7 - security_policy_id = "AAAA_81230" - api_endpoint_id = data.akamai_appsec_api_endpoints.api_endpoint.id - action = "alert" -} diff --git a/pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysisDelete.json b/pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysisDelete.json new file mode 100644 index 000000000..28e4534de --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysisDelete.json @@ -0,0 +1,5 @@ + + { + "forwardSharedIPToHTTPHeaderAndSIEM": false, + "forwardToHTTPHeader": false + } diff --git a/pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysisUpdated.json b/pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysisUpdated.json index 83d8e1ed8..13528a085 100644 --- a/pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysisUpdated.json +++ b/pkg/providers/appsec/testdata/TestResReputationAnalysis/ReputationAnalysisUpdated.json @@ -1,5 +1,5 @@ { "forwardSharedIPToHTTPHeaderAndSIEM": true, - "forwardToHTTPHeader": false + "forwardToHTTPHeader": true } diff --git a/pkg/providers/appsec/testdata/TestResReputationAnalysis/match_by_id.tf b/pkg/providers/appsec/testdata/TestResReputationAnalysis/match_by_id.tf index 48a1a7e6d..2bc5f39b8 100644 --- a/pkg/providers/appsec/testdata/TestResReputationAnalysis/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResReputationAnalysis/match_by_id.tf @@ -7,7 +7,7 @@ resource "akamai_appsec_reputation_analysis" "test" { config_id = 43253 version = 12 security_policy_id = "AAAA_81230" - forward_to_http_header = false + forward_to_http_header = true forward_shared_ip_to_http_header_siem = true } From c3cb19db92b190e9f0925a3a7553de076f00245c Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Mon, 11 Jan 2021 12:18:14 -0600 Subject: [PATCH 015/215] Add standard header to settings logging --- pkg/providers/appsec/templates.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 5a4019ce8..a68cba582 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -109,8 +109,8 @@ func RenderTemplates(ots map[string]*OutputTemplate, key string, str interface{} } func InitTemplates(otm map[string]*OutputTemplate) { - otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Custom Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}}"} - otm["advancedSettingsPolicyLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsPolicyLoggingDS", TableTitle: "Allow Sampling|Custom Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}}"} + otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}}|{{.StandardHeaders}}"} + otm["advancedSettingsPolicyLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsPolicyLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}}|{{.StandardHeaders}}"} otm["advancedSettingsPrefetchDS"] = &OutputTemplate{TemplateName: "advancedSettingsPrefetchDS", TableTitle: "Enable App Layer|All Extension|Enable Rate Controls|Extensions", TemplateType: "TABULAR", TemplateString: "{{.AllExtensions}}|{{.EnableAppLayer}}|{{.EnableRateControls}}|{{range $index, $element := .Extensions}}{{.}} {{end}}"} //Extensions From 1b9e7fe47df30127c760ed124b6088337006da65 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Mon, 11 Jan 2021 12:23:59 -0600 Subject: [PATCH 016/215] Switch AllExtensions EnableAppLayer in text output --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index a68cba582..e7f6d2231 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -111,7 +111,7 @@ func RenderTemplates(ots map[string]*OutputTemplate, key string, str interface{} func InitTemplates(otm map[string]*OutputTemplate) { otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}}|{{.StandardHeaders}}"} otm["advancedSettingsPolicyLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsPolicyLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}}|{{.StandardHeaders}}"} - otm["advancedSettingsPrefetchDS"] = &OutputTemplate{TemplateName: "advancedSettingsPrefetchDS", TableTitle: "Enable App Layer|All Extension|Enable Rate Controls|Extensions", TemplateType: "TABULAR", TemplateString: "{{.AllExtensions}}|{{.EnableAppLayer}}|{{.EnableRateControls}}|{{range $index, $element := .Extensions}}{{.}} {{end}}"} + otm["advancedSettingsPrefetchDS"] = &OutputTemplate{TemplateName: "advancedSettingsPrefetchDS", TableTitle: "Enable App Layer|All Extension|Enable Rate Controls|Extensions", TemplateType: "TABULAR", TemplateString: "{{.EnableAppLayer}}|{{.AllExtensions}}|{{.EnableRateControls}}|{{range $index, $element := .Extensions}}{{.}} {{end}}"} //Extensions otm["apiEndpointsDS"] = &OutputTemplate{TemplateName: "apiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} From ba8ff7e54e6918e58eb9c208794c0385ae104af5 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Mon, 11 Jan 2021 12:36:29 -0600 Subject: [PATCH 017/215] Correct Custom Headers in text output --- pkg/providers/appsec/templates.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index e7f6d2231..9576c799a 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -109,8 +109,8 @@ func RenderTemplates(ots map[string]*OutputTemplate, key string, str interface{} } func InitTemplates(otm map[string]*OutputTemplate) { - otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}}|{{.StandardHeaders}}"} - otm["advancedSettingsPolicyLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsPolicyLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}}|{{.StandardHeaders}}"} + otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.CustomHeaders}}|{{.StandardHeaders}}"} + otm["advancedSettingsPolicyLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsPolicyLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.CustomHeaders}}|{{.StandardHeaders}}"} otm["advancedSettingsPrefetchDS"] = &OutputTemplate{TemplateName: "advancedSettingsPrefetchDS", TableTitle: "Enable App Layer|All Extension|Enable Rate Controls|Extensions", TemplateType: "TABULAR", TemplateString: "{{.EnableAppLayer}}|{{.AllExtensions}}|{{.EnableRateControls}}|{{range $index, $element := .Extensions}}{{.}} {{end}}"} //Extensions From 05c04277fc27ccc0e34746eef7e2faa1d1b37304 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Mon, 11 Jan 2021 14:15:37 -0600 Subject: [PATCH 018/215] Add support for security_policy_id to refactored datasources --- .../data_akamai_appsec_advanced_settings_logging.go | 5 ++++- .../appsec/data_akamai_appsec_api_endpoints.go | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go index d1ed97d44..7608f79b0 100644 --- a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go +++ b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go @@ -27,7 +27,10 @@ func dataSourceAdvancedSettingsLogging() *schema.Resource { Type: schema.TypeInt, Required: true, }, - + "security_policy_id": { + Type: schema.TypeString, + Optional: true, + }, "json": { Type: schema.TypeString, Computed: true, diff --git a/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go b/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go index 2d52b6622..6b14805f0 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go @@ -27,6 +27,10 @@ func dataSourceApiEndpoints() *schema.Resource { Type: schema.TypeInt, Required: true, }, + "security_policy_id": { + Type: schema.TypeString, + Optional: true, + }, "api_name": { Type: schema.TypeString, Optional: true, @@ -69,6 +73,12 @@ func dataSourceApiEndpointsRead(ctx context.Context, d *schema.ResourceData, m i } getApiEndpoints.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiEndpoints.PolicyID = policyid + apiName, err := tools.GetStringValue("api_name", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) From c5712e032830c7c502df8e14e91d3208cc20bd84 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Mon, 11 Jan 2021 22:51:22 -0600 Subject: [PATCH 019/215] Add BypassNetworkLists and VersionNotes --- pkg/providers/appsec/appsec_test.go | 40 ++++++ ...data_akamai_appsec_bypass_network_lists.go | 89 ++++++++++++ ...akamai_appsec_bypass_network_lists_test.go | 43 ++++++ .../data_akamai_appsec_version_notes.go | 88 ++++++++++++ .../data_akamai_appsec_version_notes_test.go | 43 ++++++ pkg/providers/appsec/provider.go | 4 + ...urce_akamai_appsec_bypass_network_lists.go | 129 ++++++++++++++++++ ...akamai_appsec_bypass_network_lists_test.go | 52 +++++++ .../resource_akamai_appsec_version_notes.go | 124 +++++++++++++++++ ...source_akamai_appsec_version_notes_test.go | 52 +++++++ pkg/providers/appsec/templates.go | 1 + .../BypassNetworkLists.json | 12 ++ .../TestDSBypassNetworkLists/match_by_id.tf | 13 ++ .../TestDSVersionNotes/VersionNotes.json | 3 + .../TestDSVersionNotes/match_by_id.tf | 12 ++ .../BypassNetworkLists.json | 12 ++ .../TestResBypassNetworkLists/match_by_id.tf | 13 ++ .../TestResVersionNotes/VersionNotes.json | 3 + .../TestResVersionNotes/match_by_id.tf | 13 ++ 19 files changed, 746 insertions(+) create mode 100644 pkg/providers/appsec/data_akamai_appsec_bypass_network_lists.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_bypass_network_lists_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_version_notes.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_version_notes_test.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_version_notes.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_version_notes_test.go create mode 100644 pkg/providers/appsec/testdata/TestDSBypassNetworkLists/BypassNetworkLists.json create mode 100644 pkg/providers/appsec/testdata/TestDSBypassNetworkLists/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestDSVersionNotes/VersionNotes.json create mode 100644 pkg/providers/appsec/testdata/TestDSVersionNotes/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResBypassNetworkLists/BypassNetworkLists.json create mode 100644 pkg/providers/appsec/testdata/TestResBypassNetworkLists/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResVersionNotes/VersionNotes.json create mode 100644 pkg/providers/appsec/testdata/TestResVersionNotes/match_by_id.tf diff --git a/pkg/providers/appsec/appsec_test.go b/pkg/providers/appsec/appsec_test.go index eee790b10..b65b5e0f9 100644 --- a/pkg/providers/appsec/appsec_test.go +++ b/pkg/providers/appsec/appsec_test.go @@ -231,6 +231,46 @@ func (p *mockappsec) GetContractsGroups(ctx context.Context, params appsec.GetCo return args.Get(0).(*appsec.GetContractsGroupsResponse), args.Error(1) } +func (p *mockappsec) GetBypassNetworkLists(ctx context.Context, params appsec.GetBypassNetworkListsRequest) (*appsec.GetBypassNetworkListsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetBypassNetworkListsResponse), args.Error(1) +} + +func (p *mockappsec) UpdateBypassNetworkLists(ctx context.Context, params appsec.UpdateBypassNetworkListsRequest) (*appsec.UpdateBypassNetworkListsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.UpdateBypassNetworkListsResponse), args.Error(1) +} + +func (p *mockappsec) GetVersionNotes(ctx context.Context, params appsec.GetVersionNotesRequest) (*appsec.GetVersionNotesResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.GetVersionNotesResponse), args.Error(1) +} + +func (p *mockappsec) UpdateVersionNotes(ctx context.Context, params appsec.UpdateVersionNotesRequest) (*appsec.UpdateVersionNotesResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.UpdateVersionNotesResponse), args.Error(1) +} + func (p *mockappsec) CreateConfiguration(ctx context.Context, params appsec.CreateConfigurationRequest) (*appsec.CreateConfigurationResponse, error) { args := p.Called(ctx, params) diff --git a/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists.go b/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists.go new file mode 100644 index 000000000..bc613c6aa --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists.go @@ -0,0 +1,89 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceBypassNetworkLists() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceBypassNetworkListsRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": &schema.Schema{ + Type: schema.TypeInt, + Required: true, + }, + + "json": { + Type: schema.TypeString, + Computed: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceBypassNetworkListsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceBypassNetworkListsRead") + + getBypassNetworkLists := appsec.GetBypassNetworkListsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getBypassNetworkLists.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getBypassNetworkLists.Version = version + + bypassnetworklists, err := client.GetBypassNetworkLists(ctx, getBypassNetworkLists) + if err != nil { + logger.Errorf("calling 'getBypassNetworkLists': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "AttackGroupActionDS", bypassnetworklists) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(bypassnetworklists) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(strconv.Itoa(getBypassNetworkLists.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists_test.go b/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists_test.go new file mode 100644 index 000000000..59b0d16fc --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiBypassNetworkLists_data_basic(t *testing.T) { + t.Run("match by BypassNetworkLists ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetBypassNetworkListsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSBypassNetworkLists/BypassNetworkLists.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetBypassNetworkLists", + mock.Anything, // ctx is irrelevant for this test + appsec.GetBypassNetworkListsRequest{ConfigID: 43253, Version: 7}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSBypassNetworkLists/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_bypass_network_lists.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_version_notes.go b/pkg/providers/appsec/data_akamai_appsec_version_notes.go new file mode 100644 index 000000000..541cd9a88 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_version_notes.go @@ -0,0 +1,88 @@ +package appsec + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func dataSourceVersionNotes() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceVersionNotesRead, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "json": { + Type: schema.TypeString, + Computed: true, + Description: "JSON List of Notes", + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func dataSourceVersionNotesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceVersionNotesRead") + + getVersionNotes := appsec.GetVersionNotesRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getVersionNotes.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getVersionNotes.Version = version + + versionnotes, errr := client.GetVersionNotes(ctx, getVersionNotes) + if errr != nil { + logger.Errorf("calling 'getVersionNotes': %s", errr.Error()) + return diag.FromErr(errr) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "versionNotesDS", versionnotes) + if err == nil { + d.Set("output_text", outputtext) + } + + jsonBody, err := json.Marshal(versionnotes) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(strconv.Itoa(getVersionNotes.ConfigID)) + + return nil +} diff --git a/pkg/providers/appsec/data_akamai_appsec_version_notes_test.go b/pkg/providers/appsec/data_akamai_appsec_version_notes_test.go new file mode 100644 index 000000000..3fd9de33b --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_version_notes_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiVersionNotes_data_basic(t *testing.T) { + t.Run("match by VersionNotes ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetVersionNotesResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSVersionNotes/VersionNotes.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetVersionNotes", + mock.Anything, // ctx is irrelevant for this test + appsec.GetVersionNotesRequest{ConfigID: 43253, Version: 7}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSVersionNotes/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_version_notes.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index dbe56b1a7..b240f8e4d 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -68,6 +68,7 @@ func Provider() *schema.Provider { "akamai_appsec_api_hostname_coverage_overlapping": dataSourceApiHostnameCoverageOverlapping(), "akamai_appsec_api_hostname_coverage_match_targets": dataSourceApiHostnameCoverageMatchTargets(), "akamai_appsec_api_request_constraints": dataSourceApiRequestConstraints(), + "akamai_appsec_bypass_network_lists": dataSourceBypassNetworkLists(), "akamai_appsec_configuration": dataSourceConfiguration(), "akamai_appsec_configuration_version": dataSourceConfigurationVersion(), "akamai_appsec_contracts_groups": dataSourceContractsGroups(), @@ -102,6 +103,7 @@ func Provider() *schema.Provider { "akamai_appsec_slow_post": dataSourceSlowPostProtectionSettings(), "akamai_appsec_slowpost_protections": dataSourceSlowPostProtections(), "akamai_appsec_attack_group_actions": dataSourceAttackGroupActions(), + "akamai_appsec_version_notes": dataSourceVersionNotes(), "akamai_appsec_waf_mode": dataSourceWAFMode(), "akamai_appsec_waf_protection": dataSourceWAFProtections(), "akamai_appsec_attack_group_condition_exception": dataSourceAttackGroupConditionException(), @@ -110,6 +112,7 @@ func Provider() *schema.Provider { "akamai_appsec_advanced_settings": resourceAdvancedSettingsLogging(), "akamai_appsec_advanced_settings_prefetch": resourceAdvancedSettingsPrefetch(), "akamai_appsec_api_request_constraints": resourceApiRequestConstraints(), + "akamai_appsec_bypass_network_lists": resourceBypassNetworkLists(), "akamai_appsec_configuration": resourceConfiguration(), "akamai_appsec_configuration_clone": resourceConfigurationClone(), "akamai_appsec_configuration_version_clone": resourceConfigurationVersionClone(), @@ -144,6 +147,7 @@ func Provider() *schema.Provider { "akamai_appsec_slow_post": resourceSlowPostProtectionSetting(), "akamai_appsec_slowpost_protection": resourceSlowPostProtection(), "akamai_appsec_attack_group_action": resourceAttackGroupAction(), + "akamai_appsec_version_notes": resourceVersionNotes(), "akamai_appsec_waf_mode": resourceWAFMode(), "akamai_appsec_waf_protection": resourceWAFProtection(), "akamai_appsec_attack_group_condition_exception": resourceAttackGroupConditionException(), diff --git a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go new file mode 100644 index 000000000..3a58254b5 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go @@ -0,0 +1,129 @@ +package appsec + +import ( + "context" + "errors" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceBypassNetworkLists() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceBypassNetworkListsUpdate, + ReadContext: resourceBypassNetworkListsRead, + UpdateContext: resourceBypassNetworkListsUpdate, + DeleteContext: resourceBypassNetworkListsDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "bypass_network_list": { + Type: schema.TypeList, + Required: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func resourceBypassNetworkListsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceBypassNetworkListsRead") + + getBypassNetworkLists := appsec.GetBypassNetworkListsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getBypassNetworkLists.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getBypassNetworkLists.Version = version + + bypassnetworklists, err := client.GetBypassNetworkLists(ctx, getBypassNetworkLists) + if err != nil { + logger.Errorf("calling 'getBypassNetworkLists': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "bypassNetworkListsDS", bypassnetworklists) + if err == nil { + d.Set("output_text", outputtext) + } + + d.SetId(strconv.Itoa(getBypassNetworkLists.ConfigID)) + + return nil +} + +func resourceBypassNetworkListsDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + + return schema.NoopContext(nil, d, m) +} + +func resourceBypassNetworkListsUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceBypassNetworkListsUpdate") + + updateBypassNetworkLists := appsec.UpdateBypassNetworkListsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateBypassNetworkLists.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateBypassNetworkLists.Version = version + + netlist := d.Get("bypass_network_list").([]interface{}) + nru := make([]string, 0, len(netlist)) + + for _, h := range netlist { + nru = append(nru, h.(string)) + + } + updateBypassNetworkLists.NetworkLists = nru + + _, erru := client.UpdateBypassNetworkLists(ctx, updateBypassNetworkLists) + if erru != nil { + logger.Errorf("calling 'updateBypassNetworkLists': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceBypassNetworkListsRead(ctx, d, m) +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go new file mode 100644 index 000000000..f19c0cf0e --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go @@ -0,0 +1,52 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiBypassNetworkLists_res_basic(t *testing.T) { + t.Run("match by BypassNetworkLists ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateBypassNetworkListsResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResBypassNetworkLists/BypassNetworkLists.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetBypassNetworkListsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResBypassNetworkLists/BypassNetworkLists.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetBypassNetworkLists", + mock.Anything, // ctx is irrelevant for this test + appsec.GetBypassNetworkListsRequest{ConfigID: 43253, Version: 7}, + ).Return(&cr, nil) + + client.On("UpdateBypassNetworkLists", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateBypassNetworkListsRequest{ConfigID: 43253, Version: 7, NetworkLists: []string{"888518_ACDDCKERS", "1304427_AAXXBBLIST"}}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResBypassNetworkLists/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_bypass_network_lists.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_version_notes.go b/pkg/providers/appsec/resource_akamai_appsec_version_notes.go new file mode 100644 index 000000000..2a06f4412 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_version_notes.go @@ -0,0 +1,124 @@ +package appsec + +import ( + "context" + "errors" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceVersionNotes() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceVersionNotesUpdate, + ReadContext: resourceVersionNotesRead, + UpdateContext: resourceVersionNotesUpdate, + DeleteContext: resourceVersionNotesDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "notes": { + Type: schema.TypeString, + Required: true, + }, + "output_text": { + Type: schema.TypeString, + Computed: true, + Description: "Text Export representation", + }, + }, + } +} + +func resourceVersionNotesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceVersionNotesRead") + + getVersionNotes := appsec.GetVersionNotesRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getVersionNotes.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getVersionNotes.Version = version + + versionnotes, err := client.GetVersionNotes(ctx, getVersionNotes) + if err != nil { + logger.Errorf("calling 'getVersionNotes': %s", err.Error()) + return diag.FromErr(err) + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "versionNotesDS", versionnotes) + if err == nil { + d.Set("output_text", outputtext) + } + + d.SetId(strconv.Itoa(getVersionNotes.ConfigID)) + + return nil +} + +func resourceVersionNotesDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + + return schema.NoopContext(nil, d, m) +} + +func resourceVersionNotesUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceVersionNotesUpdate") + + updateVersionNotes := appsec.UpdateVersionNotesRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateVersionNotes.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateVersionNotes.Version = version + + notes, err := tools.GetStringValue("notes", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateVersionNotes.Notes = notes + + _, erru := client.UpdateVersionNotes(ctx, updateVersionNotes) + if erru != nil { + logger.Errorf("calling 'updateVersionNotes': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceVersionNotesRead(ctx, d, m) +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_version_notes_test.go b/pkg/providers/appsec/resource_akamai_appsec_version_notes_test.go new file mode 100644 index 000000000..f5191b71e --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_version_notes_test.go @@ -0,0 +1,52 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiVersionNotes_res_basic(t *testing.T) { + t.Run("match by VersionNotes ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateVersionNotesResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResVersionNotes/VersionNotes.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetVersionNotesResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResVersionNotes/VersionNotes.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetVersionNotes", + mock.Anything, // ctx is irrelevant for this test + appsec.GetVersionNotesRequest{ConfigID: 43253, Version: 7}, + ).Return(&cr, nil) + + client.On("UpdateVersionNotes", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateVersionNotesRequest{ConfigID: 43253, Version: 7}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResVersionNotes/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_version_notes.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 9576c799a..321612285 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -158,6 +158,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["slowPostDS"] = &OutputTemplate{TemplateName: "slowPost", TableTitle: "Action|SLOW_RATE_THRESHOLD RATE|SLOW_RATE_THRESHOLD PERIOD|DURATION_THRESHOLD TIMEOUT", TemplateType: "TABULAR", TemplateString: "{{.Action}}|{{.SlowRateThreshold.Rate}}|{{.SlowRateThreshold.Period}}|{{.DurationThreshold.Timeout}}"} otm["slowPost"] = &OutputTemplate{TemplateName: "slowPost", TableTitle: "Action|SLOW_RATE_THRESHOLD RATE|SLOW_RATE_THRESHOLD PERIOD|DURATION_THRESHOLD TIMEOUT", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .SecurityPolicies}}{{if $index}},{{end}}{{.SlowPost.Action}}|{{.SlowPost.DurationThreshold.Timeout}}|{{.SlowPost.SlowRateThreshold.Rate}}|{{.SlowPost.SlowRateThreshold.Period}}{{end}}"} otm["wafModesDS"] = &OutputTemplate{TemplateName: "wafMode", TableTitle: "Current|Mode|Eval", TemplateType: "TABULAR", TemplateString: "{{.Current}}|{{.Mode}}|{{.Eval}}"} + otm["versionNotesDS"] = &OutputTemplate{TemplateName: "versionNotesDS", TableTitle: "Version Notes", TemplateType: "TABULAR", TemplateString: "{{.Notes}}"} otm["wafProtectionDS"] = &OutputTemplate{TemplateName: "wafProtection", TableTitle: "APIConstraints|ApplicationLayerControls|BotmanControls|NetworkLayerControls|RateControls|ReputationControls|SlowPostControls", TemplateType: "TABULAR", TemplateString: "{{.ApplyAPIConstraints}}|{{.ApplyApplicationLayerControls}}|{{.ApplyBotmanControls}}|{{.ApplyNetworkLayerControls}}|{{.ApplyRateControls}}|{{.ApplyReputationControls}}|{{.ApplySlowPostControls}}"} otm["AttackGroupActionDS"] = &OutputTemplate{TemplateName: "AttackGroupAction", TableTitle: "GroupID|Action", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .AttackGroupActions}}{{if $index}},{{end}}{{.Group}}| {{.Action}}{{end}}"} diff --git a/pkg/providers/appsec/testdata/TestDSBypassNetworkLists/BypassNetworkLists.json b/pkg/providers/appsec/testdata/TestDSBypassNetworkLists/BypassNetworkLists.json new file mode 100644 index 000000000..97f204f44 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSBypassNetworkLists/BypassNetworkLists.json @@ -0,0 +1,12 @@ +{ + "networkLists": [ + { + "name": "Test network list 1", + "id": "888518_ACDDCKERS" + }, + { + "name": "Test network list 2", + "id": "1304427_AAXXBBLIST" + } + ] +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSBypassNetworkLists/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSBypassNetworkLists/match_by_id.tf new file mode 100644 index 000000000..2c63eb790 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSBypassNetworkLists/match_by_id.tf @@ -0,0 +1,13 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + +data "akamai_appsec_bypass_network_lists" "test" { +config_id = 43253 + version = 7 + +} + + + diff --git a/pkg/providers/appsec/testdata/TestDSVersionNotes/VersionNotes.json b/pkg/providers/appsec/testdata/TestDSVersionNotes/VersionNotes.json new file mode 100644 index 000000000..af0ee2871 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSVersionNotes/VersionNotes.json @@ -0,0 +1,3 @@ +{ + "notes": "This is a version note." +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestDSVersionNotes/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSVersionNotes/match_by_id.tf new file mode 100644 index 000000000..f6f70beb4 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestDSVersionNotes/match_by_id.tf @@ -0,0 +1,12 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + + +data "akamai_appsec_version_notes" "test" { + config_id = 43253 + version = 7 +} + + diff --git a/pkg/providers/appsec/testdata/TestResBypassNetworkLists/BypassNetworkLists.json b/pkg/providers/appsec/testdata/TestResBypassNetworkLists/BypassNetworkLists.json new file mode 100644 index 000000000..97f204f44 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResBypassNetworkLists/BypassNetworkLists.json @@ -0,0 +1,12 @@ +{ + "networkLists": [ + { + "name": "Test network list 1", + "id": "888518_ACDDCKERS" + }, + { + "name": "Test network list 2", + "id": "1304427_AAXXBBLIST" + } + ] +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResBypassNetworkLists/match_by_id.tf b/pkg/providers/appsec/testdata/TestResBypassNetworkLists/match_by_id.tf new file mode 100644 index 000000000..8d4de4fd0 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResBypassNetworkLists/match_by_id.tf @@ -0,0 +1,13 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + +resource "akamai_appsec_bypass_network_lists" "test" { + config_id = 43253 + version = 7 + bypass_network_list = ["888518_ACDDCKERS","1304427_AAXXBBLIST"] + +} + + diff --git a/pkg/providers/appsec/testdata/TestResVersionNotes/VersionNotes.json b/pkg/providers/appsec/testdata/TestResVersionNotes/VersionNotes.json new file mode 100644 index 000000000..af0ee2871 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResVersionNotes/VersionNotes.json @@ -0,0 +1,3 @@ +{ + "notes": "This is a version note." +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResVersionNotes/match_by_id.tf b/pkg/providers/appsec/testdata/TestResVersionNotes/match_by_id.tf new file mode 100644 index 000000000..03c1a5cf7 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResVersionNotes/match_by_id.tf @@ -0,0 +1,13 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + + +data "akamai_appsec_version_notes" "test" { + config_id = 43253 + version = 7 + notes = "Test Notes" +} + + From ae96821be68afcb191de89056e98dbbaa464bf40 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Tue, 12 Jan 2021 17:08:36 -0500 Subject: [PATCH 020/215] Add markdown files for new data sources --- docs/data-sources/appsec_api_endpoints.md | 48 ++++++++++++++ .../appsec_attack_group_actions.md | 2 +- docs/data-sources/appsec_eval_hostnames.md | 63 +++++++++++++++++++ .../data-sources/appsec_failover_hostnames.md | 59 +++++++++++++++++ docs/data-sources/appsec_hostname_coverage.md | 38 +++++++++++ .../appsec_hostname_coverage_match_targets.md | 46 ++++++++++++++ .../appsec_hostname_coverage_overlapping.md | 46 ++++++++++++++ docs/data-sources/appsec_siem_definitions.md | 60 ++++++++++++++++++ docs/data-sources/appsec_siem_settings.md | 57 +++++++++++++++++ 9 files changed, 418 insertions(+), 1 deletion(-) create mode 100644 docs/data-sources/appsec_api_endpoints.md create mode 100644 docs/data-sources/appsec_eval_hostnames.md create mode 100644 docs/data-sources/appsec_failover_hostnames.md create mode 100644 docs/data-sources/appsec_hostname_coverage.md create mode 100644 docs/data-sources/appsec_hostname_coverage_match_targets.md create mode 100644 docs/data-sources/appsec_hostname_coverage_overlapping.md create mode 100644 docs/data-sources/appsec_siem_definitions.md create mode 100644 docs/data-sources/appsec_siem_settings.md diff --git a/docs/data-sources/appsec_api_endpoints.md b/docs/data-sources/appsec_api_endpoints.md new file mode 100644 index 000000000..59e1bc0ca --- /dev/null +++ b/docs/data-sources/appsec_api_endpoints.md @@ -0,0 +1,48 @@ +--- +layout: "akamai" +page_title: "Akamai: ApiEndpoints" +subcategory: "Application Security" +description: |- + ApiEndpoints +--- + +# akamai_appsec_api_endpoints + +Use the `akamai_appsec_api_endpoints` data source to retrieve information about the API endpoints associated with a security policy version, or about a specific API endpoint. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getapiendpoints). + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_api_endpoints" "api_endpoints" { + config_id = 43253 + version = 7 + api_name = "TestEndpoint" +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The configuration ID. + +* `version` - (Required) The version number of the configuration. + +* `api_name` - (Optional) The name of a specific endpoint. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `id_list` - A list of IDs of the API endpoints. + +* `json` - A JSON-formatted list of information about the API endpoints. + +* `output_text` - A tabular display showing the ID and name of the API endpoints. + diff --git a/docs/data-sources/appsec_attack_group_actions.md b/docs/data-sources/appsec_attack_group_actions.md index 58cc1066a..7a3fbd8f2 100644 --- a/docs/data-sources/appsec_attack_group_actions.md +++ b/docs/data-sources/appsec_attack_group_actions.md @@ -8,7 +8,7 @@ description: |- # akamai_appsec_attack_group_actions -Use the `akamai_appsec_attack_group_actions` data source to retrieve a list of attack groups with their associated actions, or the action for a specific attack group. +The `akamai_appsec_attack_group_actions` data source allows you to retrieve a list of attack groups with their associated actions, or the action for a specific attack group. ## Example Usage diff --git a/docs/data-sources/appsec_eval_hostnames.md b/docs/data-sources/appsec_eval_hostnames.md new file mode 100644 index 000000000..1e4cd7be2 --- /dev/null +++ b/docs/data-sources/appsec_eval_hostnames.md @@ -0,0 +1,63 @@ +--- +layout: "akamai" +page_title: "Akamai: EvalHostnames" +subcategory: "Application Security" +description: |- + EvalHostnames +--- + +# akamai_appsec_eval_hostnames + +The `akamai_appsec_eval_hostnames` data source allows you to retrieve the evaluation hostnames for a configuration version. Evaluation mode for hostnames is only available for Web Application Protector. Run hostnames in evaluation mode to see how your configuration settings protect traffic for that hostname before adding a hostname directly to a live configuration. An evaluation period lasts four weeks unless you stop the evaluation. Once you begin, the hostnames you evaluate start responding to traffic as if they are your current hostnames. However, instead of taking an action the evaluation hostnames log which action they would have taken if they were your actively-protected hostnames and not a test. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to view the hosts which are under evaluation in a config version + +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +data "akamai_appsec_eval_hostnames" "eval_hostnames" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version +} + +output "eval_hostnames" { + value = data.akamai_appsec_eval_hostnames.eval_hostnames.hostnames +} + +output "eval_hostnames_output" { + value = data.akamai_appsec_eval_hostnames.eval_hostnames.output_text +} + +output "eval_hostnames_json" { + value = data.akamai_appsec_eval_hostnames.eval_hostnames.json +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The ID of the security configuration to use. + +* `version` - (Required) The version number of the security configuration to use. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `hostnames` - A list of the evaluation hostnames. + +* `json` - A JSON-formatted list of the evaluation hostnames. + +* `output_text` - A tabular display showing the evaluation hostnames. + diff --git a/docs/data-sources/appsec_failover_hostnames.md b/docs/data-sources/appsec_failover_hostnames.md new file mode 100644 index 000000000..0bc41cbb4 --- /dev/null +++ b/docs/data-sources/appsec_failover_hostnames.md @@ -0,0 +1,59 @@ +--- +layout: "akamai" +page_title: "Akamai: FailoverHostnames" +subcategory: "Application Security" +description: |- + FailoverHostnames +--- + +# akamai_appsec_failover_hostnames + +The `akamai_appsec_failover_hostnames` data source allows you to retrieve a list of the failover hostnames in a configuration. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getfailoverhostnames). + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to view the failover hostnames in a given security configuration +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +data "akamai_appsec_failover_hostnames" "failover_hostnames" { + config_id = data.akamai_appsec_configuration.configuration.config_id +} + +output "failover_hostnames" { + value = data.akamai_appsec_failover_hostnames.failover_hostnames.hostnames +} + +output "failover_hostnames_output" { + value = data.akamai_appsec_failover_hostnames.failover_hostnames.output_text +} + +output "failover_hostnames_json" { + value = data.akamai_appsec_failover_hostnames.failover_hostnames.json +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The ID of the security configuration to use. + +## Attributes Reference + +In addition to the argument above, the following attributes are exported: + +* `hostnames` - A list of the failover hostnames. + +* `json` - A JSON-formatted list of the failover hostnames. + +* `output_text` - A tabular display showing the failover hostnames. + diff --git a/docs/data-sources/appsec_hostname_coverage.md b/docs/data-sources/appsec_hostname_coverage.md new file mode 100644 index 000000000..f52a453f8 --- /dev/null +++ b/docs/data-sources/appsec_hostname_coverage.md @@ -0,0 +1,38 @@ +--- +layout: "akamai" +page_title: "Akamai: HostnameCoverage" +subcategory: "Application Security" +description: |- + ApiHostnameCoverage +--- + +# akamai_appsec_hostname_coverage + +The `akamai_appsec_hostname_coverage` data source allows you to retrieve a list of hostnames in the account with their current protections, activation statuses, and other summary information. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#8eb23096). + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_hostname_coverage" "hostname_coverage" { +} +``` + +## Argument Reference +The following arguments are supported: + +* None + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `json` - A JSON-formatted list of the hostname coverage information. + +* `output_text` - A tabular display of the hostname coverage information. + diff --git a/docs/data-sources/appsec_hostname_coverage_match_targets.md b/docs/data-sources/appsec_hostname_coverage_match_targets.md new file mode 100644 index 000000000..c26e88acd --- /dev/null +++ b/docs/data-sources/appsec_hostname_coverage_match_targets.md @@ -0,0 +1,46 @@ +--- +layout: "akamai" +page_title: "Akamai: ApiHostnameCoverageMatchTargets" +subcategory: "Application Security" +description: |- + ApiHostnameCoverageMatchTargets +--- + +# akamai_appsec_hostname_coverage_match_targets + +The `akamai_appsec_hostname_coverage_match_targets` data source allows you to retrieve information about the API and website match targets that protect a hostname. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#gethostnamecoveragematchtargets). + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_hostname_coverage_match_targets" "match_targets" { + config_id = 43253 + version = 7 + hostname = "example.com" +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id`- (Required) The configuration ID. + +* `version` - (Required) The version number of the configuration. + +* `hostname` - (Optional) The hostname for which to retrieve information. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +*`json` - A JSON-formatted list of the coverage information. + +*`output_text` - A tabular display of the coverage information. + diff --git a/docs/data-sources/appsec_hostname_coverage_overlapping.md b/docs/data-sources/appsec_hostname_coverage_overlapping.md new file mode 100644 index 000000000..4e3c6a7e7 --- /dev/null +++ b/docs/data-sources/appsec_hostname_coverage_overlapping.md @@ -0,0 +1,46 @@ +--- +layout: "akamai" +page_title: "Akamai: ApiHostnameCoverageOverlapping" +subcategory: "Application Security" +description: |- + ApiHostnameCoverageOverlapping +--- + +# akamai_appsec_hostname_coverage_overlapping + +The `akamai_appsec_hostname_coverage_overlapping` data source allows you to retrieve information about the configuration versions that contain a hostname also included in the current configuration version. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#gethostnamecoverageoverlapping). + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_hostname_coverage_overlapping" "test" { + config_id = 43253 + version = 7 + hostname = "example.com" +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id`- (Required) The configuration ID. + +* `version` - (Required) The version number of the configuration. + +* `hostname` - (Optional) The hostname for which to retrieve information. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +*`json` - A JSON-formatted list of the overlap information. + +*`output_text` - A tabular display of the overlap information. + diff --git a/docs/data-sources/appsec_siem_definitions.md b/docs/data-sources/appsec_siem_definitions.md new file mode 100644 index 000000000..1d2dc70f0 --- /dev/null +++ b/docs/data-sources/appsec_siem_definitions.md @@ -0,0 +1,60 @@ +--- +layout: "akamai" +page_title: "Akamai: SiemDefinitions" +subcategory: "Application Security" +description: |- + SiemDefinitions +--- + +# akamai_appsec_siem_definitions + +The `akamai_appsec_siem_definitions` data source allows you to retrieve information about the available SIEM versions, or about a specific SIEM version. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getsiemversions). + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to view the siem settings with a given security configuration +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +data "akamai_appsec_siem_definitions" "siem_definitions" { +} + +output "siem_definitions_json" { + value = data.akamai_appsec_siem_definitions.siem_definitions.json +} + +output "siem_definitions_output" { + value = data.akamai_appsec_siem_definitions.siem_definitions.output_text +} + +data "akamai_appsec_siem_definitions" "siem_definition" { + siem_definition_name = var.siem_definition_name +} + +output "siem_definition_id" { + value = data.akamai_appsec_siem_definitions.siem_definition.id +} +``` + +## Argument Reference + +The following arguments are supported: + +* `siem_definition_name`- (Optional) The name of a specific SIEM definition for which to retrieve information. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `json` - A JSON-formatted list of the SIEM version information. + +* `output_text` - A tabular display showing the ID and name of each SIEM version. + diff --git a/docs/data-sources/appsec_siem_settings.md b/docs/data-sources/appsec_siem_settings.md new file mode 100644 index 000000000..e9435af14 --- /dev/null +++ b/docs/data-sources/appsec_siem_settings.md @@ -0,0 +1,57 @@ +--- +layout: "akamai" +page_title: "Akamai: SiemSettings" +subcategory: "Application Security" +description: |- + SiemSettijgs +--- + +# akamai_appsec_siem_settings + +The `akamai_appsec_siem_settings` data source allows you to retrieve the SIEM settings for a specific configuration. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getsiemsettings). + +## Example Usage + +Basic usage: + +```hcl +// OPEN API --> https://developer.akamai.com/api/cloud_security/application_security/v1.html#getsiemsettings +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to view the siem settings with a given security configuration +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +data "akamai_appsec_siem_settings" "siem_settings" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version +} + +output "siem_settings_json" { + value = data.akamai_appsec_siem_settings.siem_settings.json +} + +output "siem_settings_output" { + value = data.akamai_appsec_siem_settings.siem_settings.output_text +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The ID of the security configuration to use. + +* `version` - (Required) The version number of the security configuration to use. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `json` - A JSON-formatted list of the SIEM setting information. + +* `output_text` - A tabular display showing the SIEM setting information. + From cf5091f4ea70f67c356f6bddc029e1b5a97148c2 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Wed, 13 Jan 2021 09:34:25 -0500 Subject: [PATCH 021/215] Fix incorrect description of output_text --- docs/data-sources/appsec_attack_group_condition_exception.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data-sources/appsec_attack_group_condition_exception.md b/docs/data-sources/appsec_attack_group_condition_exception.md index 90b572b17..049b2f355 100644 --- a/docs/data-sources/appsec_attack_group_condition_exception.md +++ b/docs/data-sources/appsec_attack_group_condition_exception.md @@ -53,6 +53,6 @@ The following arguments are supported: In addition to the arguments above, the following attributes are exported: -* `output_text` - A tabular display showing the ID, name, and action of all custom rules associated with the specified security configuration, version and security policy. +* `output_text` - A tabular display showing the condition and exception information. * `json` - The condition and exception information in JSON format. From 470b42f7bb8e533f8e493f306ac8e367b0cfcbfc Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 13 Jan 2021 09:52:45 -0600 Subject: [PATCH 022/215] Code cleanup prior to PR --- .../networklists/data_akamai_network_network_lists.go | 9 --------- 1 file changed, 9 deletions(-) diff --git a/pkg/providers/networklists/data_akamai_network_network_lists.go b/pkg/providers/networklists/data_akamai_network_network_lists.go index fb4156d92..045b56217 100644 --- a/pkg/providers/networklists/data_akamai_network_network_lists.go +++ b/pkg/providers/networklists/data_akamai_network_network_lists.go @@ -74,14 +74,5 @@ func dataSourceNetworkListRead(ctx context.Context, d *schema.ResourceData, m in return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - /*ots := OutputTemplates{} - InitTemplates(ots) - - outputtext, err := RenderTemplates(ots, "securityPoliciesDS", securitypolicy) - if err == nil { - d.Set("output_text", outputtext) - } - */ - return nil } From de6a66f7489d23eb3206ffe6621004854d78f0a4 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 13 Jan 2021 12:30:40 -0600 Subject: [PATCH 023/215] Update resource name to akamai_appsec_eval_hostnames --- pkg/providers/appsec/provider.go | 2 +- pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go | 2 +- pkg/providers/appsec/testdata/TestResEvalHost/match_by_id.tf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index b240f8e4d..8c666a287 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -119,7 +119,7 @@ func Provider() *schema.Provider { "akamai_appsec_selected_hostnames": resourceSelectedHostname(), "akamai_appsec_security_policy_clone": resourceSecurityPolicyClone(), "akamai_appsec_eval": resourceEval(), - "akamai_appsec_eval_host": resourceEvalHost(), + "akamai_appsec_eval_hostnames": resourceEvalHost(), "akamai_appsec_eval_protect_host": resourceEvalProtectHost(), "akamai_appsec_eval_rule_action": resourceEvalRuleAction(), "akamai_appsec_eval_rule_condition_exception": resourceEvalRuleConditionException(), diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go index d466dd0ff..59ec09a4b 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go @@ -39,7 +39,7 @@ func TestAccAkamaiEvalHost_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResEvalHost/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_eval_host.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_eval_hostnames.test", "id", "43253"), ), }, }, diff --git a/pkg/providers/appsec/testdata/TestResEvalHost/match_by_id.tf b/pkg/providers/appsec/testdata/TestResEvalHost/match_by_id.tf index 96ff6e108..8378af3ee 100644 --- a/pkg/providers/appsec/testdata/TestResEvalHost/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResEvalHost/match_by_id.tf @@ -2,7 +2,7 @@ provider "akamai" { edgerc = "~/.edgerc" } -resource "akamai_appsec_eval_host" "test" { +resource "akamai_appsec_eval_hostnames" "test" { config_id = 43253 version = 7 hostnames = ["example.com"] From d6c29ce540847ac80d4983a635e51efcef4f6bb1 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 13 Jan 2021 12:56:24 -0600 Subject: [PATCH 024/215] Add support for Siem settings remove --- pkg/providers/appsec/appsec_test.go | 10 ++++++ .../resource_akamai_appsec_siem_settings.go | 35 ++++++++++++++++++- ...source_akamai_appsec_siem_settings_test.go | 9 +++++ 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/appsec_test.go b/pkg/providers/appsec/appsec_test.go index b65b5e0f9..80b24e016 100644 --- a/pkg/providers/appsec/appsec_test.go +++ b/pkg/providers/appsec/appsec_test.go @@ -640,6 +640,16 @@ func (p *mockappsec) GetSiemSettings(ctx context.Context, params appsec.GetSiemS return args.Get(0).(*appsec.GetSiemSettingsResponse), args.Error(1) } +func (p *mockappsec) RemoveSiemSettings(ctx context.Context, params appsec.RemoveSiemSettingsRequest) (*appsec.RemoveSiemSettingsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.RemoveSiemSettingsResponse), args.Error(1) +} + func (p *mockappsec) UpdateSiemSettings(ctx context.Context, params appsec.UpdateSiemSettingsRequest) (*appsec.UpdateSiemSettingsResponse, error) { args := p.Called(ctx, params) diff --git a/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go b/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go index 0df3bf278..8e145b912 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go +++ b/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go @@ -103,7 +103,40 @@ func resourceSiemSettingsRead(ctx context.Context, d *schema.ResourceData, m int func resourceSiemSettingsDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - return schema.NoopContext(nil, d, m) + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceSiemSettingsUpdate") + + removeSiemSettings := v2.RemoveSiemSettingsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeSiemSettings.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeSiemSettings.Version = version + + removeSiemSettings.EnableSiem = false + + siemID, err := tools.GetIntValue("siem_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeSiemSettings.SiemDefinitionID = siemID + + _, erru := client.RemoveSiemSettings(ctx, removeSiemSettings) + if erru != nil { + logger.Errorf("calling 'removeSiemSettings': %s", erru.Error()) + return diag.FromErr(erru) + } + + d.SetId("") + return nil } func resourceSiemSettingsUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { diff --git a/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go b/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go index 3adfa8c30..2b47d00c3 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go @@ -21,6 +21,10 @@ func TestAccAkamaiSiemSettings_res_basic(t *testing.T) { expectJS := compactJSON(loadFixtureBytes("testdata/TestResSiemSettings/SiemSettings.json")) json.Unmarshal([]byte(expectJS), &cr) + crd := appsec.RemoveSiemSettingsResponse{} + expectJSD := compactJSON(loadFixtureBytes("testdata/TestResSiemSettings/SiemSettings.json")) + json.Unmarshal([]byte(expectJSD), &crd) + client.On("GetSiemSettings", mock.Anything, // ctx is irrelevant for this test appsec.GetSiemSettingsRequest{ConfigID: 43253, Version: 7}, @@ -31,6 +35,11 @@ func TestAccAkamaiSiemSettings_res_basic(t *testing.T) { appsec.UpdateSiemSettingsRequest{ConfigID: 43253, Version: 7, EnableForAllPolicies: false, EnableSiem: true, EnabledBotmanSiemEvents: true, SiemDefinitionID: 1, FirewallPolicyIds: []string{"12345"}}, ).Return(&cu, nil) + client.On("RemoveSiemSettings", + mock.Anything, // ctx is irrelevant for this test + appsec.RemoveSiemSettingsRequest{ConfigID: 43253, Version: 7, EnableForAllPolicies: false, EnableSiem: false, EnabledBotmanSiemEvents: false, SiemDefinitionID: 1, FirewallPolicyIds: []string(nil)}, + ).Return(&crd, nil) + useClient(client, func() { resource.Test(t, resource.TestCase{ IsUnitTest: true, From 630c3320757123bcad0bdfb325aba6dd016a6657 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 13 Jan 2021 20:29:59 -0600 Subject: [PATCH 025/215] Remove api_ from hostname coverage and refactor json request constraints --- ...data_akamai_appsec_api_hostname_coverage_test.go | 2 +- .../data_akamai_appsec_api_request_constraints.go | 13 ++++++++++++- pkg/providers/appsec/provider.go | 2 +- pkg/providers/appsec/templates.go | 4 ++-- .../TestDSApiHostnameCoverage/match_by_id.tf | 2 +- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go index ef72c1e73..c7e36c9c6 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go @@ -30,7 +30,7 @@ func TestAccAkamaiApiHostnameCoverage_data_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestDSApiHostnameCoverage/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_api_hostname_coverage.test", "id", "3644"), + resource.TestCheckResourceAttr("data.akamai_appsec_hostname_coverage.test", "id", "3644"), ), }, }, diff --git a/pkg/providers/appsec/data_akamai_appsec_api_request_constraints.go b/pkg/providers/appsec/data_akamai_appsec_api_request_constraints.go index 514faa82c..b59b98e42 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_request_constraints.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_request_constraints.go @@ -2,7 +2,9 @@ package appsec import ( "context" + "encoding/json" "errors" + "fmt" "strconv" v2 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" @@ -86,11 +88,20 @@ func dataSourceApiRequestConstraintsRead(ctx context.Context, d *schema.Resource ots := OutputTemplates{} InitTemplates(ots) - outputtext, err := RenderTemplates(ots, "apirequestconstraintsDS", apirequestconstraints) + outputtext, err := RenderTemplates(ots, "apiRequestConstraintsDS", apirequestconstraints) if err == nil { d.Set("output_text", outputtext) } + jsonBody, err := json.Marshal(apirequestconstraints) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(strconv.Itoa(getApiRequestConstraints.ConfigID)) return nil diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index 8c666a287..1989ba1a6 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -64,7 +64,7 @@ func Provider() *schema.Provider { "akamai_appsec_advanced_settings_logging": dataSourceAdvancedSettingsLogging(), "akamai_appsec_advanced_settings_prefetch": dataSourceAdvancedSettingsPrefetch(), "akamai_appsec_api_endpoints": dataSourceApiEndpoints(), - "akamai_appsec_api_hostname_coverage": dataSourceApiHostnameCoverage(), + "akamai_appsec_hostname_coverage": dataSourceApiHostnameCoverage(), "akamai_appsec_api_hostname_coverage_overlapping": dataSourceApiHostnameCoverageOverlapping(), "akamai_appsec_api_hostname_coverage_match_targets": dataSourceApiHostnameCoverageMatchTargets(), "akamai_appsec_api_request_constraints": dataSourceApiRequestConstraints(), diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 321612285..5177451fa 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -117,11 +117,11 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["apiEndpointsDS"] = &OutputTemplate{TemplateName: "apiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} otm["policyApiEndpointsDS"] = &OutputTemplate{TemplateName: "policyApiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} otm["apiHostnameCoverageDS"] = &OutputTemplate{TemplateName: "apiHostnameCoverageDS", TableTitle: "Config ID|Config Name|Version|Status|Has Match Target|Hostname", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .HostnameCoverage}}{{if $index}},{{end}}{{.Configuration.ID}}|{{.Configuration.Name}}|{{.Configuration.Version}}|{{.Status}}|{{.HasMatchTarget}}|{{.Hostname}}{{end}}"} - + otm["apiRequestConstraintsDS"] = &OutputTemplate{TemplateName: "apiRequestConstraintsDS", TableTitle: "ID|Action", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Action}}{{end}}"} otm["configuration"] = &OutputTemplate{TemplateName: "Configurations", TableTitle: "Config_id|Name|Latest_version|Version_active_in_staging|Version_active_in_production", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .Configurations}}{{if $index}},{{end}}{{.ID}}|{{.Name}}|{{.LatestVersion}}|{{.StagingVersion}}|{{.ProductionVersion}}{{end}}"} otm["configurationVersion"] = &OutputTemplate{TemplateName: "ConfigurationVersion", TableTitle: "Version Number|Staging Status|Production Status", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .VersionList}}{{if $index}},{{end}}{{.Version}}|{{.Staging.Status}}|{{.Production.Status}}{{end}}"} otm["contractsgroupsDS"] = &OutputTemplate{TemplateName: "contractsgroupsDS", TableTitle: "ContractID|GroupID|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .ContractGroups}}{{if $index}},{{end}}{{.ContractID}}|{{.GroupID}}|{{.DisplayName}}{{end}}"} - otm["failoverHostnamesDS"] = &OutputTemplate{TemplateName: "failoverHostnamesDS", TableTitle: "Config ID|Config Version", TemplateType: "TABULAR", TemplateString: "{{.ConfigID}}|{{.ConfigVersion}}"} + otm["failoverHostnamesDS"] = &OutputTemplate{TemplateName: "failoverHostnamesDS", TableTitle: "Hostname", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .AvailableSet}}{{if $index}},{{end}}{{.hostname}}"} otm["penaltyBoxDS"] = &OutputTemplate{TemplateName: "penaltyBoxDS", TableTitle: "PenaltyBoxProtection|Action", TemplateType: "TABULAR", TemplateString: "{{.PenaltyBoxProtection}}|{{.Action}}"} diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf index 0aadbaf5d..c7065b8f1 100644 --- a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf @@ -2,6 +2,6 @@ provider "akamai" { edgerc = "~/.edgerc" } -data "akamai_appsec_api_hostname_coverage" "test" { +data "akamai_appsec_hostname_coverage" "test" { } From d30806157c52d61833e53a69af212409b6090986 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 13 Jan 2021 22:04:44 -0600 Subject: [PATCH 026/215] Add RemoveEvalHost and refactor tests --- pkg/providers/appsec/appsec_test.go | 10 ++++++ .../resource_akamai_appsec_eval_host.go | 32 ++++++++++++++++++- .../resource_akamai_appsec_eval_host_test.go | 9 ++++++ ...source_akamai_appsec_version_notes_test.go | 2 +- pkg/providers/appsec/templates.go | 2 +- .../TestResVersionNotes/match_by_id.tf | 2 +- 6 files changed, 53 insertions(+), 4 deletions(-) diff --git a/pkg/providers/appsec/appsec_test.go b/pkg/providers/appsec/appsec_test.go index 80b24e016..8b84e291e 100644 --- a/pkg/providers/appsec/appsec_test.go +++ b/pkg/providers/appsec/appsec_test.go @@ -988,6 +988,16 @@ func (p *mockappsec) UpdateEvalHost(ctx context.Context, params appsec.UpdateEva return args.Get(0).(*appsec.UpdateEvalHostResponse), args.Error(1) } +func (p *mockappsec) RemoveEvalHost(ctx context.Context, params appsec.RemoveEvalHostRequest) (*appsec.RemoveEvalHostResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.RemoveEvalHostResponse), args.Error(1) +} + func (p *mockappsec) GetEvalProtectHost(ctx context.Context, params appsec.GetEvalProtectHostRequest) (*appsec.GetEvalProtectHostResponse, error) { args := p.Called(ctx, params) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_host.go b/pkg/providers/appsec/resource_akamai_appsec_eval_host.go index 432ca4a7b..5d8bcec81 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_host.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_host.go @@ -88,7 +88,37 @@ func resourceEvalHostRead(ctx context.Context, d *schema.ResourceData, m interfa func resourceEvalHostDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - return schema.NoopContext(nil, d, m) + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceEvalHostRemove") + + removeEvalHost := appsec.RemoveEvalHostRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEvalHost.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEvalHost.Version = version + + hn := make([]string, 0, 1) + + hn = append(hn, "") + + removeEvalHost.Hostnames = hn + + _, erru := client.RemoveEvalHost(ctx, removeEvalHost) + if erru != nil { + logger.Errorf("calling 'updateEvalHost': %s", erru.Error()) + return diag.FromErr(erru) + } + d.SetId("") + return nil } func resourceEvalHostUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go index 59ec09a4b..48c7c1f60 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go @@ -21,6 +21,10 @@ func TestAccAkamaiEvalHost_res_basic(t *testing.T) { expectJS := compactJSON(loadFixtureBytes("testdata/TestResEvalHost/EvalHost.json")) json.Unmarshal([]byte(expectJS), &cr) + crd := appsec.RemoveEvalHostResponse{} + expectJSD := compactJSON(loadFixtureBytes("testdata/TestResEvalHost/EvalHost.json")) + json.Unmarshal([]byte(expectJSD), &crd) + client.On("GetEvalHost", mock.Anything, // ctx is irrelevant for this test appsec.GetEvalHostRequest{ConfigID: 43253, Version: 7}, @@ -31,6 +35,11 @@ func TestAccAkamaiEvalHost_res_basic(t *testing.T) { appsec.UpdateEvalHostRequest{ConfigID: 43253, Version: 7, Hostnames: []string{"example.com"}}, ).Return(&cu, nil) + client.On("RemoveEvalHost", + mock.Anything, // ctx is irrelevant for this test + appsec.RemoveEvalHostRequest{ConfigID: 43253, Version: 7, Hostnames: []string{""}}, + ).Return(&crd, nil) + useClient(client, func() { resource.Test(t, resource.TestCase{ IsUnitTest: true, diff --git a/pkg/providers/appsec/resource_akamai_appsec_version_notes_test.go b/pkg/providers/appsec/resource_akamai_appsec_version_notes_test.go index f5191b71e..df316cc3a 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_version_notes_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_version_notes_test.go @@ -28,7 +28,7 @@ func TestAccAkamaiVersionNotes_res_basic(t *testing.T) { client.On("UpdateVersionNotes", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateVersionNotesRequest{ConfigID: 43253, Version: 7}, + appsec.UpdateVersionNotesRequest{ConfigID: 43253, Version: 7, Notes: "Test Notes"}, ).Return(&cu, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 5177451fa..77af890c3 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -121,7 +121,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["configuration"] = &OutputTemplate{TemplateName: "Configurations", TableTitle: "Config_id|Name|Latest_version|Version_active_in_staging|Version_active_in_production", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .Configurations}}{{if $index}},{{end}}{{.ID}}|{{.Name}}|{{.LatestVersion}}|{{.StagingVersion}}|{{.ProductionVersion}}{{end}}"} otm["configurationVersion"] = &OutputTemplate{TemplateName: "ConfigurationVersion", TableTitle: "Version Number|Staging Status|Production Status", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .VersionList}}{{if $index}},{{end}}{{.Version}}|{{.Staging.Status}}|{{.Production.Status}}{{end}}"} otm["contractsgroupsDS"] = &OutputTemplate{TemplateName: "contractsgroupsDS", TableTitle: "ContractID|GroupID|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .ContractGroups}}{{if $index}},{{end}}{{.ContractID}}|{{.GroupID}}|{{.DisplayName}}{{end}}"} - otm["failoverHostnamesDS"] = &OutputTemplate{TemplateName: "failoverHostnamesDS", TableTitle: "Hostname", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .AvailableSet}}{{if $index}},{{end}}{{.hostname}}"} + otm["failoverHostnamesDS"] = &OutputTemplate{TemplateName: "failoverHostnamesDS", TableTitle: "Hostname", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .AvailableSet}}{{if $index}},{{end}}{{.Hostname}}{{end}}"} otm["penaltyBoxDS"] = &OutputTemplate{TemplateName: "penaltyBoxDS", TableTitle: "PenaltyBoxProtection|Action", TemplateType: "TABULAR", TemplateString: "{{.PenaltyBoxProtection}}|{{.Action}}"} diff --git a/pkg/providers/appsec/testdata/TestResVersionNotes/match_by_id.tf b/pkg/providers/appsec/testdata/TestResVersionNotes/match_by_id.tf index 03c1a5cf7..a38768f4f 100644 --- a/pkg/providers/appsec/testdata/TestResVersionNotes/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResVersionNotes/match_by_id.tf @@ -4,7 +4,7 @@ provider "akamai" { -data "akamai_appsec_version_notes" "test" { +resource "akamai_appsec_version_notes" "test" { config_id = 43253 version = 7 notes = "Test Notes" From 309fa1faa9d06b06f40e5202ec58405bb9b2e58a Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 14 Jan 2021 08:55:56 -0600 Subject: [PATCH 027/215] Remove api_ prefix from hostname_coverage resources --- ...pi_hostname_coverage_match_targets_test.go | 2 +- ..._api_hostname_coverage_overlapping_test.go | 2 +- pkg/providers/appsec/provider.go | 92 +++++++++---------- .../match_by_id.tf | 2 +- .../match_by_id.tf | 2 +- 5 files changed, 50 insertions(+), 50 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets_test.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets_test.go index dc0b767b5..d5db4a6a1 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets_test.go @@ -30,7 +30,7 @@ func TestAccAkamaiApiHostnameCoverageMatchTargets_data_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_api_hostname_coverage_match_targets.test", "id", "43253"), + resource.TestCheckResourceAttr("data.akamai_appsec_hostname_coverage_match_targets.test", "id", "43253"), ), }, }, diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping_test.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping_test.go index 0384f414f..7d5833d3c 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping_test.go @@ -30,7 +30,7 @@ func TestAccAkamaiApiHostnameCoverageOverlapping_data_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestDSApiHostnameCoverageOverlapping/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_api_hostname_coverage_overlapping.test", "id", "43253"), + resource.TestCheckResourceAttr("data.akamai_appsec_hostname_coverage_overlapping.test", "id", "43253"), ), }, }, diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index 1989ba1a6..7f925eff6 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -61,52 +61,52 @@ func Provider() *schema.Provider { }, }, DataSourcesMap: map[string]*schema.Resource{ - "akamai_appsec_advanced_settings_logging": dataSourceAdvancedSettingsLogging(), - "akamai_appsec_advanced_settings_prefetch": dataSourceAdvancedSettingsPrefetch(), - "akamai_appsec_api_endpoints": dataSourceApiEndpoints(), - "akamai_appsec_hostname_coverage": dataSourceApiHostnameCoverage(), - "akamai_appsec_api_hostname_coverage_overlapping": dataSourceApiHostnameCoverageOverlapping(), - "akamai_appsec_api_hostname_coverage_match_targets": dataSourceApiHostnameCoverageMatchTargets(), - "akamai_appsec_api_request_constraints": dataSourceApiRequestConstraints(), - "akamai_appsec_bypass_network_lists": dataSourceBypassNetworkLists(), - "akamai_appsec_configuration": dataSourceConfiguration(), - "akamai_appsec_configuration_version": dataSourceConfigurationVersion(), - "akamai_appsec_contracts_groups": dataSourceContractsGroups(), - "akamai_appsec_custom_deny": dataSourceCustomDeny(), - "akamai_appsec_custom_rules": dataSourceCustomRules(), - "akamai_appsec_custom_rule_actions": dataSourceCustomRuleActions(), - "akamai_appsec_export_configuration": dataSourceExportConfiguration(), - "akamai_appsec_eval": dataSourceEval(), - "akamai_appsec_eval_hostnames": dataSourceEvalHostnames(), - "akamai_appsec_eval_rule_actions": dataSourceEvalRuleActions(), - "akamai_appsec_eval_rule_condition_exception": dataSourceEvalRuleConditionException(), - "akamai_appsec_failover_hostnames": dataSourceFailoverHostnames(), - "akamai_appsec_ip_geo": dataSourceIPGeo(), - "akamai_appsec_rule_actions": dataSourceRuleActions(), - "akamai_appsec_rule_condition_exception": dataSourceRuleConditionException(), - "akamai_appsec_match_targets": dataSourceMatchTargets(), - "akamai_appsec_penalty_box": dataSourcePenaltyBox(), - "akamai_appsec_security_policy_protections": dataSourcePolicyProtections(), - "akamai_appsec_rate_policies": dataSourceRatePolicies(), - "akamai_appsec_rate_policy_actions": dataSourceRatePolicyActions(), - "akamai_appsec_rate_protections": dataSourceRateProtections(), - "akamai_appsec_reputation_protections": dataSourceReputationProtections(), - "akamai_appsec_reputation_analysis": dataSourceReputationAnalysis(), - "akamai_appsec_reputation_profiles": dataSourceReputationProfiles(), - "akamai_appsec_reputation_profile_actions": dataSourceReputationProfileActions(), - "akamai_appsec_rule_upgrade_details": dataSourceRuleUpgrade(), - "akamai_appsec_selectable_hostnames": dataSourceSelectableHostnames(), - "akamai_appsec_security_policy": dataSourceSecurityPolicy(), - "akamai_appsec_selected_hostnames": dataSourceSelectedHostnames(), - "akamai_appsec_siem_settings": dataSourceSiemSettings(), - "akamai_appsec_siem_definitions": dataSourceSiemDefinitions(), - "akamai_appsec_slow_post": dataSourceSlowPostProtectionSettings(), - "akamai_appsec_slowpost_protections": dataSourceSlowPostProtections(), - "akamai_appsec_attack_group_actions": dataSourceAttackGroupActions(), - "akamai_appsec_version_notes": dataSourceVersionNotes(), - "akamai_appsec_waf_mode": dataSourceWAFMode(), - "akamai_appsec_waf_protection": dataSourceWAFProtections(), - "akamai_appsec_attack_group_condition_exception": dataSourceAttackGroupConditionException(), + "akamai_appsec_advanced_settings_logging": dataSourceAdvancedSettingsLogging(), + "akamai_appsec_advanced_settings_prefetch": dataSourceAdvancedSettingsPrefetch(), + "akamai_appsec_api_endpoints": dataSourceApiEndpoints(), + "akamai_appsec_hostname_coverage": dataSourceApiHostnameCoverage(), + "akamai_appsec_hostname_coverage_overlapping": dataSourceApiHostnameCoverageOverlapping(), + "akamai_appsec_hostname_coverage_match_targets": dataSourceApiHostnameCoverageMatchTargets(), + "akamai_appsec_api_request_constraints": dataSourceApiRequestConstraints(), + "akamai_appsec_bypass_network_lists": dataSourceBypassNetworkLists(), + "akamai_appsec_configuration": dataSourceConfiguration(), + "akamai_appsec_configuration_version": dataSourceConfigurationVersion(), + "akamai_appsec_contracts_groups": dataSourceContractsGroups(), + "akamai_appsec_custom_deny": dataSourceCustomDeny(), + "akamai_appsec_custom_rules": dataSourceCustomRules(), + "akamai_appsec_custom_rule_actions": dataSourceCustomRuleActions(), + "akamai_appsec_export_configuration": dataSourceExportConfiguration(), + "akamai_appsec_eval": dataSourceEval(), + "akamai_appsec_eval_hostnames": dataSourceEvalHostnames(), + "akamai_appsec_eval_rule_actions": dataSourceEvalRuleActions(), + "akamai_appsec_eval_rule_condition_exception": dataSourceEvalRuleConditionException(), + "akamai_appsec_failover_hostnames": dataSourceFailoverHostnames(), + "akamai_appsec_ip_geo": dataSourceIPGeo(), + "akamai_appsec_rule_actions": dataSourceRuleActions(), + "akamai_appsec_rule_condition_exception": dataSourceRuleConditionException(), + "akamai_appsec_match_targets": dataSourceMatchTargets(), + "akamai_appsec_penalty_box": dataSourcePenaltyBox(), + "akamai_appsec_security_policy_protections": dataSourcePolicyProtections(), + "akamai_appsec_rate_policies": dataSourceRatePolicies(), + "akamai_appsec_rate_policy_actions": dataSourceRatePolicyActions(), + "akamai_appsec_rate_protections": dataSourceRateProtections(), + "akamai_appsec_reputation_protections": dataSourceReputationProtections(), + "akamai_appsec_reputation_analysis": dataSourceReputationAnalysis(), + "akamai_appsec_reputation_profiles": dataSourceReputationProfiles(), + "akamai_appsec_reputation_profile_actions": dataSourceReputationProfileActions(), + "akamai_appsec_rule_upgrade_details": dataSourceRuleUpgrade(), + "akamai_appsec_selectable_hostnames": dataSourceSelectableHostnames(), + "akamai_appsec_security_policy": dataSourceSecurityPolicy(), + "akamai_appsec_selected_hostnames": dataSourceSelectedHostnames(), + "akamai_appsec_siem_settings": dataSourceSiemSettings(), + "akamai_appsec_siem_definitions": dataSourceSiemDefinitions(), + "akamai_appsec_slow_post": dataSourceSlowPostProtectionSettings(), + "akamai_appsec_slowpost_protections": dataSourceSlowPostProtections(), + "akamai_appsec_attack_group_actions": dataSourceAttackGroupActions(), + "akamai_appsec_version_notes": dataSourceVersionNotes(), + "akamai_appsec_waf_mode": dataSourceWAFMode(), + "akamai_appsec_waf_protection": dataSourceWAFProtections(), + "akamai_appsec_attack_group_condition_exception": dataSourceAttackGroupConditionException(), }, ResourcesMap: map[string]*schema.Resource{ "akamai_appsec_advanced_settings": resourceAdvancedSettingsLogging(), diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf index cb7e5809f..3318f34e7 100644 --- a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageMatchTargets/match_by_id.tf @@ -2,7 +2,7 @@ provider "akamai" { edgerc = "~/.edgerc" } -data "akamai_appsec_api_hostname_coverage_match_targets" "test" { +data "akamai_appsec_hostname_coverage_match_targets" "test" { config_id = 43253 version = 7 hostname = "rinaldi.sandbox.akamaideveloper.com" diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageOverlapping/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageOverlapping/match_by_id.tf index e50aaeae4..5bf4b13b7 100644 --- a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageOverlapping/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverageOverlapping/match_by_id.tf @@ -2,7 +2,7 @@ provider "akamai" { edgerc = "~/.edgerc" } -data "akamai_appsec_api_hostname_coverage_overlapping" "test" { +data "akamai_appsec_hostname_coverage_overlapping" "test" { config_id = 43253 version = 7 hostname = "example.com" From 9fd788080e582b792f438bc03ab4aae94836f608 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 14 Jan 2021 09:02:16 -0600 Subject: [PATCH 028/215] Refactor akamai_appsec_advanced_settings to akamai_appsec_advanced_settings_logging --- pkg/providers/appsec/provider.go | 2 +- .../resource_akamai_appsec_advanced_settings_logging_test.go | 2 +- .../testdata/TestResAdvancedSettingsLogging/match_by_id.tf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index 7f925eff6..108a2c7bd 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -109,7 +109,7 @@ func Provider() *schema.Provider { "akamai_appsec_attack_group_condition_exception": dataSourceAttackGroupConditionException(), }, ResourcesMap: map[string]*schema.Resource{ - "akamai_appsec_advanced_settings": resourceAdvancedSettingsLogging(), + "akamai_appsec_advanced_settings_logging": resourceAdvancedSettingsLogging(), "akamai_appsec_advanced_settings_prefetch": resourceAdvancedSettingsPrefetch(), "akamai_appsec_api_request_constraints": resourceApiRequestConstraints(), "akamai_appsec_bypass_network_lists": resourceBypassNetworkLists(), diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go index 1c3d3f662..18d1b56b9 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go @@ -47,7 +47,7 @@ func TestAccAkamaiAdvancedSettingsLogging_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResAdvancedSettingsLogging/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_advanced_settings.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_advanced_settings_logging.test", "id", "43253"), ), }, }, diff --git a/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf b/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf index a425e81bc..b9f6bc85a 100644 --- a/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResAdvancedSettingsLogging/match_by_id.tf @@ -3,7 +3,7 @@ provider "akamai" { } -resource "akamai_appsec_advanced_settings" "test" { +resource "akamai_appsec_advanced_settings_logging" "test" { config_id = 43253 version = 7 logging = <<-EOF From b263055af42c034fcdaa0208e8a017043781ee7d Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 14 Jan 2021 09:28:05 -0600 Subject: [PATCH 029/215] Add json payload to advanced_settings_logging --- .../resource_akamai_appsec_advanced_settings_logging.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go index 83f72a96b..98b251b6b 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go @@ -2,6 +2,7 @@ package appsec import ( "context" + "encoding/json" "errors" "strconv" @@ -104,6 +105,12 @@ func resourceAdvancedSettingsLoggingUpdate(ctx context.Context, d *schema.Resour updateAdvancedSettingsLogging := appsec.UpdateAdvancedSettingsLoggingRequest{} + jsonpostpayload := d.Get("logging").(string) + + if err := json.Unmarshal([]byte(jsonpostpayload), &updateAdvancedSettingsLogging); err != nil { + return diag.FromErr(err) + } + configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) From c6c01881fbc9a39f1ea07ff1b55022e8c6e97ebe Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 14 Jan 2021 11:40:40 -0600 Subject: [PATCH 030/215] Add Remove function to bypass network list --- pkg/providers/appsec/appsec_test.go | 10 ++++++ ...urce_akamai_appsec_bypass_network_lists.go | 32 ++++++++++++++++++- ...akamai_appsec_bypass_network_lists_test.go | 9 ++++++ 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/appsec_test.go b/pkg/providers/appsec/appsec_test.go index 8b84e291e..092e9bbe9 100644 --- a/pkg/providers/appsec/appsec_test.go +++ b/pkg/providers/appsec/appsec_test.go @@ -251,6 +251,16 @@ func (p *mockappsec) UpdateBypassNetworkLists(ctx context.Context, params appsec return args.Get(0).(*appsec.UpdateBypassNetworkListsResponse), args.Error(1) } +func (p *mockappsec) RemoveBypassNetworkLists(ctx context.Context, params appsec.RemoveBypassNetworkListsRequest) (*appsec.RemoveBypassNetworkListsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.RemoveBypassNetworkListsResponse), args.Error(1) +} + func (p *mockappsec) GetVersionNotes(ctx context.Context, params appsec.GetVersionNotesRequest) (*appsec.GetVersionNotesResponse, error) { args := p.Called(ctx, params) diff --git a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go index 3a58254b5..e55c9f2c8 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go +++ b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go @@ -88,7 +88,37 @@ func resourceBypassNetworkListsRead(ctx context.Context, d *schema.ResourceData, func resourceBypassNetworkListsDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - return schema.NoopContext(nil, d, m) + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceBypassNetworkListsRemove") + + removeBypassNetworkLists := appsec.RemoveBypassNetworkListsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeBypassNetworkLists.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeBypassNetworkLists.Version = version + + nru := make([]string, 0, 1) + + nru = append(nru, "") + + removeBypassNetworkLists.NetworkLists = nru + + _, erru := client.RemoveBypassNetworkLists(ctx, removeBypassNetworkLists) + if erru != nil { + logger.Errorf("calling 'removeBypassNetworkLists': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceBypassNetworkListsRead(ctx, d, m) } func resourceBypassNetworkListsUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { diff --git a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go index f19c0cf0e..e2693a524 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go @@ -21,6 +21,10 @@ func TestAccAkamaiBypassNetworkLists_res_basic(t *testing.T) { expectJS := compactJSON(loadFixtureBytes("testdata/TestResBypassNetworkLists/BypassNetworkLists.json")) json.Unmarshal([]byte(expectJS), &cr) + crd := appsec.RemoveBypassNetworkListsResponse{} + expectJSD := compactJSON(loadFixtureBytes("testdata/TestResBypassNetworkLists/BypassNetworkLists.json")) + json.Unmarshal([]byte(expectJSD), &crd) + client.On("GetBypassNetworkLists", mock.Anything, // ctx is irrelevant for this test appsec.GetBypassNetworkListsRequest{ConfigID: 43253, Version: 7}, @@ -31,6 +35,11 @@ func TestAccAkamaiBypassNetworkLists_res_basic(t *testing.T) { appsec.UpdateBypassNetworkListsRequest{ConfigID: 43253, Version: 7, NetworkLists: []string{"888518_ACDDCKERS", "1304427_AAXXBBLIST"}}, ).Return(&cu, nil) + client.On("RemoveBypassNetworkLists", + mock.Anything, // ctx is irrelevant for this test + appsec.RemoveBypassNetworkListsRequest{ConfigID: 43253, Version: 7, NetworkLists: []string{""}}, + ).Return(&crd, nil) + useClient(client, func() { resource.Test(t, resource.TestCase{ IsUnitTest: true, From aaa7c3ea3719fab12ddd2941e83935c858b43276 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 14 Jan 2021 13:16:19 -0600 Subject: [PATCH 031/215] Refactor parameter name notes to version_notes --- pkg/providers/appsec/resource_akamai_appsec_version_notes.go | 4 ++-- .../appsec/testdata/TestResVersionNotes/match_by_id.tf | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_version_notes.go b/pkg/providers/appsec/resource_akamai_appsec_version_notes.go index 2a06f4412..f8fe8eda3 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_version_notes.go +++ b/pkg/providers/appsec/resource_akamai_appsec_version_notes.go @@ -33,7 +33,7 @@ func resourceVersionNotes() *schema.Resource { Type: schema.TypeInt, Required: true, }, - "notes": { + "version_notes": { Type: schema.TypeString, Required: true, }, @@ -108,7 +108,7 @@ func resourceVersionNotesUpdate(ctx context.Context, d *schema.ResourceData, m i } updateVersionNotes.Version = version - notes, err := tools.GetStringValue("notes", d) + notes, err := tools.GetStringValue("version_notes", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } diff --git a/pkg/providers/appsec/testdata/TestResVersionNotes/match_by_id.tf b/pkg/providers/appsec/testdata/TestResVersionNotes/match_by_id.tf index a38768f4f..dc7a43654 100644 --- a/pkg/providers/appsec/testdata/TestResVersionNotes/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResVersionNotes/match_by_id.tf @@ -7,7 +7,7 @@ provider "akamai" { resource "akamai_appsec_version_notes" "test" { config_id = 43253 version = 7 - notes = "Test Notes" + version_notes = "Test Notes" } From 07c6ca3664e451e846fbe4f35fa8842d959a8905 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 14 Jan 2021 14:13:15 -0600 Subject: [PATCH 032/215] Add override flag to tests for advanced settings --- ...source_akamai_appsec_advanced_settings_logging_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go index 18d1b56b9..484392b9f 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go @@ -28,15 +28,15 @@ func TestAccAkamaiAdvancedSettingsLogging_res_basic(t *testing.T) { client.On("UpdateAdvancedSettingsLogging", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "", AllowSampling: false, Cookies: struct { + appsec.UpdateAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "", Override: false, AllowSampling: true, Cookies: struct { Type string "json:\"type\"" - }{Type: ""}, CustomHeaders: struct { + }{Type: "all"}, CustomHeaders: struct { Type string "json:\"type\"" Values []string "json:\"values\"" - }{Type: "", Values: []string(nil)}, StandardHeaders: struct { + }{Type: "exclude", Values: []string{"csdasdad"}}, StandardHeaders: struct { Type string "json:\"type\"" Values []string "json:\"values\"" - }{Type: "", Values: []string(nil)}}, + }{Type: "only", Values: []string{"Accept"}}}, ).Return(&cu, nil) useClient(client, func() { From 8b01ffa9eb02f746a178d8631a29e119e10b59f3 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 14 Jan 2021 14:29:15 -0600 Subject: [PATCH 033/215] Remove Network lists --- .../data_akamai_network_network_lists.go | 78 - ...a_akamai_networklist_network_lists_test.go | 43 - .../networklists/networklist_test.go | 142 - pkg/providers/networklists/networklists.go | 9 - pkg/providers/networklists/provider.go | 139 - pkg/providers/networklists/provider_test.go | 112 - ...resource_akamai_networklist_activations.go | 184 - ...rce_akamai_networklist_activations_test.go | 61 - ...esource_akamai_networklist_network_list.go | 227 - ...ai_networklist_network_list_description.go | 109 - ...tworklist_network_list_description_test.go | 52 - ...i_networklist_network_list_subscription.go | 160 - ...worklist_network_list_subscription_test.go | 52 - ...ce_akamai_networklist_network_list_test.go | 58 - .../TestDSNetworkList/NetworkList.json | 8541 ----------------- .../testdata/TestDSNetworkList/match_by_id.tf | 10 - .../TestResActivations/Activations.json | 9 - .../TestResActivations/ActivationsDelete.json | 18 - .../TestResActivations/match_by_id.tf | 14 - .../TestResNetworkList/NetworkList.json | 8541 ----------------- .../TestResNetworkList/match_by_id.tf | 14 - .../TestResNetworkList/update_by_id.tf | 14 - .../NetworkListDescription.json | 8541 ----------------- .../match_by_id.tf | 11 - .../NetworkListSubscription.json | 8541 ----------------- .../match_by_id.tf | 10 - pkg/providers/providers.go | 2 +- 27 files changed, 1 insertion(+), 35691 deletions(-) delete mode 100644 pkg/providers/networklists/data_akamai_network_network_lists.go delete mode 100644 pkg/providers/networklists/data_akamai_networklist_network_lists_test.go delete mode 100644 pkg/providers/networklists/networklist_test.go delete mode 100644 pkg/providers/networklists/networklists.go delete mode 100644 pkg/providers/networklists/provider.go delete mode 100644 pkg/providers/networklists/provider_test.go delete mode 100644 pkg/providers/networklists/resource_akamai_networklist_activations.go delete mode 100644 pkg/providers/networklists/resource_akamai_networklist_activations_test.go delete mode 100644 pkg/providers/networklists/resource_akamai_networklist_network_list.go delete mode 100644 pkg/providers/networklists/resource_akamai_networklist_network_list_description.go delete mode 100644 pkg/providers/networklists/resource_akamai_networklist_network_list_description_test.go delete mode 100644 pkg/providers/networklists/resource_akamai_networklist_network_list_subscription.go delete mode 100644 pkg/providers/networklists/resource_akamai_networklist_network_list_subscription_test.go delete mode 100644 pkg/providers/networklists/resource_akamai_networklist_network_list_test.go delete mode 100644 pkg/providers/networklists/testdata/TestDSNetworkList/NetworkList.json delete mode 100644 pkg/providers/networklists/testdata/TestDSNetworkList/match_by_id.tf delete mode 100644 pkg/providers/networklists/testdata/TestResActivations/Activations.json delete mode 100644 pkg/providers/networklists/testdata/TestResActivations/ActivationsDelete.json delete mode 100644 pkg/providers/networklists/testdata/TestResActivations/match_by_id.tf delete mode 100644 pkg/providers/networklists/testdata/TestResNetworkList/NetworkList.json delete mode 100644 pkg/providers/networklists/testdata/TestResNetworkList/match_by_id.tf delete mode 100644 pkg/providers/networklists/testdata/TestResNetworkList/update_by_id.tf delete mode 100644 pkg/providers/networklists/testdata/TestResNetworkListDescription/NetworkListDescription.json delete mode 100644 pkg/providers/networklists/testdata/TestResNetworkListDescription/match_by_id.tf delete mode 100644 pkg/providers/networklists/testdata/TestResNetworkListSubscription/NetworkListSubscription.json delete mode 100644 pkg/providers/networklists/testdata/TestResNetworkListSubscription/match_by_id.tf diff --git a/pkg/providers/networklists/data_akamai_network_network_lists.go b/pkg/providers/networklists/data_akamai_network_network_lists.go deleted file mode 100644 index 045b56217..000000000 --- a/pkg/providers/networklists/data_akamai_network_network_lists.go +++ /dev/null @@ -1,78 +0,0 @@ -package networklists - -import ( - "context" - "encoding/json" - "errors" - "fmt" - - network "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" - "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" -) - -func dataSourceNetworkList() *schema.Resource { - return &schema.Resource{ - ReadContext: dataSourceNetworkListRead, - Schema: map[string]*schema.Schema{ - "name": { - Type: schema.TypeString, - Optional: true, - }, - "uniqueid": { - Type: schema.TypeString, - Computed: true, - Description: "uniqueId", - }, - "json": { - Type: schema.TypeString, - Computed: true, - }, - "output_text": { - Type: schema.TypeString, - Computed: true, - Description: "Text Export representation", - }, - }, - } -} - -func dataSourceNetworkListRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("NETWORKLIST", "resourceNetworkListRead") - - getNetworkList := network.GetNetworkListsRequest{} - - name, err := tools.GetStringValue("name", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getNetworkList.Name = name - - networklist, err := client.GetNetworkLists(ctx, getNetworkList) - if err != nil { - logger.Errorf("calling 'getNetworkLists': %s", err.Error()) - return diag.FromErr(err) - } - - if len(networklist.NetworkLists) > 0 { - d.SetId(networklist.NetworkLists[0].UniqueID) - if err := d.Set("uniqueid", networklist.NetworkLists[0].UniqueID); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } - } - - jsonBody, err := json.Marshal(networklist) - if err != nil { - return diag.FromErr(err) - } - - if err := d.Set("json", string(jsonBody)); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } - - return nil -} diff --git a/pkg/providers/networklists/data_akamai_networklist_network_lists_test.go b/pkg/providers/networklists/data_akamai_networklist_network_lists_test.go deleted file mode 100644 index afe9b2b40..000000000 --- a/pkg/providers/networklists/data_akamai_networklist_network_lists_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package networklists - -import ( - "encoding/json" - "testing" - - network "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiNetworkList_data_basic(t *testing.T) { - t.Run("match by NetworkList ID", func(t *testing.T) { - client := &mocknetworklists{} - - cv := network.GetNetworkListsResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestDSNetworkList/NetworkList.json")) - json.Unmarshal([]byte(expectJS), &cv) - - client.On("GetNetworkList", - mock.Anything, // ctx is irrelevant for this test - network.GetNetworkListsRequest{Name: "40996_ARTYLABWHITELIST"}, - ).Return(&cv, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestDSNetworkList/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_networklist_network_lists.test", "uniqueid", "40996_ARTYLABWHITELIST"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/networklists/networklist_test.go b/pkg/providers/networklists/networklist_test.go deleted file mode 100644 index 742997851..000000000 --- a/pkg/providers/networklists/networklist_test.go +++ /dev/null @@ -1,142 +0,0 @@ -package networklists - -import ( - "context" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - "github.com/stretchr/testify/mock" -) - -type mocknetworklists struct { - mock.Mock -} - -func (p *mocknetworklists) CreateActivations(ctx context.Context, params networklists.CreateActivationsRequest, acknowledgeWarnings bool) (*networklists.CreateActivationsResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*networklists.CreateActivationsResponse), args.Error(1) -} - -func (p *mocknetworklists) GetActivations(ctx context.Context, params networklists.GetActivationsRequest) (*networklists.GetActivationsResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*networklists.GetActivationsResponse), args.Error(1) -} - -func (p *mocknetworklists) RemoveActivations(ctx context.Context, params networklists.RemoveActivationsRequest) (*networklists.RemoveActivationsResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*networklists.RemoveActivationsResponse), args.Error(1) -} - -func (p *mocknetworklists) CreateNetworkList(ctx context.Context, params networklists.CreateNetworkListRequest) (*networklists.CreateNetworkListResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*networklists.CreateNetworkListResponse), args.Error(1) -} - -func (p *mocknetworklists) RemoveNetworkList(ctx context.Context, params networklists.RemoveNetworkListRequest) (*networklists.RemoveNetworkListResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*networklists.RemoveNetworkListResponse), args.Error(1) -} - -func (p *mocknetworklists) UpdateNetworkList(ctx context.Context, params networklists.UpdateNetworkListRequest) (*networklists.UpdateNetworkListResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*networklists.UpdateNetworkListResponse), args.Error(1) -} - -func (p *mocknetworklists) GetNetworkList(ctx context.Context, params networklists.GetNetworkListRequest) (*networklists.GetNetworkListResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*networklists.GetNetworkListResponse), args.Error(1) -} - -func (p *mocknetworklists) GetNetworkLists(ctx context.Context, params networklists.GetNetworkListsRequest) (*networklists.GetNetworkListsResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*networklists.GetNetworkListsResponse), args.Error(1) -} - -func (p *mocknetworklists) GetNetworkListDescription(ctx context.Context, params networklists.GetNetworkListDescriptionRequest) (*networklists.GetNetworkListDescriptionResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*networklists.GetNetworkListDescriptionResponse), args.Error(1) -} - -func (p *mocknetworklists) UpdateNetworkListDescription(ctx context.Context, params networklists.UpdateNetworkListDescriptionRequest) (*networklists.UpdateNetworkListDescriptionResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*networklists.UpdateNetworkListDescriptionResponse), args.Error(1) -} - -func (p *mocknetworklists) GetNetworkListSubscription(ctx context.Context, params networklists.GetNetworkListSubscriptionRequest) (*networklists.GetNetworkListSubscriptionResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*networklists.GetNetworkListSubscriptionResponse), args.Error(1) -} - -func (p *mocknetworklists) RemoveNetworkListSubscription(ctx context.Context, params networklists.RemoveNetworkListSubscriptionRequest) (*networklists.RemoveNetworkListSubscriptionResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*networklists.RemoveNetworkListSubscriptionResponse), args.Error(1) -} - -func (p *mocknetworklists) UpdateNetworkListSubscription(ctx context.Context, params networklists.UpdateNetworkListSubscriptionRequest) (*networklists.UpdateNetworkListSubscriptionResponse, error) { - args := p.Called(ctx, params) - - if args.Get(0) == nil { - return nil, args.Error(1) - } - - return args.Get(0).(*networklists.UpdateNetworkListSubscriptionResponse), args.Error(1) -} diff --git a/pkg/providers/networklists/networklists.go b/pkg/providers/networklists/networklists.go deleted file mode 100644 index c8cfb44d2..000000000 --- a/pkg/providers/networklists/networklists.go +++ /dev/null @@ -1,9 +0,0 @@ -// +build all networklists - -package networklists - -import "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/registry" - -func init() { - registry.RegisterProvider(Subprovider()) -} diff --git a/pkg/providers/networklists/provider.go b/pkg/providers/networklists/provider.go deleted file mode 100644 index a5ebadd3b..000000000 --- a/pkg/providers/networklists/provider.go +++ /dev/null @@ -1,139 +0,0 @@ -package networklists - -import ( - "sync" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - network "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" - "github.com/akamai/terraform-provider-akamai/v2/pkg/config" - "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" - "github.com/apex/log" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" -) - -type ( - provider struct { - *schema.Provider - - client networklists.NETWORKLISTS - } - // Option is a networklist provider option - Option func(p *provider) -) - -var ( - once sync.Once - - inst *provider -) - -// Subprovider returns a core sub provider -func Subprovider(opts ...Option) akamai.Subprovider { - once.Do(func() { - inst = &provider{Provider: Provider()} - - for _, opt := range opts { - opt(inst) - } - }) - - return inst -} - -// Provider returns the Akamai terraform.Resource provider. -func Provider() *schema.Provider { - provider := &schema.Provider{ - Schema: map[string]*schema.Schema{ - "networklist_section": { - Optional: true, - Type: schema.TypeString, - Default: "default", - Deprecated: akamai.NoticeDeprecatedUseAlias("networklist_section"), - }, - "network": { - Optional: true, - Type: schema.TypeSet, - Elem: config.Options("network"), - }, - }, - DataSourcesMap: map[string]*schema.Resource{ - "akamai_networklist_network_lists": dataSourceNetworkList(), - }, - ResourcesMap: map[string]*schema.Resource{ - "akamai_networklist_activations": resourceActivations(), - "akamai_networklist_network_list_description": resourceNetworkListDescription(), - "akamai_networklist_network_list_subscription": resourceNetworkListSubscription(), - "akamai_networklist_network_list": resourceNetworkList(), - }, - } - return provider -} - -// WithClient sets the client interface function, used for mocking and testing -func WithClient(c networklists.NETWORKLISTS) Option { - return func(p *provider) { - p.client = c - } -} - -// Client returns the PAPI interface -func (p *provider) Client(meta akamai.OperationMeta) network.NETWORKLISTS { - if p.client != nil { - return p.client - } - return networklists.Client(meta.Session()) -} - -func getNETWORKLISTV1Service(d *schema.ResourceData) (interface{}, error) { - var section string - - for _, s := range tools.FindStringValues(d, "networklist_section", "config_section") { - if s != "default" { - section = s - break - } - } - - if section != "" { - d.Set("config_section", section) - } - - return nil, nil -} - -func (p *provider) Name() string { - return "networklists" -} - -// NetworkProviderVersion update version string anytime provider adds new features -const NetworkProviderVersion string = "v1.0.0" - -func (p *provider) Version() string { - return NetworkProviderVersion -} - -func (p *provider) Schema() map[string]*schema.Schema { - return p.Provider.Schema -} - -func (p *provider) Resources() map[string]*schema.Resource { - return p.Provider.ResourcesMap -} - -func (p *provider) DataSources() map[string]*schema.Resource { - return p.Provider.DataSourcesMap -} - -func (p *provider) Configure(log log.Interface, d *schema.ResourceData) diag.Diagnostics { - log.Debug("START Configure") - - _, err := getNETWORKLISTV1Service(d) - if err != nil { - return nil - } - - return nil -} diff --git a/pkg/providers/networklists/provider_test.go b/pkg/providers/networklists/provider_test.go deleted file mode 100644 index c4d091a7c..000000000 --- a/pkg/providers/networklists/provider_test.go +++ /dev/null @@ -1,112 +0,0 @@ -package networklists - -import ( - "bytes" - "encoding/json" - "fmt" - "io/ioutil" - "os" - "strings" - "sync" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" -) - -var testAccProviders map[string]*schema.Provider -var testProvider *schema.Provider - -func init() { - testProvider = akamai.Provider(Subprovider())() - testAccProviders = map[string]*schema.Provider{ - "akamai": testProvider, - } -} - -func TestProvider(t *testing.T) { - if err := Provider().InternalValidate(); err != nil { - t.Fatalf("err: %s", err) - } -} - -func testAccPreCheck(t *testing.T) { - -} - -func getTestProvider() *schema.Provider { - return testProvider -} - -// Only allow one test at a time to patch the client via useClient() -var clientLock sync.Mutex - -// useClient swaps out the client on the global instance for the duration of the given func -func useClient(client networklists.NETWORKLISTS, f func()) { - clientLock.Lock() - orig := inst.client - inst.client = client - - defer func() { - inst.client = orig - clientLock.Unlock() - }() - - f() -} - -// TODO marks a test as being in a "pending" state and logs a message telling the user why. Such tests are expected to -// fail for the time being and may exist for the sake of unfinished/future features or to document known buggy cases -// that won't be fixed right away. The failure of a pending test is not considered an error and the test will therefore -// be skipped unless the TEST_TODO environment variable is set to a non-empty value. -func TODO(t *testing.T, message string) { - t.Helper() - t.Log(fmt.Sprintf("TODO: %s", message)) - - if os.Getenv("TEST_TODO") == "" { - t.Skip("TODO: Set TEST_TODO=1 in env to run this test") - } -} - -func setEnv(home string, env map[string]string) { - os.Clearenv() - os.Setenv("HOME", home) - if len(env) > 0 { - for key, val := range env { - os.Setenv(key, val) - } - } -} - -func restoreEnv(env []string) { - os.Clearenv() - for _, value := range env { - envVar := strings.Split(value, "=") - os.Setenv(envVar[0], envVar[1]) - } -} - -// loadFixtureBytes returns the entire contents of the given file as a byte slice -func loadFixtureBytes(path string) []byte { - contents, err := ioutil.ReadFile(path) - if err != nil { - panic(err) - } - return contents -} - -// loadFixtureString returns the entire contents of the given file as a string -func loadFixtureString(path string) string { - return string(loadFixtureBytes(path)) -} - -// compactJSON converts a JSON-encoded byte slice to a compact form (so our JSON fixtures can be readable) -func compactJSON(encoded []byte) string { - buf := bytes.Buffer{} - if err := json.Compact(&buf, encoded); err != nil { - panic(fmt.Sprintf("%s: %s", err, string(encoded))) - } - - return buf.String() -} diff --git a/pkg/providers/networklists/resource_akamai_networklist_activations.go b/pkg/providers/networklists/resource_akamai_networklist_activations.go deleted file mode 100644 index 39815c341..000000000 --- a/pkg/providers/networklists/resource_akamai_networklist_activations.go +++ /dev/null @@ -1,184 +0,0 @@ -package networklists - -import ( - "context" - "errors" - "fmt" - "strconv" - "time" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" - "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" -) - -// network_lists v2 -// -// https://developer.akamai.com/api/cloud_security/network_lists/v2.html -func resourceActivations() *schema.Resource { - return &schema.Resource{ - CreateContext: resourceActivationsCreate, - ReadContext: resourceActivationsRead, - DeleteContext: resourceActivationsDelete, - Schema: map[string]*schema.Schema{ - "uniqueid": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - }, - "network": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - Default: "STAGING", - }, - "comments": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - Default: "Activation Comments", - }, - "activate": { - Type: schema.TypeBool, - Optional: true, - ForceNew: true, - Default: true, - }, - "notification_recipients": { - Type: schema.TypeSet, - Required: true, - ForceNew: true, - Elem: &schema.Schema{Type: schema.TypeString}, - }, - "status": { - Type: schema.TypeString, - Computed: true, - }, - }, - } -} - -const ( - // ActivationPollMinimum is the minumum polling interval for activation creation - ActivationPollMinimum = time.Minute -) - -var ( - // ActivationPollInterval is the interval for polling an activation status on creation - ActivationPollInterval = ActivationPollMinimum -) - -func resourceActivationsCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("NETWORKLIST", "resourceActivationsCreate") - - createActivations := networklists.CreateActivationsRequest{} - - activate, err := tools.GetBoolValue("activate", d) - if err != nil { - return diag.FromErr(err) - } - if !activate { - d.SetId("none") - logger.Debugf("Done") - return nil - } - - //createActivations := networklist.CreateActivationsRequest{} - - createActivationsreq := networklists.GetActivationsRequest{} - - //ap := networklists.ActivationConfigs{} - - uniqueid, err := tools.GetStringValue("uniqueid", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - createActivations.UniqueID = uniqueid - - network, err := tools.GetStringValue("network", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - createActivations.Network = network - - createActivations.Action = "ACTIVATE" - //createActivations.ActivationConfigs = append(createActivations.ActivationConfigs, ap) - createActivations.NotificationRecipients = tools.SetToStringSlice(d.Get("notification_recipients").(*schema.Set)) - - postresp, err := client.CreateActivations(ctx, createActivations, true) - if err != nil { - logger.Warnf("calling 'createActivations': %s", err.Error()) - } - - d.SetId(strconv.Itoa(postresp.ActivationID)) - d.Set("status", string(postresp.ActivationStatus)) - - createActivationsreq.ActivationID = postresp.ActivationID - activation, err := lookupActivation(ctx, client, createActivationsreq) - for activation.ActivationStatus != "ACTIVATED" { //!= networklists.StatusActive { - select { - case <-time.After(tools.MaxDuration(ActivationPollInterval, ActivationPollMinimum)): - act, err := client.GetActivations(ctx, createActivationsreq) - - if err != nil { - return diag.FromErr(err) - } - activation = act - - case <-ctx.Done(): - return diag.FromErr(fmt.Errorf("activation context terminated: %w", ctx.Err())) - } - } - - return resourceActivationsRead(ctx, d, m) -} - -func resourceActivationsDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - logger := meta.Log("NETWORKLIST", "resourceActivationsRemove") - logger.Warnf("calling 'Remove Activations' NOOP ") - d.SetId("") - - return nil -} - -func resourceActivationsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceActivationsRead") - - getActivations := networklists.GetActivationsRequest{} - - activationID, errconv := strconv.Atoi(d.Id()) - - if errconv != nil { - return diag.FromErr(errconv) - } - getActivations.ActivationID = activationID - - activations, err := client.GetActivations(ctx, getActivations) - if err != nil { - logger.Warnf("calling 'getActivations': %s", err.Error()) - } - - d.Set("status", activations.ActivationStatus) - d.SetId(strconv.Itoa(activations.ActivationID)) - - return nil -} - -func lookupActivation(ctx context.Context, client networklists.NETWORKLISTS, query networklists.GetActivationsRequest) (*networklists.GetActivationsResponse, error) { - activations, err := client.GetActivations(ctx, query) - if err != nil { - return nil, err - } - - return activations, nil - - return nil, nil -} diff --git a/pkg/providers/networklists/resource_akamai_networklist_activations_test.go b/pkg/providers/networklists/resource_akamai_networklist_activations_test.go deleted file mode 100644 index f02f800c3..000000000 --- a/pkg/providers/networklists/resource_akamai_networklist_activations_test.go +++ /dev/null @@ -1,61 +0,0 @@ -package networklists - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiActivations_res_basic(t *testing.T) { - t.Run("match by Activations ID", func(t *testing.T) { - client := &mocknetworklists{} - - cu := networklists.RemoveActivationsResponse{} - expectJSU := compactJSON(loadFixtureBytes("testdata/TestResActivations/ActivationsDelete.json")) - json.Unmarshal([]byte(expectJSU), &cu) - - ga := networklists.GetActivationsResponse{} - expectJSR := compactJSON(loadFixtureBytes("testdata/TestResActivations/Activations.json")) - json.Unmarshal([]byte(expectJSR), &ga) - - cr := networklists.CreateActivationsResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestResActivations/Activations.json")) - json.Unmarshal([]byte(expectJS), &cr) - - client.On("GetActivations", - mock.Anything, // ctx is irrelevant for this test - networklists.GetActivationsRequest{ActivationID: 547694}, - ).Return(&ga, nil) - - client.On("CreateActivations", - mock.Anything, // ctx is irrelevant for this test - networklists.CreateActivationsRequest{Action: "ACTIVATE", Network: "STAGING", Comments: "", NotificationRecipients: []string{"martin@email.io"}}, - ).Return(&cr, nil) - - client.On("RemoveActivations", - mock.Anything, // ctx is irrelevant for this test - networklists.RemoveActivationsRequest{ActivationID: 547694, Action: "DEACTIVATE", Network: "STAGING", Comments: "", NotificationRecipients: []string{"martin@email.io"}}, - ).Return(&cu, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: false, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestResActivations/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_networklist_activations.test", "id", "547694"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list.go b/pkg/providers/networklists/resource_akamai_networklist_network_list.go deleted file mode 100644 index 0b955edec..000000000 --- a/pkg/providers/networklists/resource_akamai_networklist_network_list.go +++ /dev/null @@ -1,227 +0,0 @@ -package networklists - -import ( - "context" - "errors" - "fmt" - "strconv" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" - "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" -) - -// network_lists v2 -// -// https://developer.akamai.com/api/cloud_security/network_lists/v2.html -func resourceNetworkList() *schema.Resource { - return &schema.Resource{ - CreateContext: resourceNetworkListCreate, - ReadContext: resourceNetworkListRead, - UpdateContext: resourceNetworkListUpdate, - DeleteContext: resourceNetworkListDelete, - Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, - }, - Schema: map[string]*schema.Schema{ - - "name": { - Type: schema.TypeString, - Required: true, - }, - "type": { - Type: schema.TypeString, - Required: true, - }, - "description": { - Type: schema.TypeString, - Required: true, - }, - "list": { - Type: schema.TypeList, - Elem: &schema.Schema{Type: schema.TypeString}, - Optional: true, - }, - "mode": { - Type: schema.TypeString, - Required: true, - ValidateFunc: validation.StringInSlice([]string{ - Append, - Replace, - Remove, - }, false), - }, - "uniqueid": { - Type: schema.TypeString, - Computed: true, - Description: "uniqueId", - }, - "sync_point": { - Type: schema.TypeInt, - Computed: true, - Description: "sync point", - }, - }, - } -} - -func resourceNetworkListCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("NETWORKLIST", "resourceNetworkListCreate") - - createNetworkList := networklists.CreateNetworkListRequest{} - - name, err := tools.GetStringValue("name", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - createNetworkList.Name = name - - listType, err := tools.GetStringValue("type", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - createNetworkList.Type = listType - - description, err := tools.GetStringValue("description", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - createNetworkList.Description = description - - //createNetworkList.List = tools.SetToStringSlice(d.Get("list").(*schema.Set)) - - netlist := d.Get("list").([]interface{}) - nru := make([]string, 0, len(netlist)) - - for _, h := range netlist { - nru = append(nru, h.(string)) - - } - createNetworkList.List = nru - - spcr, errc := client.CreateNetworkList(ctx, createNetworkList) - if errc != nil { - logger.Errorf("calling 'createNetworkList': %s", errc.Error()) - return diag.FromErr(errc) - } - - d.Set("name", spcr.Name) - - d.Set("sync_point", strconv.Itoa(spcr.SyncPoint)) - - if err := d.Set("uniqueid", spcr.UniqueID); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } - - d.SetId(spcr.UniqueID) - - return resourceNetworkListRead(ctx, d, m) -} - -func resourceNetworkListUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("NETWORKLIST", "resourceNetworkListUpdate") - - updateNetworkList := networklists.UpdateNetworkListRequest{} - updateNetworkList.Name = d.Id() - - listType, err := tools.GetStringValue("type", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateNetworkList.Type = listType - - description, err := tools.GetStringValue("description", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateNetworkList.Description = description - - // updateNetworkList.List = tools.SetToStringSlice(d.Get("list").(*schema.Set)) - netlist := d.Get("list").([]interface{}) - nru := make([]string, 0, len(netlist)) - - for _, h := range netlist { - nru = append(nru, h.(string)) - - } - updateNetworkList.List = nru - - syncPoint, err := tools.GetIntValue("sync_point", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - - updateNetworkList.SyncPoint = syncPoint - - _, erru := client.UpdateNetworkList(ctx, updateNetworkList) - if erru != nil { - logger.Errorf("calling 'updateNetworkList': %s", erru.Error()) - return diag.FromErr(erru) - } - - return resourceNetworkListRead(ctx, d, m) -} - -func resourceNetworkListDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("NETWORKLIST", "resourceNetworkListRemove") - - removeNetworkList := networklists.RemoveNetworkListRequest{} - removeNetworkList.Name = d.Id() - _, errd := client.RemoveNetworkList(ctx, removeNetworkList) - if errd != nil { - logger.Errorf("calling 'removeNetworkList': %s", errd.Error()) - return diag.FromErr(errd) - } - - d.SetId("") - - return nil -} - -func resourceNetworkListRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("NETWORKLISTs", "resourceNetworkListRead") - - getNetworkList := networklists.GetNetworkListRequest{} - getNetworkList.Name = d.Id() - - networklist, err := client.GetNetworkList(ctx, getNetworkList) - if err != nil { - logger.Errorf("calling 'getNetworkList': %s", err.Error()) - return diag.FromErr(err) - } - - logger.Errorf("calling 'getNetworkList': SYNC POINT %d", networklist.SyncPoint) - /* - syncPoint, errconv := strconv.Atoi(networklist.SyncPoint) - if errconv != nil { - return diag.FromErr(errconv) - } - */ - if err := d.Set("sync_point", networklist.SyncPoint); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } - - //d.Set("sync_point", strconv.Itoa(networklist.SyncPoint)) - - d.SetId(networklist.UniqueID) - - return nil -} - -// Append Replace Remove mode flags -const ( - Append = "APPEND" - Replace = "REPLACE" - Remove = "REMOVE" -) diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list_description.go b/pkg/providers/networklists/resource_akamai_networklist_network_list_description.go deleted file mode 100644 index fee944ebb..000000000 --- a/pkg/providers/networklists/resource_akamai_networklist_network_list_description.go +++ /dev/null @@ -1,109 +0,0 @@ -package networklists - -import ( - "context" - "errors" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" - "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" -) - -// network_lists v2 -// -// https://developer.akamai.com/api/cloud_security/network_lists/v2.html -func resourceNetworkListDescription() *schema.Resource { - return &schema.Resource{ - CreateContext: resourceNetworkListDescriptionUpdate, - ReadContext: resourceNetworkListDescriptionRead, - UpdateContext: resourceNetworkListDescriptionUpdate, - DeleteContext: resourceNetworkListDescriptionDelete, - Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, - }, - Schema: map[string]*schema.Schema{ - "uniqueid": { - Type: schema.TypeString, - Required: true, - }, - "name": { - Type: schema.TypeString, - Required: true, - }, - "description": { - Type: schema.TypeString, - Required: true, - }, - }, - } -} - -func resourceNetworkListDescriptionRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("NETWORKLIST", "resourceNetworkListDescriptionRead") - - getNetworkListDescription := networklists.GetNetworkListDescriptionRequest{} - - getNetworkListDescription.Name = d.Id() - - networklistdescription, err := client.GetNetworkListDescription(ctx, getNetworkListDescription) - if err != nil { - logger.Errorf("calling 'getNetworkListDescription': %s", err.Error()) - return diag.FromErr(err) - } - - d.SetId(networklistdescription.UniqueID) - - return nil -} - -func resourceNetworkListDescriptionDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - - return schema.NoopContext(nil, d, m) -} - -func resourceNetworkListDescriptionUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("NETWORKLIST", "resourceNetworkListDescriptionUpdate") - - updateNetworkListDescription := networklists.UpdateNetworkListDescriptionRequest{} - - uniqueID, err := tools.GetStringValue("uniqueid", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateNetworkListDescription.UniqueID = uniqueID - - name, err := tools.GetStringValue("name", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateNetworkListDescription.Name = name - - description, err := tools.GetStringValue("description", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateNetworkListDescription.Description = description - - /*notificationRecipients, err := tools.GetStringValue("notification_recipients", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateNetworkListDescription.NotificationRecipients = notificationRecipients - */ - - _, erru := client.UpdateNetworkListDescription(ctx, updateNetworkListDescription) - if erru != nil { - logger.Errorf("calling 'updateNetworkListDescription': %s", erru.Error()) - return diag.FromErr(erru) - } - - d.SetId(updateNetworkListDescription.UniqueID) - - return resourceNetworkListDescriptionRead(ctx, d, m) -} diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list_description_test.go b/pkg/providers/networklists/resource_akamai_networklist_network_list_description_test.go deleted file mode 100644 index a9cefc932..000000000 --- a/pkg/providers/networklists/resource_akamai_networklist_network_list_description_test.go +++ /dev/null @@ -1,52 +0,0 @@ -package networklists - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiNetworkListDescription_res_basic(t *testing.T) { - t.Run("match by NetworkListDescription ID", func(t *testing.T) { - client := &mocknetworklists{} - - cu := networklists.UpdateNetworkListDescriptionResponse{} - expectJSU := compactJSON(loadFixtureBytes("testdata/TestResNetworkListDescription/NetworkListDescription.json")) - json.Unmarshal([]byte(expectJSU), &cu) - - cr := networklists.GetNetworkListDescriptionResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestResNetworkListDescription/NetworkListDescription.json")) - json.Unmarshal([]byte(expectJS), &cr) - - client.On("GetNetworkListDescription", - mock.Anything, // ctx is irrelevant for this test - networklists.GetNetworkListDescriptionRequest{UniqueID: "79538_MARTINNETWORKLIST", Name: "Martin Network List"}, - ).Return(&cr, nil) - - client.On("UpdateNetworkListDescription", - mock.Anything, // ctx is irrelevant for this test - networklists.UpdateNetworkListDescriptionRequest{UniqueID: "79538_MARTINNETWORKLIST", Name: "Martin Network List", Description: "Notes about this network list"}, - ).Return(&cu, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestResNetworkListDescription/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_networklist_network_list_description.test", "id", "79536_MARTINNETWORKLIST"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list_subscription.go b/pkg/providers/networklists/resource_akamai_networklist_network_list_subscription.go deleted file mode 100644 index 84d0459ad..000000000 --- a/pkg/providers/networklists/resource_akamai_networklist_network_list_subscription.go +++ /dev/null @@ -1,160 +0,0 @@ -package networklists - -import ( - "context" - "fmt" - "strings" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" - "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" -) - -// network_lists v2 -// -// https://developer.akamai.com/api/cloud_security/network_lists/v2.html -func resourceNetworkListSubscription() *schema.Resource { - return &schema.Resource{ - CreateContext: resourceNetworkListSubscriptionUpdate, - ReadContext: resourceNetworkListSubscriptionRead, - UpdateContext: resourceNetworkListSubscriptionUpdate, - DeleteContext: resourceNetworkListSubscriptionDelete, - - Schema: map[string]*schema.Schema{ - "recipients": { - Type: schema.TypeList, - Required: true, - Elem: &schema.Schema{Type: schema.TypeString}, - }, - "unique_ids": { - Type: schema.TypeList, - Required: true, - Elem: &schema.Schema{Type: schema.TypeString}, - }, - }, - } -} - -func resourceNetworkListSubscriptionRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("NETWORKLIST", "resourceNetworkListSubscriptionRead") - - getNetworkListSubscription := networklists.GetNetworkListSubscriptionRequest{} - - recipients := d.Get("recipients").([]interface{}) - nru := make([]string, 0, len(recipients)) - - for _, h := range recipients { - nru = append(nru, h.(string)) - - } - getNetworkListSubscription.Recipients = nru - - extractString := strings.Join(getNetworkListSubscription.Recipients, " ") - recSHA := tools.GetSHAString(extractString) - - uniqueids := d.Get("unique_ids").([]interface{}) - uids := make([]string, 0, len(uniqueids)) - - for _, h := range uniqueids { - uids = append(uids, h.(string)) - - } - - getNetworkListSubscription.UniqueIds = uids - - extractStringUID := strings.Join(getNetworkListSubscription.UniqueIds, " ") - recSHAUID := tools.GetSHAString(extractStringUID) - - _, err := client.GetNetworkListSubscription(ctx, getNetworkListSubscription) - if err != nil { - logger.Errorf("calling 'getNetworkListSubscription': %s", err.Error()) - //return diag.FromErr(err) - } - - d.SetId(fmt.Sprintf("%s:%s", recSHA, recSHAUID)) - - return nil -} - -func resourceNetworkListSubscriptionDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("NETWORKLIST", "resourceNetworkListSubscriptionDelete") - - removeNetworkListSubscription := networklists.RemoveNetworkListSubscriptionRequest{} - recipients := d.Get("recipients").([]interface{}) - nru := make([]string, 0, len(recipients)) - - for _, h := range recipients { - nru = append(nru, h.(string)) - - } - removeNetworkListSubscription.Recipients = nru - // removeNetworkListSubscription.Recipients = tools.SetToStringSlice(d.Get("recipients").(*schema.Set)) - // tools.SetToStringSlice(d.Get("notification_recipients").(*schema.Set)) - - uniqueids := d.Get("unique_ids").([]interface{}) - uids := make([]string, 0, len(uniqueids)) - - for _, h := range uniqueids { - uids = append(uids, h.(string)) - - } - - removeNetworkListSubscription.UniqueIds = uids - // removeNetworkListSubscription.UniqueIds = tools.SetToStringSlice(d.Get("unique_ids").(*schema.Set)) - // tools.SetToStringSlice(d.Get("notification_recipients").(*schema.Set)) - _, errd := client.RemoveNetworkListSubscription(ctx, removeNetworkListSubscription) - if errd != nil { - logger.Errorf("calling 'updateNetworkListSubscription': %s", errd.Error()) - return diag.FromErr(errd) - } - return nil -} - -func resourceNetworkListSubscriptionUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("NETWORKLIST", "resourceNetworkListSubscriptionUpdate") - - updateNetworkListSubscription := networklists.UpdateNetworkListSubscriptionRequest{} - - recipients := d.Get("recipients").([]interface{}) - nru := make([]string, 0, len(recipients)) - - for _, h := range recipients { - nru = append(nru, h.(string)) - - } - updateNetworkListSubscription.Recipients = nru - - extractString := strings.Join(updateNetworkListSubscription.Recipients, " ") - recSHA := tools.GetSHAString(extractString) - - uniqueids := d.Get("unique_ids").([]interface{}) - uids := make([]string, 0, len(uniqueids)) - - for _, h := range uniqueids { - uids = append(uids, h.(string)) - - } - - updateNetworkListSubscription.UniqueIds = uids - - extractStringUID := strings.Join(updateNetworkListSubscription.UniqueIds, " ") - recSHAUID := tools.GetSHAString(extractStringUID) - - _, erru := client.UpdateNetworkListSubscription(ctx, updateNetworkListSubscription) - if erru != nil { - logger.Errorf("calling 'updateNetworkListSubscription': %s", erru.Error()) - return diag.FromErr(erru) - } - d.SetId(fmt.Sprintf("%s:%s", recSHA, recSHAUID)) - - return resourceNetworkListSubscriptionRead(ctx, d, m) -} diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list_subscription_test.go b/pkg/providers/networklists/resource_akamai_networklist_network_list_subscription_test.go deleted file mode 100644 index 2cbf2d1f7..000000000 --- a/pkg/providers/networklists/resource_akamai_networklist_network_list_subscription_test.go +++ /dev/null @@ -1,52 +0,0 @@ -package networklists - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiNetworkListSubscription_res_basic(t *testing.T) { - t.Run("match by NetworkListSubscription ID", func(t *testing.T) { - client := &mocknetworklists{} - - cu := networklists.RemoveNetworkListSubscriptionResponse{} - expectJSU := compactJSON(loadFixtureBytes("testdata/TestResNetworkListSubscription/NetworkListSubscription.json")) - json.Unmarshal([]byte(expectJSU), &cu) - - cr := networklists.GetNetworkListSubscriptionResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestResNetworkListSubscription/NetworkListSubscription.json")) - json.Unmarshal([]byte(expectJS), &cr) - - client.On("GetNetworkListSubscription", - mock.Anything, // ctx is irrelevant for this test - networklists.GetNetworkListSubscriptionRequest{}, //Recipients: "79536_MARTINNETWORKLIST", UniqueIds: "test@email.com"}, - ).Return(&cr, nil) - - client.On("UpdateNetworkListSubscription", - mock.Anything, // ctx is irrelevant for this test - networklists.RemoveNetworkListSubscriptionRequest{}, //Recipients: , - ).Return(&cu, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestResNetworkListSubscription/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_networklist_network_list_subscription.test", "id", "f7a36129f691baa1201d963b8537eb69caa28863:dd6085a7b8c8f8efaecbd420aff85a3e865ad5ca"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list_test.go b/pkg/providers/networklists/resource_akamai_networklist_network_list_test.go deleted file mode 100644 index e1a370169..000000000 --- a/pkg/providers/networklists/resource_akamai_networklist_network_list_test.go +++ /dev/null @@ -1,58 +0,0 @@ -package networklists - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/networklists" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiNetworkList_res_basic(t *testing.T) { - t.Run("match by NetworkList ID", func(t *testing.T) { - client := &mocknetworklists{} - - cu := networklists.UpdateNetworkListResponse{} - expectJSU := compactJSON(loadFixtureBytes("testdata/TestResNetworkList/NetworkList.json")) - json.Unmarshal([]byte(expectJSU), &cu) - - cr := networklists.GetNetworkListResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestResNetworkList/NetworkList.json")) - json.Unmarshal([]byte(expectJS), &cr) - - client.On("GetNetworkList", - mock.Anything, // ctx is irrelevant for this test - networklists.GetNetworkListRequest{Name: "Test"}, - ).Return(&cr, nil) - - client.On("UpdateNetworkList", - mock.Anything, // ctx is irrelevant for this test - networklists.UpdateNetworkListRequest{Name: "Test"}, - ).Return(&cu, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestResNetworkList/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_networklist_network_list.test", "name", "Martin Network List"), - ), - }, - { - Config: loadFixtureString("testdata/TestResNetworkList/update_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_networklist_network_list.test", "name", "Martin Network List"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/networklists/testdata/TestDSNetworkList/NetworkList.json b/pkg/providers/networklists/testdata/TestDSNetworkList/NetworkList.json deleted file mode 100644 index 65de94ec1..000000000 --- a/pkg/providers/networklists/testdata/TestDSNetworkList/NetworkList.json +++ /dev/null @@ -1,8541 +0,0 @@ -[ - { - "links": { - "create": { - "href": "/network-list/v2/network-lists", - "method": "POST" - } - }, - "networkLists": [ - { - "elementCount": 1716, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES", - "method": "PUT" - } - }, - "name": "Tor Akamai Network List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 43422, - "type": "IP", - "uniqueId": "365_AKAMAITOREXITNODES" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "https://confluence.expedia.biz/display/EITCOLLAB/GitHub+EG+IP+Whitelist", - "elementCount": 915, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST", - "method": "PUT" - } - }, - "name": "Github WhiteList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 293, - "type": "IP", - "uniqueId": "41750_GITHUBWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 126, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST", - "method": "PUT" - } - }, - "name": "jenkinslab whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 21, - "type": "IP", - "uniqueId": "55687_JENKINSLABWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Lab+IP+Whitelist", - "elementCount": 701, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST", - "method": "PUT" - } - }, - "name": "artylab-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 227, - "type": "IP", - "uniqueId": "40996_ARTYLABWHITELIST" - }, - { - "accessControlGroup": "GCO - 3-TE78Q.G150073", - "description": "Voyager Training SW", - "elementCount": 526, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW", - "method": "PUT" - } - }, - "name": "Voyager Training SW", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "75597_VOYAGUERTRAININGSW" - }, - { - "elementCount": 523, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU", - "method": "PUT" - } - }, - "name": "Ec2 Akamai Network List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 223, - "type": "IP", - "uniqueId": "1024_AMAZONELASTICCOMPUTECLOU" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "new office in London Victoria for Vrbo", - "elementCount": 355, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Jira Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 123, - "type": "IP", - "uniqueId": "34612_JIRAALLOWEDIPS" - }, - { - "elementCount": 3139, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT", - "method": "PUT" - } - }, - "name": "Azure IP range cloud services", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 426, - "type": "IP", - "uniqueId": "1283_MICROSOFTWINDOWSAZUREDAT" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "Whitelisting one more Akamai IP for testing", - "elementCount": 88, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST", - "method": "PUT" - } - }, - "name": "artylab-test-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 28, - "type": "IP", - "uniqueId": "40998_ARTYLABTESTWHITELIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 24, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Egencia Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "3379_EGENCIABRANDBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Secure+IP+Whitelist", - "elementCount": 331, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST", - "method": "PUT" - } - }, - "name": "artyprod-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 129, - "type": "IP", - "uniqueId": "40997_ARTYPRODWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to allow traffic on jenkinstest.expedia.biz", - "elementCount": 30, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST", - "method": "PUT" - } - }, - "name": "JenkinsTest Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 15, - "type": "IP", - "uniqueId": "53434_JENKINSTESTWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for fisheye.expedia.biz and fisheyetest.expedia.biz", - "elementCount": 135, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST", - "method": "PUT" - } - }, - "name": "Fisheye Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 10, - "type": "IP", - "uniqueId": "68757_FISHEYEWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for sonar.expedia.biz and sonartest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/Sonar+EG+IP+Whitelist", - "elementCount": 173, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST", - "method": "PUT" - } - }, - "name": "Sonar Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 23, - "type": "IP", - "uniqueId": "68755_SONARWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for testrail.expedia.biz and testrailtest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/TestRail+EG+IP+Whitelist", - "elementCount": 133, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST", - "method": "PUT" - } - }, - "name": "Testrail Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "68758_TESTRAILWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 62, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST", - "method": "PUT" - } - }, - "name": "alm-blog-whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 15, - "type": "IP", - "uniqueId": "67898_ALMBLOGWHITELIST" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "description": "Added 187.207.181.251, unwanted IP on hoteles.volaris.com\nAdded 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24 - Erik Mattison (ERS - Sec Eng)", - "elementCount": 3969, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Hotels Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 129, - "type": "IP", - "uniqueId": "1706_HOTELSBRANDBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "description": "F-CS-4083079", - "elementCount": 44, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST", - "method": "PUT" - } - }, - "name": "Egencia Sisense Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "75756_EGENCIASISENSEWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS", - "method": "PUT" - } - }, - "name": "Egencia Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "51562_EGENCIABYPASS" - }, - { - "elementCount": 2767, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS", - "method": "PUT" - } - }, - "name": "Image Manager Servers", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 63, - "type": "IP", - "uniqueId": "14121_IMAGEMANAGERSERVERS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 20, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST", - "method": "PUT" - } - }, - "name": "artyprod-test-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 14, - "type": "IP", - "uniqueId": "40999_ARTYPRODTESTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Lydia - Removing IP 216.251.120.10", - "elementCount": 465, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO", - "method": "PUT" - } - }, - "name": "Security Bypass List - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "55214_SECURITYBYPASSLISTGCO" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "description": "ExpediaPartnerCentral IP Blacklist - Added 5 entries per SOC (Erik M, Sec Eng)", - "elementCount": 50, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST", - "method": "PUT" - } - }, - "name": "EPC Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 18, - "type": "IP", - "uniqueId": "32620_EPCBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "DO NOT USE!!! Testing list for automation - see Erik Mattison", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/74967_TESTLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/74967_TESTLIST", - "method": "PUT" - } - }, - "name": "Test-list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "74967_TESTLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "The whitelist for githubtest.expedia.biz", - "elementCount": 34, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST", - "method": "PUT" - } - }, - "name": "GitHubTest Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 17, - "type": "IP", - "uniqueId": "45358_GITHUBTESTWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 22, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB", - "method": "PUT" - } - }, - "name": "ChefLab Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 6, - "type": "IP", - "uniqueId": "68112_CHEFLAB" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 47, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS", - "method": "PUT" - } - }, - "name": "CarRentals Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 7, - "type": "IP", - "uniqueId": "46789_CARRENTALSBYPASS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to allow traffic on jenkinsdecaf.expedia.biz", - "elementCount": 25, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST", - "method": "PUT" - } - }, - "name": "JenkinsDecaf Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "53433_JENKINSDECAFWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS", - "method": "PUT" - } - }, - "name": "Expediagroup Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "53077_EXPEDIAGROUPBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Duplicating ADYEN addresses to this list", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST", - "method": "PUT" - } - }, - "name": "Rate Controls Bypass List - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52769_RATECONTROLSBYPASSLIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Adding Non Prod VPCs", - "elementCount": 74, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/48306_ODSIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/48306_ODSIPS", - "method": "PUT" - } - }, - "name": "ODS IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 14, - "type": "IP", - "uniqueId": "48306_ODSIPS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP Whitelist for chefdecaf.expedia.biz, chefautodecaf.expedia.biz, chefsupermarketdecaf.expedia.biz", - "elementCount": 20, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF", - "method": "PUT" - } - }, - "name": "Chefdecaf Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "68115_CHEFDECAF" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP Whitelist for chefcorp.expedia.biz, chefautocorp.expedia.biz, chefsupermarketcorp.expedia.biz", - "elementCount": 54, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP", - "method": "PUT" - } - }, - "name": "ChefCorp Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "68113_CHEFCORP" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS", - "method": "PUT" - } - }, - "name": "Hotwire WAF Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "68750_HOTWIREWAFBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "F-CS-3996326", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO", - "method": "PUT" - } - }, - "name": "Strict Whitelist – GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "72997_STRICTWHITELISTGCO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 9, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL", - "method": "PUT" - } - }, - "name": "vap-e2e-prod SWL", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "72924_VAPE2EPRODSWL" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "description": "new office in London Victoria for Vrbo", - "elementCount": 73, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST", - "method": "PUT" - } - }, - "name": "Lodging Internal Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 16, - "type": "IP", - "uniqueId": "45955_LODGINGINTERNALWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "External IPs allowed to access JIRA. See https://confluence.expedia.biz/display/JIRA/JIRA+IP+Whitelisting", - "elementCount": 304, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Vrbojiratest Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69322_VRBOJIRATESTALLOWEDIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 56, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST", - "method": "PUT" - } - }, - "name": "alm-blogtest-whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "67897_ALMBLOGTESTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 71, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS", - "method": "PUT" - } - }, - "name": "Expedia Group Public IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "65037_EXPEDIAGROUPPUBLICIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "List of EG owned/trusted IPs", - "elementCount": 67, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS", - "method": "PUT" - } - }, - "name": "EG Trusted IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69033_EGTRUSTEDIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "External IPs allowed to access Confluence. See https://confluence.expedia.biz/display/CON/Confluence+IP+Whitelisting", - "elementCount": 218, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Confluence Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 38, - "type": "IP", - "uniqueId": "42664_CONFLUENCEALLOWEDIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Added 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24, 103.72.8.217- Erik Mattison (ERS - Sec Eng)", - "elementCount": 24, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST", - "method": "PUT" - } - }, - "name": "Expedia Temporary Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "5703_EXPEDIATEMPORARYBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL", - "method": "PUT" - } - }, - "name": "Expedia Group Global Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "71830_EXPEDIAGROUPGLOBALBLACKL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Deny-By-IP, Apple Verification (STGR-2439), AWS Egress (PROD-5148, PROD-5319), Vitality (PROD-5818), Bangalore Office (PSUP-34217)", - "elementCount": 835, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST", - "method": "PUT" - } - }, - "name": "Staging Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 16, - "type": "IP", - "uniqueId": "64150_VITALITYIPLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS", - "method": "PUT" - } - }, - "name": "Classic vacations Black list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "17400_CLASSICVACATIONSBLACKLIS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "description": "Blocking 49.86.182.23 for scanning", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST", - "method": "PUT" - } - }, - "name": "TEMP IP Black List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "40015_TEMPIPBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI", - "method": "PUT" - } - }, - "name": "Voyager Call Center Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "2276_VOYAGERCALLCENTERBLACKLI" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST", - "method": "PUT" - } - }, - "name": "Voyager LAB Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "3402_VOYAGERLABBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 7, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST", - "method": "PUT" - } - }, - "name": "Hotwire Brand QA Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "4308_HOTWIREBRANDQABLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 7, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Venere Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "3380_VENEREBRANDBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 28, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL", - "method": "PUT" - } - }, - "name": "Voyager PROD Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "5624_VOYAGERCALLCENTERBLACKL" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 137, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Travelocity Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 19, - "type": "IP", - "uniqueId": "2643_TRAVELOCITYBRANDBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 19, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Via Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 6, - "type": "IP", - "uniqueId": "1538_VIABRANDBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 13, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST", - "method": "PUT" - } - }, - "name": "EAN IP Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "16864_EANIPBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST", - "method": "PUT" - } - }, - "name": "ECSC-Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "44828_ECSCBLACKLIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST", - "method": "PUT" - } - }, - "name": "CarRentals Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "46787_CARRENTALSBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST", - "method": "PUT" - } - }, - "name": "ADT - IP Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "49181_ADTIPBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST", - "method": "PUT" - } - }, - "name": "LegacyOrbitz BlackList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "49996_LEGACYORBITZBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO", - "method": "PUT" - } - }, - "name": "IP Blacklist - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52764_IPBLACKLISTDUO" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST", - "method": "PUT" - } - }, - "name": "API_Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52782_APIBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS", - "method": "PUT" - } - }, - "name": "Blacklist_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "53347_BLACKLISTJENKINS" - }, - { - "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST", - "method": "PUT" - } - }, - "name": "GCO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "53726_GCOBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO", - "method": "PUT" - } - }, - "name": "IP Blacklist - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "55211_IPBLACKLISTGCO" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 15625, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Expedia Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 71, - "type": "IP", - "uniqueId": "1933_EXPEDIABRANDBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "description": "Adding 64.15.129.112 as per approval from Narainder.", - "elementCount": 29, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Hotwire Brand Prod Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "1883_HOTWIREBRANDBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST", - "method": "PUT" - } - }, - "name": "EGP Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "63705_EGPBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST", - "method": "PUT" - } - }, - "name": "WorldLine Prod Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69602_WORLDLINEPRODWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "195.35.91.69195.35.90.70", - "elementCount": 8, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST", - "method": "PUT" - } - }, - "name": "WorldPay Prod Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "69603_WORLDPAYPRODWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP Whitelist for chefsecure.expedia.biz, chefautosecure.expedia.biz, chefsupermarketsecure.expedia.biz", - "elementCount": 28, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE", - "method": "PUT" - } - }, - "name": "ChefSecure Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "68114_CHEFSECURE" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 319, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE", - "method": "PUT" - } - }, - "name": "Hotels Brand Blacklist Exceptions", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "42684_HOTELSBRANDBLACKLISTEXCE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 323, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "ADT StrictWhitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "49178_ADTSTRICTWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "VPN IP to Whitelist", - "elementCount": 12, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST", - "method": "PUT" - } - }, - "name": "CarRentals Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 7, - "type": "IP", - "uniqueId": "46788_CARRENTALSWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "204.14.232.0/21", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "Placeholder", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "70704_FSPSTRICTWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "description": "204.14.232.0/21", - "elementCount": 27, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "FSP Strict Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "70705_FSPSTRICTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 27, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS", - "method": "PUT" - } - }, - "name": "SalesForce IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "70568_SALESFORCEIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "PROD-5818", - "elementCount": 49, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP", - "method": "PUT" - } - }, - "name": "Vitality-IP-List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "65875_ALLOWBYIP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Iran APT IOC IPs addition to security controls\nJira ID - ERSST-2128", - "elementCount": 17, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS", - "method": "PUT" - } - }, - "name": "Iran APT IOC IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "70327_IRANAPTIOCIPS" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "description": "Added as requested by Atit: Expedia Partner JIRA: (AK-88) Add Qualys CIDR to EAN IP Bypass List\n\nAdded Deloitte IPs as requested by Atit. AK-104\n\nAdded Rapid7 IPs per Atit. Ak-171", - "elementCount": 13, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST", - "method": "PUT" - } - }, - "name": "EAN IP Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 10, - "type": "IP", - "uniqueId": "16862_EANIPBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST", - "method": "PUT" - } - }, - "name": "Adyen Prod Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69601_ADYENPRODWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST", - "method": "PUT" - } - }, - "name": "Rate Controls Bypass List - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "55215_RATECONTROLSBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST", - "method": "PUT" - } - }, - "name": "WorldPay Test Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "68764_WORLDPAYWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST", - "method": "PUT" - } - }, - "name": "WorldLine Test Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "68765_WORLDLINEWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 10, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68762_ADYEN/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68762_ADYEN" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68762_ADYEN", - "method": "PUT" - } - }, - "name": "Adyen Test Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "68762_ADYEN" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST", - "method": "PUT" - } - }, - "name": "TEMP Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "40021_TEMPBYPASSLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS", - "method": "PUT" - } - }, - "name": "Vrbojiratest_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "69324_VRBOJIRATESTBYPASS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST", - "method": "PUT" - } - }, - "name": "Vrbojiratest_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "69323_VRBOJIRATESTRCWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 16, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS", - "method": "PUT" - } - }, - "name": "BEX Rate Control Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "55919_BEXRATECONTROLBYPASS" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "description": "HAK-86, PROD-6167", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS", - "method": "PUT" - } - }, - "name": "AWS Egress IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "68043_AWSEGRESSIPS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "List of IPs allowed to access https://cheftest.expedia.biz", - "elementCount": 13, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST", - "method": "PUT" - } - }, - "name": "ChefTest Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "68111_CHEFTEST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for jenkinssecure.expedia.biz", - "elementCount": 39, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST", - "method": "PUT" - } - }, - "name": "jenkinssecure whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "55686_JENKINSSECUREWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (CarRentals)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "46792_REPUTATIONWHITELISTCARRE" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Adding New Relic San Francisco EndPoints for Synthetics", - "elementCount": 11, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP", - "method": "PUT" - } - }, - "name": "CarRentals Rate Control Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "46791_CARRENTALSRATECONTROLBYP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "F-CS-3817120\nES_Tuning - Rate Control Recommendations\nBy Akamai", - "elementCount": 14, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST", - "method": "PUT" - } - }, - "name": "Rate Controls Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "68495_RATECONTROLSWHITELIST" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (EAN WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "68344_REPUTATIONWHITELISTEANW" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST", - "method": "PUT" - } - }, - "name": "API_BypassList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "52784_APIBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES", - "method": "PUT" - } - }, - "name": "eIT Services", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "67900_EITSERVICES" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 16, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Hotels)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 7, - "type": "IP", - "uniqueId": "9606_REPUTATIONWHITELISTHOTEL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP", - "method": "PUT" - } - }, - "name": "WAF Bypass for \"DENY-By-IP-Policy\"", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "66858_WAFBYPASSFORDENYBYIP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "PROD-5839, HAK-81\nTarget: apihotels.net", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST", - "method": "PUT" - } - }, - "name": "API Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "65265_AWSBAMBOOWHITELIST" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (eIT Extranet Services)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "65827_REPUTATIONWHITELISTEITE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 20, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST", - "method": "PUT" - } - }, - "name": "ADT - WAF Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "49185_ADTWAFBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST", - "method": "PUT" - } - }, - "name": "Geo - Network List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "65654_GEONETWORKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION", - "method": "PUT" - } - }, - "name": "IP Block List Exception", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "65653_IPBLOCKLISTEXCEPTION" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST", - "method": "PUT" - } - }, - "name": "Amex Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "65651_AMEXWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Adding EG DAST IPs", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST", - "method": "PUT" - } - }, - "name": "CarRentals Partner Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "53725_PARTNERWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Hotwire WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "9833_REPUTATIONWHITELISTHOTWI" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS", - "method": "PUT" - } - }, - "name": "ECSC-Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "44829_ECSCBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", - "elementCount": 213, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS", - "method": "PUT" - } - }, - "name": "CPI Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "49617_CPIALLOWEDIPS" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 29, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS", - "method": "PUT" - } - }, - "name": "Customer Client IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 10, - "type": "IP", - "uniqueId": "48307_CUSTOMERCLIENTIPS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 9, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL", - "method": "PUT" - } - }, - "name": "Egencia StrictWL", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "53659_EGENCIASTRICTWL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", - "elementCount": 213, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Confluence Okta Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "50276_CONFLUENCEOKTAALLOWEDIPS" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 58, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "App Strict Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "44833_APPSTRICTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 37, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST", - "method": "PUT" - } - }, - "name": "Corporate HQ Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "26371_CORPORATEHQWHITELIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 342, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST", - "method": "PUT" - } - }, - "name": "Voyager LAB Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 12, - "type": "IP", - "uniqueId": "3324_VOYAGERLABWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "List of allowed IPs for ALM GitHub Enterprise", - "elementCount": 18, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST", - "method": "PUT" - } - }, - "name": "bogus-github-whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "40196_GITHUBWHITELIST" - }, - { - "description": "The Akamai Portal Test Center is a tool that you can use to test configuration changes. To take advantage of the Test Center, you must ensure that test requests coming from the Test Center are not blocked, by whitelisting this list in your WAF policies.", - "elementCount": 12, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA", - "method": "PUT" - } - }, - "name": "Akamai Test Center (ATC) Agents", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 2, - "type": "IP", - "uniqueId": "46506_AKAMAIPORTALTESTCENTERA" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 227, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL", - "method": "PUT" - } - }, - "name": "Akamai Firewall", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "1327_AKAMAIFIREWALL" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Enterprise Solutions)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63829_REPUTATIONWHITELISTENTER" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (EGP)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63708_REPUTATIONWHITELISTEGP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST", - "method": "PUT" - } - }, - "name": "EGP Geolist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "63707_EGPGEOLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST", - "method": "PUT" - } - }, - "name": "EGP Bypasslist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63706_EGPBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST", - "method": "PUT" - } - }, - "name": "EGP Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63704_EGPWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Allow Traffic from One UI Tool", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST", - "method": "PUT" - } - }, - "name": "API_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52781_APIWHITELIST" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 75, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS", - "method": "PUT" - } - }, - "name": "Hotels Brand WAF Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "42686_HOTELSBRANDWAFBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - Offices", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "50637_WAFBYPASSWHITELISTOFFI" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 68, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS", - "method": "PUT" - } - }, - "name": "ECSC-RC Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "44830_ECSCRCBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 30, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP", - "method": "PUT" - } - }, - "name": "WAF Security File- Rate Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "62642_WAFSECURITYFILERATEBYP" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 9, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR", - "method": "PUT" - } - }, - "name": "WAF bypass IP list - Hotwire QA", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "886_WAFBYPASSIPLISTHOTWIR" - }, - { - "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", - "elementCount": 10, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR", - "method": "PUT" - } - }, - "name": "Hotels Brand - Whitelist from Custom Rule 621882", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "60322_HOTELSBRANDWHITELISTFR" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Testing the Network list automation using API and Flyte-Akamai chatbot, https://jira.hcom/browse/PLATFORM-461", - "elementCount": 18, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461", - "method": "PUT" - } - }, - "name": "test-PLATFORM-461", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 48, - "type": "IP", - "uniqueId": "50114_TESTPLATFORM461" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Negative match fro rate controls", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT", - "method": "PUT" - } - }, - "name": "Hotwire Rate Control Exceptions", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "50628_HOTWIRERATECONTROLEXCEPT" - }, - { - "description": "Gomez synthetic monitoring network", - "elementCount": 104, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS", - "method": "PUT" - } - }, - "name": "Gomez (Compuware) Agents", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 4, - "type": "IP", - "uniqueId": "1026_GOMEZCOMPUWAREAGENTS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (GCO)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "55664_REPUTATIONWHITELISTGCO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO", - "method": "PUT" - } - }, - "name": "Geo Blacklist - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "55213_GEOBLACKLISTGCO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC", - "method": "PUT" - } - }, - "name": "IP Blacklist Exception - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "55212_IPBLACKLISTEXCEPTIONGC" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Added 203.37.166.130, new origin IP for .com.au", - "elementCount": 250, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - Hopscotch", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 38, - "type": "IP", - "uniqueId": "6487_WAFBYPASSWHITELISTHOPS" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Added 72.246.0.10 & 72.246.0.22 as requested by Jim George.", - "elementCount": 143, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE", - "method": "PUT" - } - }, - "name": "Akamai Cracker 2 and Cracker 3 IPs for testing purposes", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "48308_AKAMAICRACKER2ANDCRACKE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING", - "method": "PUT" - } - }, - "name": "Akamai_Internal_Testing", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "54056_AKAMAIINTERNALTESTING" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Jenkins)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53355_REPUTATIONWHITELISTJENKI" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to bypass rate controls on Jenkins config, jenkins policy", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ", - "method": "PUT" - } - }, - "name": "Rate Control Bypass List _Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53351_RATECONTROLBYPASSLISTJ" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "Exclusion from blacklist", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS", - "method": "PUT" - } - }, - "name": "Whitelist_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53349_WHITELISTJENKINS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS", - "method": "PUT" - } - }, - "name": "GEO Blacklist_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "53348_GEOBLACKLISTJENKINS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to bypass WAF on Jenkins Policy, Jenkins config", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS", - "method": "PUT" - } - }, - "name": "WAF Bypass List_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53345_WAFBYPASSLISTJENKINS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (ERS)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53080_REPUTATIONWHITELISTERS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB", - "method": "PUT" - } - }, - "name": "Expediagroup Rate Control Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53079_EXPEDIAGROUPRATECONTROLB" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST", - "method": "PUT" - } - }, - "name": "Expediagroup GEO list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "53076_EXPEDIAGROUPGEOLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST", - "method": "PUT" - } - }, - "name": "Expediagroup White list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53075_EXPEDIAGROUPWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST", - "method": "PUT" - } - }, - "name": "Expediagroup Black list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53074_EXPEDIAGROUPBLACKLIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK", - "method": "PUT" - } - }, - "name": "API_GEOBlock", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "52783_APIGEOBLOCK" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Duo)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "52771_REPUTATIONWHITELISTDUO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO", - "method": "PUT" - } - }, - "name": "Security Bypass List - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "52768_SECURITYBYPASSLISTDUO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO", - "method": "PUT" - } - }, - "name": "Geo Blacklist - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "52767_GEOBLACKLISTDUO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU", - "method": "PUT" - } - }, - "name": "IP Blacklist Exception - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "52766_IPBLACKLISTEXCEPTIONDU" - }, - { - "elementCount": 468, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS", - "method": "PUT" - } - }, - "name": "A2 Servers", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 15, - "type": "IP", - "uniqueId": "16656_CPISERVERS" - }, - { - "elementCount": 349, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS", - "method": "PUT" - } - }, - "name": "FEO Servers", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 12, - "type": "IP", - "uniqueId": "7054_FEOSERVERS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK", - "method": "PUT" - } - }, - "name": "Egencia GEO Block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "51561_EGENCIAGEOBLOCK" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - Other", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50640_WAFBYPASSWHITELISTOTHE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - AWS NATs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50638_WAFBYPASSWHITELISTAWS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - CallCenter", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50636_WAFBYPASSWHITELISTCALL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - partner", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50635_WAFBYPASSWHITELISTPART" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "splitting up the hopscotch list for easier management", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - DC", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50634_WAFBYPASSWHITELISTDC" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 10, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST", - "method": "PUT" - } - }, - "name": "hoteis.com GEO list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "GEO", - "uniqueId": "50337_HOTEISCOMGEOLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS", - "method": "PUT" - } - }, - "name": "Confluence Okta_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50278_CONFLUENCEOKTARCWHITELIS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS", - "method": "PUT" - } - }, - "name": "Confluence Okta_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50277_CONFLUENCEOKTABYPASS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST", - "method": "PUT" - } - }, - "name": "LegacyOrbitz GEO BlackList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "49997_LEGACYORBITZBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST", - "method": "PUT" - } - }, - "name": "LegacyOrbitz Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49995_LEGACYORBITZWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST", - "method": "PUT" - } - }, - "name": "CPI_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49620_CPIRCWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS", - "method": "PUT" - } - }, - "name": "CPI_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49618_CPIBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS", - "method": "PUT" - } - }, - "name": "ADT - Rate Controls Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49186_ADTRATECONTROLSBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "ADT - Geo Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "49182_ADTGEOBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED", - "method": "PUT" - } - }, - "name": "Hotels Brand GEO List (Used by Custom Bots)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "GEO", - "uniqueId": "47882_HOTELSBRANDGEOLISTUSED" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS", - "method": "PUT" - } - }, - "name": "legacyOrbitz_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "47546_LEGACYORBITZBYPASS" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST", - "method": "PUT" - } - }, - "name": "Digital Ocean Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "47517_DIGITALOCEANWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK", - "method": "PUT" - } - }, - "name": "CarRentals Geo Block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "46790_CARRENTALSGEOBLOCK" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "EPC GEO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "45956_EPCGEOBLACKLIST" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS", - "method": "PUT" - } - }, - "name": "EPC Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "45954_EPCBYPASS" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "EPC GEO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "45953_EPCGEOBLACKLIST" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST", - "method": "PUT" - } - }, - "name": "EPC Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "45952_EPCWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (ECSC)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "44832_REPUTATIONWHITELISTECSC" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "ECSC-GEO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "44831_ECSCGEOBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST", - "method": "PUT" - } - }, - "name": "ECSC-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "44827_ECSCWHITELIST" - }, - { - "accessControlGroup": "Classic Vacations - 3-TE78Q.G83605", - "description": "Classic Vacations Whitelist for", - "elementCount": 17, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST", - "method": "PUT" - } - }, - "name": "Classic Vacations Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 6, - "type": "IP", - "uniqueId": "31075_CLASSICVACATIONSWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST", - "method": "PUT" - } - }, - "name": "Egencia Brand Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "43172_EGENCIABRANDWHITELIST" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS", - "method": "PUT" - } - }, - "name": "Hotels Brand Rate Controls Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "42688_HOTELSBRANDRATECONTROLS" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "Hotels Brand Geo Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "42687_HOTELSBRANDGEOBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS", - "method": "PUT" - } - }, - "name": "Confluence_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "42666_CONFLUENCEBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST", - "method": "PUT" - } - }, - "name": "Confluence_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "42665_CONFLUENCERCWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP", - "method": "PUT" - } - }, - "name": "BM rollout-IP", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "40730_BMROLLOUTIP" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO", - "method": "PUT" - } - }, - "name": "BM rollout-GEO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "GEO", - "uniqueId": "40731_BMROLLOUTGEO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP", - "method": "PUT" - } - }, - "name": "Not Used _3-TE78Q ION", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "40712_BMROLLOUTIP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO", - "method": "PUT" - } - }, - "name": "Not Used_3-TE78Q ION", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "GEO", - "uniqueId": "40713_BMROLLOUTGEO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "case F-CS-2759696", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE", - "method": "PUT" - } - }, - "name": "GEO-Block Hotwire", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "GEO", - "uniqueId": "40548_GEOBLOCKHOTWIRE" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Github)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "40198_REPUTATIONWHITELISTGITHU" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS", - "method": "PUT" - } - }, - "name": "Github Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "40197_GITHUBBYPASS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST", - "method": "PUT" - } - }, - "name": "TEMP Geo-Block List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "40016_TEMPGEOBLOCKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST", - "method": "PUT" - } - }, - "name": "TEMP IP White List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "40014_TEMPIPWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Expedia WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "37172_REPUTATIONWHITELISTEXPED" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST", - "method": "PUT" - } - }, - "name": "Jira_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "34616_JIRARCWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS", - "method": "PUT" - } - }, - "name": "Jira_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "34613_JIRABYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS", - "method": "PUT" - } - }, - "name": "test3", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "32383_EANRATECONTROLBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST", - "method": "PUT" - } - }, - "name": "test2", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "32378_RATECONTROLSBYPASSLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS", - "method": "PUT" - } - }, - "name": "EAN Rate Control bypass list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "32384_EANRATECONTROLBYPASSLIS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF", - "method": "PUT" - } - }, - "name": "Partner_turnoff", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "31755_PARTNERTURNOFF" - }, - { - "description": "reactivate to hide the variable. for Jira LUNADEVESC-5134", - "elementCount": 400, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS", - "method": "PUT" - } - }, - "name": "Keynote Agents", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 5, - "type": "IP", - "uniqueId": "1025_KEYNOTEAGENTS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 186, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST", - "method": "PUT" - } - }, - "name": "Call Center Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "26372_CALLCENTERWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST", - "method": "PUT" - } - }, - "name": "HomeAway IP whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "25066_HOMEAWAYIPWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK", - "method": "PUT" - } - }, - "name": "HomeAway Geo Block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "25065_HOMEAWAYGEOBLOCK" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK", - "method": "PUT" - } - }, - "name": "HomeAway IP block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "25064_IPBLOCK" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 216, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/18511_AS37963/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/18511_AS37963" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/18511_AS37963", - "method": "PUT" - } - }, - "name": "AS37963", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "18511_AS37963" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS", - "method": "PUT" - } - }, - "name": "Classic vacations waf bypass list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "17403_CLASSICVACATIONSWAFBYPAS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST", - "method": "PUT" - } - }, - "name": "Classic vacations whitelist exception to network control", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "17402_CLASSICVACATIONSWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK", - "method": "PUT" - } - }, - "name": "Classic vacations Geo Black list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "17401_CLASSICVACATIONSGEOBLACK" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "EAN Geo Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "16865_EANGEOBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST", - "method": "PUT" - } - }, - "name": "EAN IP Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "16863_EANIPWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Egencia WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "9818_REPUTATIONWHITELISTEGENC" - }, - { - "elementCount": 27, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST", - "method": "PUT" - } - }, - "name": "International Traffic in Arms Regulations (ITAR) List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 9, - "type": "GEO", - "uniqueId": "968_ITARCOUNTRYLIST" - }, - { - "elementCount": 22, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST", - "method": "PUT" - } - }, - "name": "International Emergency Economic Powers Act (IEEPA) List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 3, - "type": "GEO", - "uniqueId": "969_IEEPACOUNTRYLIST" - }, - { - "elementCount": 18, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST", - "method": "PUT" - } - }, - "name": "Office of Foreign Asset Control (OFAC) List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 4, - "type": "GEO", - "uniqueId": "967_OFACCOUNTRYLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST", - "method": "PUT" - } - }, - "name": "Reputation Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "6986_REPUTATIONWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 4113, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC", - "method": "PUT" - } - }, - "name": "Tor Exit Nodes - Static", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "5627_TOREXITNODESSTATIC" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS", - "method": "PUT" - } - }, - "name": "test access", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "3453_TESTACCESS" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI", - "method": "PUT" - } - }, - "name": "Voyager Call Center Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "2275_VOYAGERCALLCENTERWHITELI" - } - ] - } -] \ No newline at end of file diff --git a/pkg/providers/networklists/testdata/TestDSNetworkList/match_by_id.tf b/pkg/providers/networklists/testdata/TestDSNetworkList/match_by_id.tf deleted file mode 100644 index 1beb7fcf6..000000000 --- a/pkg/providers/networklists/testdata/TestDSNetworkList/match_by_id.tf +++ /dev/null @@ -1,10 +0,0 @@ -provider "akamai" { - edgerc = "~/.edgerc_network" -} - - -data "akamai_networklist_network_lists" "test" { - - name = "40996_ARTYLABWHITELIST" - - } diff --git a/pkg/providers/networklists/testdata/TestResActivations/Activations.json b/pkg/providers/networklists/testdata/TestResActivations/Activations.json deleted file mode 100644 index 9df6b6c6d..000000000 --- a/pkg/providers/networklists/testdata/TestResActivations/Activations.json +++ /dev/null @@ -1,9 +0,0 @@ -[ - { - "detail": "Network list 21739 could not be found", - "instance": "https://problems.luna.akamaiapis.net/network-lists-activation/error-instances/77a73d4d-292b-4f96-9d16-1d82b716bb21", - "status": 404, - "title": "Not Found", - "type": "https://problems.luna.akamaiapis.net/network-lists-activation/error-types/NOT-FOUND" - } -] \ No newline at end of file diff --git a/pkg/providers/networklists/testdata/TestResActivations/ActivationsDelete.json b/pkg/providers/networklists/testdata/TestResActivations/ActivationsDelete.json deleted file mode 100644 index 16c533cd2..000000000 --- a/pkg/providers/networklists/testdata/TestResActivations/ActivationsDelete.json +++ /dev/null @@ -1,18 +0,0 @@ - - { - "action": "DEACTIVATE", - "activationConfigs": [ - { - "configId": 43253, - "configName": "Akamai Tools", - "configVersion": 4 - } - ], - "activationId": 547694, - "createDate": "2020-10-07T12:30:49Z", - "createdBy": "lap2lreucgguhekn", - "dispatchCount": 1, - "network": "STAGING", - "reasons": [], - "status": "DEACTIVATED" - } diff --git a/pkg/providers/networklists/testdata/TestResActivations/match_by_id.tf b/pkg/providers/networklists/testdata/TestResActivations/match_by_id.tf deleted file mode 100644 index fdfd263b2..000000000 --- a/pkg/providers/networklists/testdata/TestResActivations/match_by_id.tf +++ /dev/null @@ -1,14 +0,0 @@ -provider "akamai" { - edgerc = "~/.edgerc" -} - - - -resource "akamai_networklist_activations" "test" { - name = "Network list test" - network = "STAGING" - notes = "TEST Notes" - activate = true - notification_emails = ["martin@akava.io"] -} - diff --git a/pkg/providers/networklists/testdata/TestResNetworkList/NetworkList.json b/pkg/providers/networklists/testdata/TestResNetworkList/NetworkList.json deleted file mode 100644 index 65de94ec1..000000000 --- a/pkg/providers/networklists/testdata/TestResNetworkList/NetworkList.json +++ /dev/null @@ -1,8541 +0,0 @@ -[ - { - "links": { - "create": { - "href": "/network-list/v2/network-lists", - "method": "POST" - } - }, - "networkLists": [ - { - "elementCount": 1716, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES", - "method": "PUT" - } - }, - "name": "Tor Akamai Network List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 43422, - "type": "IP", - "uniqueId": "365_AKAMAITOREXITNODES" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "https://confluence.expedia.biz/display/EITCOLLAB/GitHub+EG+IP+Whitelist", - "elementCount": 915, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST", - "method": "PUT" - } - }, - "name": "Github WhiteList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 293, - "type": "IP", - "uniqueId": "41750_GITHUBWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 126, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST", - "method": "PUT" - } - }, - "name": "jenkinslab whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 21, - "type": "IP", - "uniqueId": "55687_JENKINSLABWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Lab+IP+Whitelist", - "elementCount": 701, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST", - "method": "PUT" - } - }, - "name": "artylab-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 227, - "type": "IP", - "uniqueId": "40996_ARTYLABWHITELIST" - }, - { - "accessControlGroup": "GCO - 3-TE78Q.G150073", - "description": "Voyager Training SW", - "elementCount": 526, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW", - "method": "PUT" - } - }, - "name": "Voyager Training SW", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "75597_VOYAGUERTRAININGSW" - }, - { - "elementCount": 523, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU", - "method": "PUT" - } - }, - "name": "Ec2 Akamai Network List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 223, - "type": "IP", - "uniqueId": "1024_AMAZONELASTICCOMPUTECLOU" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "new office in London Victoria for Vrbo", - "elementCount": 355, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Jira Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 123, - "type": "IP", - "uniqueId": "34612_JIRAALLOWEDIPS" - }, - { - "elementCount": 3139, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT", - "method": "PUT" - } - }, - "name": "Azure IP range cloud services", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 426, - "type": "IP", - "uniqueId": "1283_MICROSOFTWINDOWSAZUREDAT" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "Whitelisting one more Akamai IP for testing", - "elementCount": 88, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST", - "method": "PUT" - } - }, - "name": "artylab-test-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 28, - "type": "IP", - "uniqueId": "40998_ARTYLABTESTWHITELIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 24, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Egencia Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "3379_EGENCIABRANDBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Secure+IP+Whitelist", - "elementCount": 331, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST", - "method": "PUT" - } - }, - "name": "artyprod-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 129, - "type": "IP", - "uniqueId": "40997_ARTYPRODWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to allow traffic on jenkinstest.expedia.biz", - "elementCount": 30, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST", - "method": "PUT" - } - }, - "name": "JenkinsTest Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 15, - "type": "IP", - "uniqueId": "53434_JENKINSTESTWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for fisheye.expedia.biz and fisheyetest.expedia.biz", - "elementCount": 135, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST", - "method": "PUT" - } - }, - "name": "Fisheye Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 10, - "type": "IP", - "uniqueId": "68757_FISHEYEWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for sonar.expedia.biz and sonartest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/Sonar+EG+IP+Whitelist", - "elementCount": 173, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST", - "method": "PUT" - } - }, - "name": "Sonar Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 23, - "type": "IP", - "uniqueId": "68755_SONARWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for testrail.expedia.biz and testrailtest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/TestRail+EG+IP+Whitelist", - "elementCount": 133, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST", - "method": "PUT" - } - }, - "name": "Testrail Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "68758_TESTRAILWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 62, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST", - "method": "PUT" - } - }, - "name": "alm-blog-whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 15, - "type": "IP", - "uniqueId": "67898_ALMBLOGWHITELIST" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "description": "Added 187.207.181.251, unwanted IP on hoteles.volaris.com\nAdded 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24 - Erik Mattison (ERS - Sec Eng)", - "elementCount": 3969, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Hotels Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 129, - "type": "IP", - "uniqueId": "1706_HOTELSBRANDBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "description": "F-CS-4083079", - "elementCount": 44, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST", - "method": "PUT" - } - }, - "name": "Egencia Sisense Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "75756_EGENCIASISENSEWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS", - "method": "PUT" - } - }, - "name": "Egencia Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "51562_EGENCIABYPASS" - }, - { - "elementCount": 2767, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS", - "method": "PUT" - } - }, - "name": "Image Manager Servers", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 63, - "type": "IP", - "uniqueId": "14121_IMAGEMANAGERSERVERS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 20, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST", - "method": "PUT" - } - }, - "name": "artyprod-test-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 14, - "type": "IP", - "uniqueId": "40999_ARTYPRODTESTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Lydia - Removing IP 216.251.120.10", - "elementCount": 465, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO", - "method": "PUT" - } - }, - "name": "Security Bypass List - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "55214_SECURITYBYPASSLISTGCO" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "description": "ExpediaPartnerCentral IP Blacklist - Added 5 entries per SOC (Erik M, Sec Eng)", - "elementCount": 50, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST", - "method": "PUT" - } - }, - "name": "EPC Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 18, - "type": "IP", - "uniqueId": "32620_EPCBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "DO NOT USE!!! Testing list for automation - see Erik Mattison", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/74967_TESTLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/74967_TESTLIST", - "method": "PUT" - } - }, - "name": "Test-list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "74967_TESTLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "The whitelist for githubtest.expedia.biz", - "elementCount": 34, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST", - "method": "PUT" - } - }, - "name": "GitHubTest Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 17, - "type": "IP", - "uniqueId": "45358_GITHUBTESTWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 22, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB", - "method": "PUT" - } - }, - "name": "ChefLab Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 6, - "type": "IP", - "uniqueId": "68112_CHEFLAB" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 47, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS", - "method": "PUT" - } - }, - "name": "CarRentals Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 7, - "type": "IP", - "uniqueId": "46789_CARRENTALSBYPASS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to allow traffic on jenkinsdecaf.expedia.biz", - "elementCount": 25, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST", - "method": "PUT" - } - }, - "name": "JenkinsDecaf Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "53433_JENKINSDECAFWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS", - "method": "PUT" - } - }, - "name": "Expediagroup Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "53077_EXPEDIAGROUPBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Duplicating ADYEN addresses to this list", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST", - "method": "PUT" - } - }, - "name": "Rate Controls Bypass List - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52769_RATECONTROLSBYPASSLIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Adding Non Prod VPCs", - "elementCount": 74, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/48306_ODSIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/48306_ODSIPS", - "method": "PUT" - } - }, - "name": "ODS IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 14, - "type": "IP", - "uniqueId": "48306_ODSIPS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP Whitelist for chefdecaf.expedia.biz, chefautodecaf.expedia.biz, chefsupermarketdecaf.expedia.biz", - "elementCount": 20, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF", - "method": "PUT" - } - }, - "name": "Chefdecaf Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "68115_CHEFDECAF" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP Whitelist for chefcorp.expedia.biz, chefautocorp.expedia.biz, chefsupermarketcorp.expedia.biz", - "elementCount": 54, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP", - "method": "PUT" - } - }, - "name": "ChefCorp Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "68113_CHEFCORP" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS", - "method": "PUT" - } - }, - "name": "Hotwire WAF Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "68750_HOTWIREWAFBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "F-CS-3996326", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO", - "method": "PUT" - } - }, - "name": "Strict Whitelist – GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "72997_STRICTWHITELISTGCO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 9, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL", - "method": "PUT" - } - }, - "name": "vap-e2e-prod SWL", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "72924_VAPE2EPRODSWL" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "description": "new office in London Victoria for Vrbo", - "elementCount": 73, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST", - "method": "PUT" - } - }, - "name": "Lodging Internal Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 16, - "type": "IP", - "uniqueId": "45955_LODGINGINTERNALWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "External IPs allowed to access JIRA. See https://confluence.expedia.biz/display/JIRA/JIRA+IP+Whitelisting", - "elementCount": 304, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Vrbojiratest Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69322_VRBOJIRATESTALLOWEDIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 56, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST", - "method": "PUT" - } - }, - "name": "alm-blogtest-whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "67897_ALMBLOGTESTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 71, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS", - "method": "PUT" - } - }, - "name": "Expedia Group Public IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "65037_EXPEDIAGROUPPUBLICIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "List of EG owned/trusted IPs", - "elementCount": 67, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS", - "method": "PUT" - } - }, - "name": "EG Trusted IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69033_EGTRUSTEDIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "External IPs allowed to access Confluence. See https://confluence.expedia.biz/display/CON/Confluence+IP+Whitelisting", - "elementCount": 218, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Confluence Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 38, - "type": "IP", - "uniqueId": "42664_CONFLUENCEALLOWEDIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Added 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24, 103.72.8.217- Erik Mattison (ERS - Sec Eng)", - "elementCount": 24, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST", - "method": "PUT" - } - }, - "name": "Expedia Temporary Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "5703_EXPEDIATEMPORARYBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL", - "method": "PUT" - } - }, - "name": "Expedia Group Global Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "71830_EXPEDIAGROUPGLOBALBLACKL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Deny-By-IP, Apple Verification (STGR-2439), AWS Egress (PROD-5148, PROD-5319), Vitality (PROD-5818), Bangalore Office (PSUP-34217)", - "elementCount": 835, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST", - "method": "PUT" - } - }, - "name": "Staging Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 16, - "type": "IP", - "uniqueId": "64150_VITALITYIPLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS", - "method": "PUT" - } - }, - "name": "Classic vacations Black list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "17400_CLASSICVACATIONSBLACKLIS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "description": "Blocking 49.86.182.23 for scanning", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST", - "method": "PUT" - } - }, - "name": "TEMP IP Black List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "40015_TEMPIPBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI", - "method": "PUT" - } - }, - "name": "Voyager Call Center Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "2276_VOYAGERCALLCENTERBLACKLI" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST", - "method": "PUT" - } - }, - "name": "Voyager LAB Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "3402_VOYAGERLABBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 7, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST", - "method": "PUT" - } - }, - "name": "Hotwire Brand QA Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "4308_HOTWIREBRANDQABLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 7, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Venere Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "3380_VENEREBRANDBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 28, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL", - "method": "PUT" - } - }, - "name": "Voyager PROD Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "5624_VOYAGERCALLCENTERBLACKL" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 137, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Travelocity Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 19, - "type": "IP", - "uniqueId": "2643_TRAVELOCITYBRANDBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 19, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Via Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 6, - "type": "IP", - "uniqueId": "1538_VIABRANDBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 13, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST", - "method": "PUT" - } - }, - "name": "EAN IP Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "16864_EANIPBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST", - "method": "PUT" - } - }, - "name": "ECSC-Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "44828_ECSCBLACKLIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST", - "method": "PUT" - } - }, - "name": "CarRentals Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "46787_CARRENTALSBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST", - "method": "PUT" - } - }, - "name": "ADT - IP Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "49181_ADTIPBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST", - "method": "PUT" - } - }, - "name": "LegacyOrbitz BlackList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "49996_LEGACYORBITZBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO", - "method": "PUT" - } - }, - "name": "IP Blacklist - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52764_IPBLACKLISTDUO" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST", - "method": "PUT" - } - }, - "name": "API_Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52782_APIBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS", - "method": "PUT" - } - }, - "name": "Blacklist_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "53347_BLACKLISTJENKINS" - }, - { - "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST", - "method": "PUT" - } - }, - "name": "GCO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "53726_GCOBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO", - "method": "PUT" - } - }, - "name": "IP Blacklist - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "55211_IPBLACKLISTGCO" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 15625, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Expedia Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 71, - "type": "IP", - "uniqueId": "1933_EXPEDIABRANDBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "description": "Adding 64.15.129.112 as per approval from Narainder.", - "elementCount": 29, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Hotwire Brand Prod Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "1883_HOTWIREBRANDBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST", - "method": "PUT" - } - }, - "name": "EGP Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "63705_EGPBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST", - "method": "PUT" - } - }, - "name": "WorldLine Prod Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69602_WORLDLINEPRODWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "195.35.91.69195.35.90.70", - "elementCount": 8, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST", - "method": "PUT" - } - }, - "name": "WorldPay Prod Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "69603_WORLDPAYPRODWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP Whitelist for chefsecure.expedia.biz, chefautosecure.expedia.biz, chefsupermarketsecure.expedia.biz", - "elementCount": 28, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE", - "method": "PUT" - } - }, - "name": "ChefSecure Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "68114_CHEFSECURE" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 319, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE", - "method": "PUT" - } - }, - "name": "Hotels Brand Blacklist Exceptions", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "42684_HOTELSBRANDBLACKLISTEXCE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 323, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "ADT StrictWhitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "49178_ADTSTRICTWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "VPN IP to Whitelist", - "elementCount": 12, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST", - "method": "PUT" - } - }, - "name": "CarRentals Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 7, - "type": "IP", - "uniqueId": "46788_CARRENTALSWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "204.14.232.0/21", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "Placeholder", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "70704_FSPSTRICTWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "description": "204.14.232.0/21", - "elementCount": 27, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "FSP Strict Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "70705_FSPSTRICTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 27, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS", - "method": "PUT" - } - }, - "name": "SalesForce IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "70568_SALESFORCEIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "PROD-5818", - "elementCount": 49, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP", - "method": "PUT" - } - }, - "name": "Vitality-IP-List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "65875_ALLOWBYIP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Iran APT IOC IPs addition to security controls\nJira ID - ERSST-2128", - "elementCount": 17, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS", - "method": "PUT" - } - }, - "name": "Iran APT IOC IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "70327_IRANAPTIOCIPS" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "description": "Added as requested by Atit: Expedia Partner JIRA: (AK-88) Add Qualys CIDR to EAN IP Bypass List\n\nAdded Deloitte IPs as requested by Atit. AK-104\n\nAdded Rapid7 IPs per Atit. Ak-171", - "elementCount": 13, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST", - "method": "PUT" - } - }, - "name": "EAN IP Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 10, - "type": "IP", - "uniqueId": "16862_EANIPBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST", - "method": "PUT" - } - }, - "name": "Adyen Prod Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69601_ADYENPRODWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST", - "method": "PUT" - } - }, - "name": "Rate Controls Bypass List - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "55215_RATECONTROLSBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST", - "method": "PUT" - } - }, - "name": "WorldPay Test Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "68764_WORLDPAYWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST", - "method": "PUT" - } - }, - "name": "WorldLine Test Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "68765_WORLDLINEWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 10, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68762_ADYEN/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68762_ADYEN" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68762_ADYEN", - "method": "PUT" - } - }, - "name": "Adyen Test Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "68762_ADYEN" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST", - "method": "PUT" - } - }, - "name": "TEMP Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "40021_TEMPBYPASSLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS", - "method": "PUT" - } - }, - "name": "Vrbojiratest_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "69324_VRBOJIRATESTBYPASS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST", - "method": "PUT" - } - }, - "name": "Vrbojiratest_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "69323_VRBOJIRATESTRCWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 16, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS", - "method": "PUT" - } - }, - "name": "BEX Rate Control Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "55919_BEXRATECONTROLBYPASS" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "description": "HAK-86, PROD-6167", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS", - "method": "PUT" - } - }, - "name": "AWS Egress IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "68043_AWSEGRESSIPS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "List of IPs allowed to access https://cheftest.expedia.biz", - "elementCount": 13, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST", - "method": "PUT" - } - }, - "name": "ChefTest Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "68111_CHEFTEST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for jenkinssecure.expedia.biz", - "elementCount": 39, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST", - "method": "PUT" - } - }, - "name": "jenkinssecure whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "55686_JENKINSSECUREWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (CarRentals)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "46792_REPUTATIONWHITELISTCARRE" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Adding New Relic San Francisco EndPoints for Synthetics", - "elementCount": 11, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP", - "method": "PUT" - } - }, - "name": "CarRentals Rate Control Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "46791_CARRENTALSRATECONTROLBYP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "F-CS-3817120\nES_Tuning - Rate Control Recommendations\nBy Akamai", - "elementCount": 14, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST", - "method": "PUT" - } - }, - "name": "Rate Controls Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "68495_RATECONTROLSWHITELIST" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (EAN WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "68344_REPUTATIONWHITELISTEANW" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST", - "method": "PUT" - } - }, - "name": "API_BypassList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "52784_APIBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES", - "method": "PUT" - } - }, - "name": "eIT Services", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "67900_EITSERVICES" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 16, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Hotels)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 7, - "type": "IP", - "uniqueId": "9606_REPUTATIONWHITELISTHOTEL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP", - "method": "PUT" - } - }, - "name": "WAF Bypass for \"DENY-By-IP-Policy\"", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "66858_WAFBYPASSFORDENYBYIP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "PROD-5839, HAK-81\nTarget: apihotels.net", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST", - "method": "PUT" - } - }, - "name": "API Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "65265_AWSBAMBOOWHITELIST" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (eIT Extranet Services)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "65827_REPUTATIONWHITELISTEITE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 20, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST", - "method": "PUT" - } - }, - "name": "ADT - WAF Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "49185_ADTWAFBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST", - "method": "PUT" - } - }, - "name": "Geo - Network List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "65654_GEONETWORKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION", - "method": "PUT" - } - }, - "name": "IP Block List Exception", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "65653_IPBLOCKLISTEXCEPTION" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST", - "method": "PUT" - } - }, - "name": "Amex Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "65651_AMEXWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Adding EG DAST IPs", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST", - "method": "PUT" - } - }, - "name": "CarRentals Partner Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "53725_PARTNERWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Hotwire WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "9833_REPUTATIONWHITELISTHOTWI" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS", - "method": "PUT" - } - }, - "name": "ECSC-Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "44829_ECSCBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", - "elementCount": 213, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS", - "method": "PUT" - } - }, - "name": "CPI Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "49617_CPIALLOWEDIPS" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 29, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS", - "method": "PUT" - } - }, - "name": "Customer Client IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 10, - "type": "IP", - "uniqueId": "48307_CUSTOMERCLIENTIPS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 9, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL", - "method": "PUT" - } - }, - "name": "Egencia StrictWL", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "53659_EGENCIASTRICTWL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", - "elementCount": 213, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Confluence Okta Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "50276_CONFLUENCEOKTAALLOWEDIPS" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 58, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "App Strict Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "44833_APPSTRICTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 37, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST", - "method": "PUT" - } - }, - "name": "Corporate HQ Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "26371_CORPORATEHQWHITELIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 342, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST", - "method": "PUT" - } - }, - "name": "Voyager LAB Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 12, - "type": "IP", - "uniqueId": "3324_VOYAGERLABWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "List of allowed IPs for ALM GitHub Enterprise", - "elementCount": 18, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST", - "method": "PUT" - } - }, - "name": "bogus-github-whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "40196_GITHUBWHITELIST" - }, - { - "description": "The Akamai Portal Test Center is a tool that you can use to test configuration changes. To take advantage of the Test Center, you must ensure that test requests coming from the Test Center are not blocked, by whitelisting this list in your WAF policies.", - "elementCount": 12, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA", - "method": "PUT" - } - }, - "name": "Akamai Test Center (ATC) Agents", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 2, - "type": "IP", - "uniqueId": "46506_AKAMAIPORTALTESTCENTERA" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 227, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL", - "method": "PUT" - } - }, - "name": "Akamai Firewall", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "1327_AKAMAIFIREWALL" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Enterprise Solutions)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63829_REPUTATIONWHITELISTENTER" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (EGP)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63708_REPUTATIONWHITELISTEGP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST", - "method": "PUT" - } - }, - "name": "EGP Geolist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "63707_EGPGEOLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST", - "method": "PUT" - } - }, - "name": "EGP Bypasslist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63706_EGPBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST", - "method": "PUT" - } - }, - "name": "EGP Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63704_EGPWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Allow Traffic from One UI Tool", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST", - "method": "PUT" - } - }, - "name": "API_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52781_APIWHITELIST" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 75, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS", - "method": "PUT" - } - }, - "name": "Hotels Brand WAF Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "42686_HOTELSBRANDWAFBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - Offices", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "50637_WAFBYPASSWHITELISTOFFI" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 68, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS", - "method": "PUT" - } - }, - "name": "ECSC-RC Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "44830_ECSCRCBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 30, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP", - "method": "PUT" - } - }, - "name": "WAF Security File- Rate Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "62642_WAFSECURITYFILERATEBYP" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 9, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR", - "method": "PUT" - } - }, - "name": "WAF bypass IP list - Hotwire QA", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "886_WAFBYPASSIPLISTHOTWIR" - }, - { - "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", - "elementCount": 10, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR", - "method": "PUT" - } - }, - "name": "Hotels Brand - Whitelist from Custom Rule 621882", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "60322_HOTELSBRANDWHITELISTFR" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Testing the Network list automation using API and Flyte-Akamai chatbot, https://jira.hcom/browse/PLATFORM-461", - "elementCount": 18, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461", - "method": "PUT" - } - }, - "name": "test-PLATFORM-461", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 48, - "type": "IP", - "uniqueId": "50114_TESTPLATFORM461" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Negative match fro rate controls", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT", - "method": "PUT" - } - }, - "name": "Hotwire Rate Control Exceptions", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "50628_HOTWIRERATECONTROLEXCEPT" - }, - { - "description": "Gomez synthetic monitoring network", - "elementCount": 104, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS", - "method": "PUT" - } - }, - "name": "Gomez (Compuware) Agents", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 4, - "type": "IP", - "uniqueId": "1026_GOMEZCOMPUWAREAGENTS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (GCO)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "55664_REPUTATIONWHITELISTGCO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO", - "method": "PUT" - } - }, - "name": "Geo Blacklist - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "55213_GEOBLACKLISTGCO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC", - "method": "PUT" - } - }, - "name": "IP Blacklist Exception - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "55212_IPBLACKLISTEXCEPTIONGC" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Added 203.37.166.130, new origin IP for .com.au", - "elementCount": 250, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - Hopscotch", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 38, - "type": "IP", - "uniqueId": "6487_WAFBYPASSWHITELISTHOPS" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Added 72.246.0.10 & 72.246.0.22 as requested by Jim George.", - "elementCount": 143, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE", - "method": "PUT" - } - }, - "name": "Akamai Cracker 2 and Cracker 3 IPs for testing purposes", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "48308_AKAMAICRACKER2ANDCRACKE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING", - "method": "PUT" - } - }, - "name": "Akamai_Internal_Testing", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "54056_AKAMAIINTERNALTESTING" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Jenkins)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53355_REPUTATIONWHITELISTJENKI" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to bypass rate controls on Jenkins config, jenkins policy", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ", - "method": "PUT" - } - }, - "name": "Rate Control Bypass List _Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53351_RATECONTROLBYPASSLISTJ" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "Exclusion from blacklist", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS", - "method": "PUT" - } - }, - "name": "Whitelist_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53349_WHITELISTJENKINS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS", - "method": "PUT" - } - }, - "name": "GEO Blacklist_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "53348_GEOBLACKLISTJENKINS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to bypass WAF on Jenkins Policy, Jenkins config", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS", - "method": "PUT" - } - }, - "name": "WAF Bypass List_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53345_WAFBYPASSLISTJENKINS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (ERS)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53080_REPUTATIONWHITELISTERS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB", - "method": "PUT" - } - }, - "name": "Expediagroup Rate Control Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53079_EXPEDIAGROUPRATECONTROLB" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST", - "method": "PUT" - } - }, - "name": "Expediagroup GEO list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "53076_EXPEDIAGROUPGEOLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST", - "method": "PUT" - } - }, - "name": "Expediagroup White list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53075_EXPEDIAGROUPWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST", - "method": "PUT" - } - }, - "name": "Expediagroup Black list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53074_EXPEDIAGROUPBLACKLIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK", - "method": "PUT" - } - }, - "name": "API_GEOBlock", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "52783_APIGEOBLOCK" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Duo)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "52771_REPUTATIONWHITELISTDUO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO", - "method": "PUT" - } - }, - "name": "Security Bypass List - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "52768_SECURITYBYPASSLISTDUO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO", - "method": "PUT" - } - }, - "name": "Geo Blacklist - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "52767_GEOBLACKLISTDUO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU", - "method": "PUT" - } - }, - "name": "IP Blacklist Exception - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "52766_IPBLACKLISTEXCEPTIONDU" - }, - { - "elementCount": 468, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS", - "method": "PUT" - } - }, - "name": "A2 Servers", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 15, - "type": "IP", - "uniqueId": "16656_CPISERVERS" - }, - { - "elementCount": 349, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS", - "method": "PUT" - } - }, - "name": "FEO Servers", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 12, - "type": "IP", - "uniqueId": "7054_FEOSERVERS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK", - "method": "PUT" - } - }, - "name": "Egencia GEO Block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "51561_EGENCIAGEOBLOCK" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - Other", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50640_WAFBYPASSWHITELISTOTHE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - AWS NATs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50638_WAFBYPASSWHITELISTAWS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - CallCenter", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50636_WAFBYPASSWHITELISTCALL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - partner", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50635_WAFBYPASSWHITELISTPART" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "splitting up the hopscotch list for easier management", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - DC", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50634_WAFBYPASSWHITELISTDC" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 10, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST", - "method": "PUT" - } - }, - "name": "hoteis.com GEO list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "GEO", - "uniqueId": "50337_HOTEISCOMGEOLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS", - "method": "PUT" - } - }, - "name": "Confluence Okta_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50278_CONFLUENCEOKTARCWHITELIS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS", - "method": "PUT" - } - }, - "name": "Confluence Okta_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50277_CONFLUENCEOKTABYPASS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST", - "method": "PUT" - } - }, - "name": "LegacyOrbitz GEO BlackList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "49997_LEGACYORBITZBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST", - "method": "PUT" - } - }, - "name": "LegacyOrbitz Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49995_LEGACYORBITZWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST", - "method": "PUT" - } - }, - "name": "CPI_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49620_CPIRCWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS", - "method": "PUT" - } - }, - "name": "CPI_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49618_CPIBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS", - "method": "PUT" - } - }, - "name": "ADT - Rate Controls Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49186_ADTRATECONTROLSBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "ADT - Geo Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "49182_ADTGEOBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED", - "method": "PUT" - } - }, - "name": "Hotels Brand GEO List (Used by Custom Bots)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "GEO", - "uniqueId": "47882_HOTELSBRANDGEOLISTUSED" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS", - "method": "PUT" - } - }, - "name": "legacyOrbitz_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "47546_LEGACYORBITZBYPASS" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST", - "method": "PUT" - } - }, - "name": "Digital Ocean Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "47517_DIGITALOCEANWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK", - "method": "PUT" - } - }, - "name": "CarRentals Geo Block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "46790_CARRENTALSGEOBLOCK" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "EPC GEO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "45956_EPCGEOBLACKLIST" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS", - "method": "PUT" - } - }, - "name": "EPC Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "45954_EPCBYPASS" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "EPC GEO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "45953_EPCGEOBLACKLIST" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST", - "method": "PUT" - } - }, - "name": "EPC Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "45952_EPCWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (ECSC)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "44832_REPUTATIONWHITELISTECSC" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "ECSC-GEO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "44831_ECSCGEOBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST", - "method": "PUT" - } - }, - "name": "ECSC-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "44827_ECSCWHITELIST" - }, - { - "accessControlGroup": "Classic Vacations - 3-TE78Q.G83605", - "description": "Classic Vacations Whitelist for", - "elementCount": 17, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST", - "method": "PUT" - } - }, - "name": "Classic Vacations Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 6, - "type": "IP", - "uniqueId": "31075_CLASSICVACATIONSWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST", - "method": "PUT" - } - }, - "name": "Egencia Brand Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "43172_EGENCIABRANDWHITELIST" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS", - "method": "PUT" - } - }, - "name": "Hotels Brand Rate Controls Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "42688_HOTELSBRANDRATECONTROLS" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "Hotels Brand Geo Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "42687_HOTELSBRANDGEOBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS", - "method": "PUT" - } - }, - "name": "Confluence_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "42666_CONFLUENCEBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST", - "method": "PUT" - } - }, - "name": "Confluence_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "42665_CONFLUENCERCWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP", - "method": "PUT" - } - }, - "name": "BM rollout-IP", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "40730_BMROLLOUTIP" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO", - "method": "PUT" - } - }, - "name": "BM rollout-GEO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "GEO", - "uniqueId": "40731_BMROLLOUTGEO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP", - "method": "PUT" - } - }, - "name": "Not Used _3-TE78Q ION", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "40712_BMROLLOUTIP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO", - "method": "PUT" - } - }, - "name": "Not Used_3-TE78Q ION", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "GEO", - "uniqueId": "40713_BMROLLOUTGEO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "case F-CS-2759696", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE", - "method": "PUT" - } - }, - "name": "GEO-Block Hotwire", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "GEO", - "uniqueId": "40548_GEOBLOCKHOTWIRE" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Github)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "40198_REPUTATIONWHITELISTGITHU" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS", - "method": "PUT" - } - }, - "name": "Github Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "40197_GITHUBBYPASS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST", - "method": "PUT" - } - }, - "name": "TEMP Geo-Block List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "40016_TEMPGEOBLOCKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST", - "method": "PUT" - } - }, - "name": "TEMP IP White List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "40014_TEMPIPWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Expedia WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "37172_REPUTATIONWHITELISTEXPED" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST", - "method": "PUT" - } - }, - "name": "Jira_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "34616_JIRARCWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS", - "method": "PUT" - } - }, - "name": "Jira_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "34613_JIRABYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS", - "method": "PUT" - } - }, - "name": "test3", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "32383_EANRATECONTROLBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST", - "method": "PUT" - } - }, - "name": "test2", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "32378_RATECONTROLSBYPASSLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS", - "method": "PUT" - } - }, - "name": "EAN Rate Control bypass list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "32384_EANRATECONTROLBYPASSLIS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF", - "method": "PUT" - } - }, - "name": "Partner_turnoff", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "31755_PARTNERTURNOFF" - }, - { - "description": "reactivate to hide the variable. for Jira LUNADEVESC-5134", - "elementCount": 400, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS", - "method": "PUT" - } - }, - "name": "Keynote Agents", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 5, - "type": "IP", - "uniqueId": "1025_KEYNOTEAGENTS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 186, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST", - "method": "PUT" - } - }, - "name": "Call Center Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "26372_CALLCENTERWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST", - "method": "PUT" - } - }, - "name": "HomeAway IP whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "25066_HOMEAWAYIPWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK", - "method": "PUT" - } - }, - "name": "HomeAway Geo Block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "25065_HOMEAWAYGEOBLOCK" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK", - "method": "PUT" - } - }, - "name": "HomeAway IP block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "25064_IPBLOCK" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 216, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/18511_AS37963/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/18511_AS37963" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/18511_AS37963", - "method": "PUT" - } - }, - "name": "AS37963", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "18511_AS37963" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS", - "method": "PUT" - } - }, - "name": "Classic vacations waf bypass list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "17403_CLASSICVACATIONSWAFBYPAS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST", - "method": "PUT" - } - }, - "name": "Classic vacations whitelist exception to network control", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "17402_CLASSICVACATIONSWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK", - "method": "PUT" - } - }, - "name": "Classic vacations Geo Black list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "17401_CLASSICVACATIONSGEOBLACK" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "EAN Geo Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "16865_EANGEOBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST", - "method": "PUT" - } - }, - "name": "EAN IP Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "16863_EANIPWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Egencia WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "9818_REPUTATIONWHITELISTEGENC" - }, - { - "elementCount": 27, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST", - "method": "PUT" - } - }, - "name": "International Traffic in Arms Regulations (ITAR) List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 9, - "type": "GEO", - "uniqueId": "968_ITARCOUNTRYLIST" - }, - { - "elementCount": 22, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST", - "method": "PUT" - } - }, - "name": "International Emergency Economic Powers Act (IEEPA) List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 3, - "type": "GEO", - "uniqueId": "969_IEEPACOUNTRYLIST" - }, - { - "elementCount": 18, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST", - "method": "PUT" - } - }, - "name": "Office of Foreign Asset Control (OFAC) List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 4, - "type": "GEO", - "uniqueId": "967_OFACCOUNTRYLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST", - "method": "PUT" - } - }, - "name": "Reputation Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "6986_REPUTATIONWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 4113, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC", - "method": "PUT" - } - }, - "name": "Tor Exit Nodes - Static", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "5627_TOREXITNODESSTATIC" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS", - "method": "PUT" - } - }, - "name": "test access", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "3453_TESTACCESS" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI", - "method": "PUT" - } - }, - "name": "Voyager Call Center Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "2275_VOYAGERCALLCENTERWHITELI" - } - ] - } -] \ No newline at end of file diff --git a/pkg/providers/networklists/testdata/TestResNetworkList/match_by_id.tf b/pkg/providers/networklists/testdata/TestResNetworkList/match_by_id.tf deleted file mode 100644 index feac1e5fb..000000000 --- a/pkg/providers/networklists/testdata/TestResNetworkList/match_by_id.tf +++ /dev/null @@ -1,14 +0,0 @@ -provider "akamai" { - edgerc = "~/.edgerc_network" -} - - -resource "akamai_networklist_network_list" "test" { - name = "Martin Network List" - type = "IP" - description = "Notes about this network list" - - list = ["10.1.8.23","10.3.5.67"] - mode = "REPLACE" - } - diff --git a/pkg/providers/networklists/testdata/TestResNetworkList/update_by_id.tf b/pkg/providers/networklists/testdata/TestResNetworkList/update_by_id.tf deleted file mode 100644 index 8b89d2a0e..000000000 --- a/pkg/providers/networklists/testdata/TestResNetworkList/update_by_id.tf +++ /dev/null @@ -1,14 +0,0 @@ -provider "akamai" { - edgerc = "~/.edgerc_network" -} - - -resource "akamai_networklist_network_list" "test" { - name = "Martin Network List" - type = "IP" - description = "Notes about this network list" - - list = ["10.1.8.23","10.3.5.67","10.1.10.90"] - mode = "REPLACE" - } - diff --git a/pkg/providers/networklists/testdata/TestResNetworkListDescription/NetworkListDescription.json b/pkg/providers/networklists/testdata/TestResNetworkListDescription/NetworkListDescription.json deleted file mode 100644 index 65de94ec1..000000000 --- a/pkg/providers/networklists/testdata/TestResNetworkListDescription/NetworkListDescription.json +++ /dev/null @@ -1,8541 +0,0 @@ -[ - { - "links": { - "create": { - "href": "/network-list/v2/network-lists", - "method": "POST" - } - }, - "networkLists": [ - { - "elementCount": 1716, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES", - "method": "PUT" - } - }, - "name": "Tor Akamai Network List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 43422, - "type": "IP", - "uniqueId": "365_AKAMAITOREXITNODES" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "https://confluence.expedia.biz/display/EITCOLLAB/GitHub+EG+IP+Whitelist", - "elementCount": 915, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST", - "method": "PUT" - } - }, - "name": "Github WhiteList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 293, - "type": "IP", - "uniqueId": "41750_GITHUBWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 126, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST", - "method": "PUT" - } - }, - "name": "jenkinslab whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 21, - "type": "IP", - "uniqueId": "55687_JENKINSLABWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Lab+IP+Whitelist", - "elementCount": 701, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST", - "method": "PUT" - } - }, - "name": "artylab-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 227, - "type": "IP", - "uniqueId": "40996_ARTYLABWHITELIST" - }, - { - "accessControlGroup": "GCO - 3-TE78Q.G150073", - "description": "Voyager Training SW", - "elementCount": 526, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW", - "method": "PUT" - } - }, - "name": "Voyager Training SW", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "75597_VOYAGUERTRAININGSW" - }, - { - "elementCount": 523, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU", - "method": "PUT" - } - }, - "name": "Ec2 Akamai Network List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 223, - "type": "IP", - "uniqueId": "1024_AMAZONELASTICCOMPUTECLOU" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "new office in London Victoria for Vrbo", - "elementCount": 355, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Jira Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 123, - "type": "IP", - "uniqueId": "34612_JIRAALLOWEDIPS" - }, - { - "elementCount": 3139, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT", - "method": "PUT" - } - }, - "name": "Azure IP range cloud services", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 426, - "type": "IP", - "uniqueId": "1283_MICROSOFTWINDOWSAZUREDAT" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "Whitelisting one more Akamai IP for testing", - "elementCount": 88, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST", - "method": "PUT" - } - }, - "name": "artylab-test-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 28, - "type": "IP", - "uniqueId": "40998_ARTYLABTESTWHITELIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 24, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Egencia Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "3379_EGENCIABRANDBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Secure+IP+Whitelist", - "elementCount": 331, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST", - "method": "PUT" - } - }, - "name": "artyprod-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 129, - "type": "IP", - "uniqueId": "40997_ARTYPRODWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to allow traffic on jenkinstest.expedia.biz", - "elementCount": 30, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST", - "method": "PUT" - } - }, - "name": "JenkinsTest Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 15, - "type": "IP", - "uniqueId": "53434_JENKINSTESTWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for fisheye.expedia.biz and fisheyetest.expedia.biz", - "elementCount": 135, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST", - "method": "PUT" - } - }, - "name": "Fisheye Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 10, - "type": "IP", - "uniqueId": "68757_FISHEYEWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for sonar.expedia.biz and sonartest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/Sonar+EG+IP+Whitelist", - "elementCount": 173, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST", - "method": "PUT" - } - }, - "name": "Sonar Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 23, - "type": "IP", - "uniqueId": "68755_SONARWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for testrail.expedia.biz and testrailtest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/TestRail+EG+IP+Whitelist", - "elementCount": 133, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST", - "method": "PUT" - } - }, - "name": "Testrail Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "68758_TESTRAILWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 62, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST", - "method": "PUT" - } - }, - "name": "alm-blog-whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 15, - "type": "IP", - "uniqueId": "67898_ALMBLOGWHITELIST" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "description": "Added 187.207.181.251, unwanted IP on hoteles.volaris.com\nAdded 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24 - Erik Mattison (ERS - Sec Eng)", - "elementCount": 3969, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Hotels Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 129, - "type": "IP", - "uniqueId": "1706_HOTELSBRANDBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "description": "F-CS-4083079", - "elementCount": 44, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST", - "method": "PUT" - } - }, - "name": "Egencia Sisense Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "75756_EGENCIASISENSEWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS", - "method": "PUT" - } - }, - "name": "Egencia Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "51562_EGENCIABYPASS" - }, - { - "elementCount": 2767, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS", - "method": "PUT" - } - }, - "name": "Image Manager Servers", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 63, - "type": "IP", - "uniqueId": "14121_IMAGEMANAGERSERVERS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 20, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST", - "method": "PUT" - } - }, - "name": "artyprod-test-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 14, - "type": "IP", - "uniqueId": "40999_ARTYPRODTESTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Lydia - Removing IP 216.251.120.10", - "elementCount": 465, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO", - "method": "PUT" - } - }, - "name": "Security Bypass List - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "55214_SECURITYBYPASSLISTGCO" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "description": "ExpediaPartnerCentral IP Blacklist - Added 5 entries per SOC (Erik M, Sec Eng)", - "elementCount": 50, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST", - "method": "PUT" - } - }, - "name": "EPC Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 18, - "type": "IP", - "uniqueId": "32620_EPCBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "DO NOT USE!!! Testing list for automation - see Erik Mattison", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/74967_TESTLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/74967_TESTLIST", - "method": "PUT" - } - }, - "name": "Test-list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "74967_TESTLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "The whitelist for githubtest.expedia.biz", - "elementCount": 34, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST", - "method": "PUT" - } - }, - "name": "GitHubTest Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 17, - "type": "IP", - "uniqueId": "45358_GITHUBTESTWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 22, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB", - "method": "PUT" - } - }, - "name": "ChefLab Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 6, - "type": "IP", - "uniqueId": "68112_CHEFLAB" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 47, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS", - "method": "PUT" - } - }, - "name": "CarRentals Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 7, - "type": "IP", - "uniqueId": "46789_CARRENTALSBYPASS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to allow traffic on jenkinsdecaf.expedia.biz", - "elementCount": 25, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST", - "method": "PUT" - } - }, - "name": "JenkinsDecaf Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "53433_JENKINSDECAFWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS", - "method": "PUT" - } - }, - "name": "Expediagroup Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "53077_EXPEDIAGROUPBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Duplicating ADYEN addresses to this list", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST", - "method": "PUT" - } - }, - "name": "Rate Controls Bypass List - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52769_RATECONTROLSBYPASSLIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Adding Non Prod VPCs", - "elementCount": 74, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/48306_ODSIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/48306_ODSIPS", - "method": "PUT" - } - }, - "name": "ODS IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 14, - "type": "IP", - "uniqueId": "48306_ODSIPS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP Whitelist for chefdecaf.expedia.biz, chefautodecaf.expedia.biz, chefsupermarketdecaf.expedia.biz", - "elementCount": 20, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF", - "method": "PUT" - } - }, - "name": "Chefdecaf Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "68115_CHEFDECAF" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP Whitelist for chefcorp.expedia.biz, chefautocorp.expedia.biz, chefsupermarketcorp.expedia.biz", - "elementCount": 54, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP", - "method": "PUT" - } - }, - "name": "ChefCorp Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "68113_CHEFCORP" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS", - "method": "PUT" - } - }, - "name": "Hotwire WAF Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "68750_HOTWIREWAFBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "F-CS-3996326", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO", - "method": "PUT" - } - }, - "name": "Strict Whitelist – GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "72997_STRICTWHITELISTGCO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 9, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL", - "method": "PUT" - } - }, - "name": "vap-e2e-prod SWL", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "72924_VAPE2EPRODSWL" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "description": "new office in London Victoria for Vrbo", - "elementCount": 73, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST", - "method": "PUT" - } - }, - "name": "Lodging Internal Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 16, - "type": "IP", - "uniqueId": "45955_LODGINGINTERNALWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "External IPs allowed to access JIRA. See https://confluence.expedia.biz/display/JIRA/JIRA+IP+Whitelisting", - "elementCount": 304, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Vrbojiratest Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69322_VRBOJIRATESTALLOWEDIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 56, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST", - "method": "PUT" - } - }, - "name": "alm-blogtest-whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "67897_ALMBLOGTESTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 71, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS", - "method": "PUT" - } - }, - "name": "Expedia Group Public IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "65037_EXPEDIAGROUPPUBLICIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "List of EG owned/trusted IPs", - "elementCount": 67, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS", - "method": "PUT" - } - }, - "name": "EG Trusted IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69033_EGTRUSTEDIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "External IPs allowed to access Confluence. See https://confluence.expedia.biz/display/CON/Confluence+IP+Whitelisting", - "elementCount": 218, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Confluence Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 38, - "type": "IP", - "uniqueId": "42664_CONFLUENCEALLOWEDIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Added 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24, 103.72.8.217- Erik Mattison (ERS - Sec Eng)", - "elementCount": 24, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST", - "method": "PUT" - } - }, - "name": "Expedia Temporary Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "5703_EXPEDIATEMPORARYBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL", - "method": "PUT" - } - }, - "name": "Expedia Group Global Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "71830_EXPEDIAGROUPGLOBALBLACKL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Deny-By-IP, Apple Verification (STGR-2439), AWS Egress (PROD-5148, PROD-5319), Vitality (PROD-5818), Bangalore Office (PSUP-34217)", - "elementCount": 835, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST", - "method": "PUT" - } - }, - "name": "Staging Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 16, - "type": "IP", - "uniqueId": "64150_VITALITYIPLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS", - "method": "PUT" - } - }, - "name": "Classic vacations Black list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "17400_CLASSICVACATIONSBLACKLIS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "description": "Blocking 49.86.182.23 for scanning", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST", - "method": "PUT" - } - }, - "name": "TEMP IP Black List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "40015_TEMPIPBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI", - "method": "PUT" - } - }, - "name": "Voyager Call Center Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "2276_VOYAGERCALLCENTERBLACKLI" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST", - "method": "PUT" - } - }, - "name": "Voyager LAB Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "3402_VOYAGERLABBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 7, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST", - "method": "PUT" - } - }, - "name": "Hotwire Brand QA Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "4308_HOTWIREBRANDQABLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 7, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Venere Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "3380_VENEREBRANDBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 28, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL", - "method": "PUT" - } - }, - "name": "Voyager PROD Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "5624_VOYAGERCALLCENTERBLACKL" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 137, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Travelocity Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 19, - "type": "IP", - "uniqueId": "2643_TRAVELOCITYBRANDBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 19, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Via Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 6, - "type": "IP", - "uniqueId": "1538_VIABRANDBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 13, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST", - "method": "PUT" - } - }, - "name": "EAN IP Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "16864_EANIPBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST", - "method": "PUT" - } - }, - "name": "ECSC-Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "44828_ECSCBLACKLIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST", - "method": "PUT" - } - }, - "name": "CarRentals Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "46787_CARRENTALSBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST", - "method": "PUT" - } - }, - "name": "ADT - IP Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "49181_ADTIPBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST", - "method": "PUT" - } - }, - "name": "LegacyOrbitz BlackList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "49996_LEGACYORBITZBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO", - "method": "PUT" - } - }, - "name": "IP Blacklist - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52764_IPBLACKLISTDUO" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST", - "method": "PUT" - } - }, - "name": "API_Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52782_APIBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS", - "method": "PUT" - } - }, - "name": "Blacklist_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "53347_BLACKLISTJENKINS" - }, - { - "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST", - "method": "PUT" - } - }, - "name": "GCO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "53726_GCOBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO", - "method": "PUT" - } - }, - "name": "IP Blacklist - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "55211_IPBLACKLISTGCO" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 15625, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Expedia Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 71, - "type": "IP", - "uniqueId": "1933_EXPEDIABRANDBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "description": "Adding 64.15.129.112 as per approval from Narainder.", - "elementCount": 29, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Hotwire Brand Prod Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "1883_HOTWIREBRANDBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST", - "method": "PUT" - } - }, - "name": "EGP Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "63705_EGPBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST", - "method": "PUT" - } - }, - "name": "WorldLine Prod Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69602_WORLDLINEPRODWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "195.35.91.69195.35.90.70", - "elementCount": 8, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST", - "method": "PUT" - } - }, - "name": "WorldPay Prod Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "69603_WORLDPAYPRODWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP Whitelist for chefsecure.expedia.biz, chefautosecure.expedia.biz, chefsupermarketsecure.expedia.biz", - "elementCount": 28, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE", - "method": "PUT" - } - }, - "name": "ChefSecure Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "68114_CHEFSECURE" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 319, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE", - "method": "PUT" - } - }, - "name": "Hotels Brand Blacklist Exceptions", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "42684_HOTELSBRANDBLACKLISTEXCE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 323, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "ADT StrictWhitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "49178_ADTSTRICTWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "VPN IP to Whitelist", - "elementCount": 12, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST", - "method": "PUT" - } - }, - "name": "CarRentals Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 7, - "type": "IP", - "uniqueId": "46788_CARRENTALSWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "204.14.232.0/21", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "Placeholder", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "70704_FSPSTRICTWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "description": "204.14.232.0/21", - "elementCount": 27, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "FSP Strict Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "70705_FSPSTRICTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 27, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS", - "method": "PUT" - } - }, - "name": "SalesForce IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "70568_SALESFORCEIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "PROD-5818", - "elementCount": 49, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP", - "method": "PUT" - } - }, - "name": "Vitality-IP-List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "65875_ALLOWBYIP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Iran APT IOC IPs addition to security controls\nJira ID - ERSST-2128", - "elementCount": 17, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS", - "method": "PUT" - } - }, - "name": "Iran APT IOC IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "70327_IRANAPTIOCIPS" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "description": "Added as requested by Atit: Expedia Partner JIRA: (AK-88) Add Qualys CIDR to EAN IP Bypass List\n\nAdded Deloitte IPs as requested by Atit. AK-104\n\nAdded Rapid7 IPs per Atit. Ak-171", - "elementCount": 13, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST", - "method": "PUT" - } - }, - "name": "EAN IP Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 10, - "type": "IP", - "uniqueId": "16862_EANIPBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST", - "method": "PUT" - } - }, - "name": "Adyen Prod Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69601_ADYENPRODWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST", - "method": "PUT" - } - }, - "name": "Rate Controls Bypass List - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "55215_RATECONTROLSBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST", - "method": "PUT" - } - }, - "name": "WorldPay Test Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "68764_WORLDPAYWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST", - "method": "PUT" - } - }, - "name": "WorldLine Test Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "68765_WORLDLINEWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 10, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68762_ADYEN/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68762_ADYEN" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68762_ADYEN", - "method": "PUT" - } - }, - "name": "Adyen Test Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "68762_ADYEN" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST", - "method": "PUT" - } - }, - "name": "TEMP Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "40021_TEMPBYPASSLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS", - "method": "PUT" - } - }, - "name": "Vrbojiratest_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "69324_VRBOJIRATESTBYPASS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST", - "method": "PUT" - } - }, - "name": "Vrbojiratest_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "69323_VRBOJIRATESTRCWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 16, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS", - "method": "PUT" - } - }, - "name": "BEX Rate Control Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "55919_BEXRATECONTROLBYPASS" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "description": "HAK-86, PROD-6167", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS", - "method": "PUT" - } - }, - "name": "AWS Egress IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "68043_AWSEGRESSIPS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "List of IPs allowed to access https://cheftest.expedia.biz", - "elementCount": 13, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST", - "method": "PUT" - } - }, - "name": "ChefTest Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "68111_CHEFTEST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for jenkinssecure.expedia.biz", - "elementCount": 39, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST", - "method": "PUT" - } - }, - "name": "jenkinssecure whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "55686_JENKINSSECUREWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (CarRentals)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "46792_REPUTATIONWHITELISTCARRE" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Adding New Relic San Francisco EndPoints for Synthetics", - "elementCount": 11, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP", - "method": "PUT" - } - }, - "name": "CarRentals Rate Control Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "46791_CARRENTALSRATECONTROLBYP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "F-CS-3817120\nES_Tuning - Rate Control Recommendations\nBy Akamai", - "elementCount": 14, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST", - "method": "PUT" - } - }, - "name": "Rate Controls Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "68495_RATECONTROLSWHITELIST" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (EAN WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "68344_REPUTATIONWHITELISTEANW" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST", - "method": "PUT" - } - }, - "name": "API_BypassList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "52784_APIBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES", - "method": "PUT" - } - }, - "name": "eIT Services", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "67900_EITSERVICES" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 16, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Hotels)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 7, - "type": "IP", - "uniqueId": "9606_REPUTATIONWHITELISTHOTEL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP", - "method": "PUT" - } - }, - "name": "WAF Bypass for \"DENY-By-IP-Policy\"", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "66858_WAFBYPASSFORDENYBYIP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "PROD-5839, HAK-81\nTarget: apihotels.net", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST", - "method": "PUT" - } - }, - "name": "API Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "65265_AWSBAMBOOWHITELIST" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (eIT Extranet Services)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "65827_REPUTATIONWHITELISTEITE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 20, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST", - "method": "PUT" - } - }, - "name": "ADT - WAF Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "49185_ADTWAFBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST", - "method": "PUT" - } - }, - "name": "Geo - Network List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "65654_GEONETWORKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION", - "method": "PUT" - } - }, - "name": "IP Block List Exception", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "65653_IPBLOCKLISTEXCEPTION" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST", - "method": "PUT" - } - }, - "name": "Amex Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "65651_AMEXWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Adding EG DAST IPs", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST", - "method": "PUT" - } - }, - "name": "CarRentals Partner Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "53725_PARTNERWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Hotwire WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "9833_REPUTATIONWHITELISTHOTWI" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS", - "method": "PUT" - } - }, - "name": "ECSC-Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "44829_ECSCBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", - "elementCount": 213, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS", - "method": "PUT" - } - }, - "name": "CPI Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "49617_CPIALLOWEDIPS" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 29, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS", - "method": "PUT" - } - }, - "name": "Customer Client IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 10, - "type": "IP", - "uniqueId": "48307_CUSTOMERCLIENTIPS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 9, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL", - "method": "PUT" - } - }, - "name": "Egencia StrictWL", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "53659_EGENCIASTRICTWL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", - "elementCount": 213, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Confluence Okta Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "50276_CONFLUENCEOKTAALLOWEDIPS" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 58, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "App Strict Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "44833_APPSTRICTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 37, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST", - "method": "PUT" - } - }, - "name": "Corporate HQ Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "26371_CORPORATEHQWHITELIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 342, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST", - "method": "PUT" - } - }, - "name": "Voyager LAB Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 12, - "type": "IP", - "uniqueId": "3324_VOYAGERLABWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "List of allowed IPs for ALM GitHub Enterprise", - "elementCount": 18, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST", - "method": "PUT" - } - }, - "name": "bogus-github-whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "40196_GITHUBWHITELIST" - }, - { - "description": "The Akamai Portal Test Center is a tool that you can use to test configuration changes. To take advantage of the Test Center, you must ensure that test requests coming from the Test Center are not blocked, by whitelisting this list in your WAF policies.", - "elementCount": 12, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA", - "method": "PUT" - } - }, - "name": "Akamai Test Center (ATC) Agents", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 2, - "type": "IP", - "uniqueId": "46506_AKAMAIPORTALTESTCENTERA" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 227, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL", - "method": "PUT" - } - }, - "name": "Akamai Firewall", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "1327_AKAMAIFIREWALL" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Enterprise Solutions)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63829_REPUTATIONWHITELISTENTER" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (EGP)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63708_REPUTATIONWHITELISTEGP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST", - "method": "PUT" - } - }, - "name": "EGP Geolist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "63707_EGPGEOLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST", - "method": "PUT" - } - }, - "name": "EGP Bypasslist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63706_EGPBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST", - "method": "PUT" - } - }, - "name": "EGP Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63704_EGPWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Allow Traffic from One UI Tool", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST", - "method": "PUT" - } - }, - "name": "API_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52781_APIWHITELIST" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 75, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS", - "method": "PUT" - } - }, - "name": "Hotels Brand WAF Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "42686_HOTELSBRANDWAFBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - Offices", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "50637_WAFBYPASSWHITELISTOFFI" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 68, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS", - "method": "PUT" - } - }, - "name": "ECSC-RC Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "44830_ECSCRCBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 30, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP", - "method": "PUT" - } - }, - "name": "WAF Security File- Rate Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "62642_WAFSECURITYFILERATEBYP" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 9, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR", - "method": "PUT" - } - }, - "name": "WAF bypass IP list - Hotwire QA", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "886_WAFBYPASSIPLISTHOTWIR" - }, - { - "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", - "elementCount": 10, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR", - "method": "PUT" - } - }, - "name": "Hotels Brand - Whitelist from Custom Rule 621882", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "60322_HOTELSBRANDWHITELISTFR" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Testing the Network list automation using API and Flyte-Akamai chatbot, https://jira.hcom/browse/PLATFORM-461", - "elementCount": 18, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461", - "method": "PUT" - } - }, - "name": "test-PLATFORM-461", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 48, - "type": "IP", - "uniqueId": "50114_TESTPLATFORM461" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Negative match fro rate controls", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT", - "method": "PUT" - } - }, - "name": "Hotwire Rate Control Exceptions", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "50628_HOTWIRERATECONTROLEXCEPT" - }, - { - "description": "Gomez synthetic monitoring network", - "elementCount": 104, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS", - "method": "PUT" - } - }, - "name": "Gomez (Compuware) Agents", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 4, - "type": "IP", - "uniqueId": "1026_GOMEZCOMPUWAREAGENTS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (GCO)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "55664_REPUTATIONWHITELISTGCO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO", - "method": "PUT" - } - }, - "name": "Geo Blacklist - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "55213_GEOBLACKLISTGCO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC", - "method": "PUT" - } - }, - "name": "IP Blacklist Exception - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "55212_IPBLACKLISTEXCEPTIONGC" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Added 203.37.166.130, new origin IP for .com.au", - "elementCount": 250, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - Hopscotch", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 38, - "type": "IP", - "uniqueId": "6487_WAFBYPASSWHITELISTHOPS" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Added 72.246.0.10 & 72.246.0.22 as requested by Jim George.", - "elementCount": 143, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE", - "method": "PUT" - } - }, - "name": "Akamai Cracker 2 and Cracker 3 IPs for testing purposes", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "48308_AKAMAICRACKER2ANDCRACKE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING", - "method": "PUT" - } - }, - "name": "Akamai_Internal_Testing", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "54056_AKAMAIINTERNALTESTING" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Jenkins)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53355_REPUTATIONWHITELISTJENKI" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to bypass rate controls on Jenkins config, jenkins policy", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ", - "method": "PUT" - } - }, - "name": "Rate Control Bypass List _Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53351_RATECONTROLBYPASSLISTJ" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "Exclusion from blacklist", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS", - "method": "PUT" - } - }, - "name": "Whitelist_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53349_WHITELISTJENKINS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS", - "method": "PUT" - } - }, - "name": "GEO Blacklist_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "53348_GEOBLACKLISTJENKINS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to bypass WAF on Jenkins Policy, Jenkins config", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS", - "method": "PUT" - } - }, - "name": "WAF Bypass List_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53345_WAFBYPASSLISTJENKINS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (ERS)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53080_REPUTATIONWHITELISTERS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB", - "method": "PUT" - } - }, - "name": "Expediagroup Rate Control Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53079_EXPEDIAGROUPRATECONTROLB" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST", - "method": "PUT" - } - }, - "name": "Expediagroup GEO list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "53076_EXPEDIAGROUPGEOLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST", - "method": "PUT" - } - }, - "name": "Expediagroup White list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53075_EXPEDIAGROUPWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST", - "method": "PUT" - } - }, - "name": "Expediagroup Black list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53074_EXPEDIAGROUPBLACKLIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK", - "method": "PUT" - } - }, - "name": "API_GEOBlock", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "52783_APIGEOBLOCK" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Duo)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "52771_REPUTATIONWHITELISTDUO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO", - "method": "PUT" - } - }, - "name": "Security Bypass List - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "52768_SECURITYBYPASSLISTDUO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO", - "method": "PUT" - } - }, - "name": "Geo Blacklist - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "52767_GEOBLACKLISTDUO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU", - "method": "PUT" - } - }, - "name": "IP Blacklist Exception - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "52766_IPBLACKLISTEXCEPTIONDU" - }, - { - "elementCount": 468, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS", - "method": "PUT" - } - }, - "name": "A2 Servers", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 15, - "type": "IP", - "uniqueId": "16656_CPISERVERS" - }, - { - "elementCount": 349, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS", - "method": "PUT" - } - }, - "name": "FEO Servers", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 12, - "type": "IP", - "uniqueId": "7054_FEOSERVERS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK", - "method": "PUT" - } - }, - "name": "Egencia GEO Block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "51561_EGENCIAGEOBLOCK" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - Other", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50640_WAFBYPASSWHITELISTOTHE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - AWS NATs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50638_WAFBYPASSWHITELISTAWS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - CallCenter", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50636_WAFBYPASSWHITELISTCALL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - partner", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50635_WAFBYPASSWHITELISTPART" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "splitting up the hopscotch list for easier management", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - DC", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50634_WAFBYPASSWHITELISTDC" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 10, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST", - "method": "PUT" - } - }, - "name": "hoteis.com GEO list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "GEO", - "uniqueId": "50337_HOTEISCOMGEOLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS", - "method": "PUT" - } - }, - "name": "Confluence Okta_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50278_CONFLUENCEOKTARCWHITELIS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS", - "method": "PUT" - } - }, - "name": "Confluence Okta_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50277_CONFLUENCEOKTABYPASS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST", - "method": "PUT" - } - }, - "name": "LegacyOrbitz GEO BlackList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "49997_LEGACYORBITZBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST", - "method": "PUT" - } - }, - "name": "LegacyOrbitz Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49995_LEGACYORBITZWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST", - "method": "PUT" - } - }, - "name": "CPI_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49620_CPIRCWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS", - "method": "PUT" - } - }, - "name": "CPI_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49618_CPIBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS", - "method": "PUT" - } - }, - "name": "ADT - Rate Controls Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49186_ADTRATECONTROLSBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "ADT - Geo Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "49182_ADTGEOBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED", - "method": "PUT" - } - }, - "name": "Hotels Brand GEO List (Used by Custom Bots)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "GEO", - "uniqueId": "47882_HOTELSBRANDGEOLISTUSED" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS", - "method": "PUT" - } - }, - "name": "legacyOrbitz_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "47546_LEGACYORBITZBYPASS" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST", - "method": "PUT" - } - }, - "name": "Digital Ocean Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "47517_DIGITALOCEANWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK", - "method": "PUT" - } - }, - "name": "CarRentals Geo Block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "46790_CARRENTALSGEOBLOCK" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "EPC GEO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "45956_EPCGEOBLACKLIST" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS", - "method": "PUT" - } - }, - "name": "EPC Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "45954_EPCBYPASS" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "EPC GEO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "45953_EPCGEOBLACKLIST" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST", - "method": "PUT" - } - }, - "name": "EPC Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "45952_EPCWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (ECSC)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "44832_REPUTATIONWHITELISTECSC" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "ECSC-GEO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "44831_ECSCGEOBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST", - "method": "PUT" - } - }, - "name": "ECSC-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "44827_ECSCWHITELIST" - }, - { - "accessControlGroup": "Classic Vacations - 3-TE78Q.G83605", - "description": "Classic Vacations Whitelist for", - "elementCount": 17, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST", - "method": "PUT" - } - }, - "name": "Classic Vacations Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 6, - "type": "IP", - "uniqueId": "31075_CLASSICVACATIONSWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST", - "method": "PUT" - } - }, - "name": "Egencia Brand Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "43172_EGENCIABRANDWHITELIST" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS", - "method": "PUT" - } - }, - "name": "Hotels Brand Rate Controls Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "42688_HOTELSBRANDRATECONTROLS" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "Hotels Brand Geo Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "42687_HOTELSBRANDGEOBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS", - "method": "PUT" - } - }, - "name": "Confluence_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "42666_CONFLUENCEBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST", - "method": "PUT" - } - }, - "name": "Confluence_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "42665_CONFLUENCERCWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP", - "method": "PUT" - } - }, - "name": "BM rollout-IP", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "40730_BMROLLOUTIP" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO", - "method": "PUT" - } - }, - "name": "BM rollout-GEO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "GEO", - "uniqueId": "40731_BMROLLOUTGEO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP", - "method": "PUT" - } - }, - "name": "Not Used _3-TE78Q ION", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "40712_BMROLLOUTIP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO", - "method": "PUT" - } - }, - "name": "Not Used_3-TE78Q ION", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "GEO", - "uniqueId": "40713_BMROLLOUTGEO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "case F-CS-2759696", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE", - "method": "PUT" - } - }, - "name": "GEO-Block Hotwire", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "GEO", - "uniqueId": "40548_GEOBLOCKHOTWIRE" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Github)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "40198_REPUTATIONWHITELISTGITHU" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS", - "method": "PUT" - } - }, - "name": "Github Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "40197_GITHUBBYPASS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST", - "method": "PUT" - } - }, - "name": "TEMP Geo-Block List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "40016_TEMPGEOBLOCKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST", - "method": "PUT" - } - }, - "name": "TEMP IP White List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "40014_TEMPIPWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Expedia WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "37172_REPUTATIONWHITELISTEXPED" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST", - "method": "PUT" - } - }, - "name": "Jira_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "34616_JIRARCWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS", - "method": "PUT" - } - }, - "name": "Jira_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "34613_JIRABYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS", - "method": "PUT" - } - }, - "name": "test3", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "32383_EANRATECONTROLBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST", - "method": "PUT" - } - }, - "name": "test2", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "32378_RATECONTROLSBYPASSLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS", - "method": "PUT" - } - }, - "name": "EAN Rate Control bypass list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "32384_EANRATECONTROLBYPASSLIS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF", - "method": "PUT" - } - }, - "name": "Partner_turnoff", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "31755_PARTNERTURNOFF" - }, - { - "description": "reactivate to hide the variable. for Jira LUNADEVESC-5134", - "elementCount": 400, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS", - "method": "PUT" - } - }, - "name": "Keynote Agents", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 5, - "type": "IP", - "uniqueId": "1025_KEYNOTEAGENTS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 186, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST", - "method": "PUT" - } - }, - "name": "Call Center Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "26372_CALLCENTERWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST", - "method": "PUT" - } - }, - "name": "HomeAway IP whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "25066_HOMEAWAYIPWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK", - "method": "PUT" - } - }, - "name": "HomeAway Geo Block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "25065_HOMEAWAYGEOBLOCK" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK", - "method": "PUT" - } - }, - "name": "HomeAway IP block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "25064_IPBLOCK" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 216, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/18511_AS37963/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/18511_AS37963" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/18511_AS37963", - "method": "PUT" - } - }, - "name": "AS37963", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "18511_AS37963" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS", - "method": "PUT" - } - }, - "name": "Classic vacations waf bypass list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "17403_CLASSICVACATIONSWAFBYPAS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST", - "method": "PUT" - } - }, - "name": "Classic vacations whitelist exception to network control", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "17402_CLASSICVACATIONSWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK", - "method": "PUT" - } - }, - "name": "Classic vacations Geo Black list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "17401_CLASSICVACATIONSGEOBLACK" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "EAN Geo Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "16865_EANGEOBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST", - "method": "PUT" - } - }, - "name": "EAN IP Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "16863_EANIPWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Egencia WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "9818_REPUTATIONWHITELISTEGENC" - }, - { - "elementCount": 27, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST", - "method": "PUT" - } - }, - "name": "International Traffic in Arms Regulations (ITAR) List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 9, - "type": "GEO", - "uniqueId": "968_ITARCOUNTRYLIST" - }, - { - "elementCount": 22, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST", - "method": "PUT" - } - }, - "name": "International Emergency Economic Powers Act (IEEPA) List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 3, - "type": "GEO", - "uniqueId": "969_IEEPACOUNTRYLIST" - }, - { - "elementCount": 18, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST", - "method": "PUT" - } - }, - "name": "Office of Foreign Asset Control (OFAC) List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 4, - "type": "GEO", - "uniqueId": "967_OFACCOUNTRYLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST", - "method": "PUT" - } - }, - "name": "Reputation Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "6986_REPUTATIONWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 4113, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC", - "method": "PUT" - } - }, - "name": "Tor Exit Nodes - Static", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "5627_TOREXITNODESSTATIC" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS", - "method": "PUT" - } - }, - "name": "test access", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "3453_TESTACCESS" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI", - "method": "PUT" - } - }, - "name": "Voyager Call Center Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "2275_VOYAGERCALLCENTERWHITELI" - } - ] - } -] \ No newline at end of file diff --git a/pkg/providers/networklists/testdata/TestResNetworkListDescription/match_by_id.tf b/pkg/providers/networklists/testdata/TestResNetworkListDescription/match_by_id.tf deleted file mode 100644 index 2c9d8fa9d..000000000 --- a/pkg/providers/networklists/testdata/TestResNetworkListDescription/match_by_id.tf +++ /dev/null @@ -1,11 +0,0 @@ -provider "akamai" { - edgerc = "~/.edgerc_network" -} - - -resource "akamai_networklist_network_list_description" "test" { - uniqueid = "79536_MARTINNETWORKLIST" - name = "Martin Network List" - description = "Notes about this network list" - } - diff --git a/pkg/providers/networklists/testdata/TestResNetworkListSubscription/NetworkListSubscription.json b/pkg/providers/networklists/testdata/TestResNetworkListSubscription/NetworkListSubscription.json deleted file mode 100644 index 65de94ec1..000000000 --- a/pkg/providers/networklists/testdata/TestResNetworkListSubscription/NetworkListSubscription.json +++ /dev/null @@ -1,8541 +0,0 @@ -[ - { - "links": { - "create": { - "href": "/network-list/v2/network-lists", - "method": "POST" - } - }, - "networkLists": [ - { - "elementCount": 1716, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/365_AKAMAITOREXITNODES", - "method": "PUT" - } - }, - "name": "Tor Akamai Network List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 43422, - "type": "IP", - "uniqueId": "365_AKAMAITOREXITNODES" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "https://confluence.expedia.biz/display/EITCOLLAB/GitHub+EG+IP+Whitelist", - "elementCount": 915, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/41750_GITHUBWHITELIST", - "method": "PUT" - } - }, - "name": "Github WhiteList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 293, - "type": "IP", - "uniqueId": "41750_GITHUBWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 126, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55687_JENKINSLABWHITELIST", - "method": "PUT" - } - }, - "name": "jenkinslab whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 21, - "type": "IP", - "uniqueId": "55687_JENKINSLABWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Lab+IP+Whitelist", - "elementCount": 701, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40996_ARTYLABWHITELIST", - "method": "PUT" - } - }, - "name": "artylab-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 227, - "type": "IP", - "uniqueId": "40996_ARTYLABWHITELIST" - }, - { - "accessControlGroup": "GCO - 3-TE78Q.G150073", - "description": "Voyager Training SW", - "elementCount": 526, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/75597_VOYAGUERTRAININGSW", - "method": "PUT" - } - }, - "name": "Voyager Training SW", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "75597_VOYAGUERTRAININGSW" - }, - { - "elementCount": 523, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1024_AMAZONELASTICCOMPUTECLOU", - "method": "PUT" - } - }, - "name": "Ec2 Akamai Network List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 223, - "type": "IP", - "uniqueId": "1024_AMAZONELASTICCOMPUTECLOU" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "new office in London Victoria for Vrbo", - "elementCount": 355, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/34612_JIRAALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Jira Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 123, - "type": "IP", - "uniqueId": "34612_JIRAALLOWEDIPS" - }, - { - "elementCount": 3139, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1283_MICROSOFTWINDOWSAZUREDAT", - "method": "PUT" - } - }, - "name": "Azure IP range cloud services", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 426, - "type": "IP", - "uniqueId": "1283_MICROSOFTWINDOWSAZUREDAT" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "Whitelisting one more Akamai IP for testing", - "elementCount": 88, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40998_ARTYLABTESTWHITELIST", - "method": "PUT" - } - }, - "name": "artylab-test-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 28, - "type": "IP", - "uniqueId": "40998_ARTYLABTESTWHITELIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 24, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3379_EGENCIABRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Egencia Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "3379_EGENCIABRANDBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "https://confluence.expedia.biz/display/EITCOLLAB/Artifactory+Secure+IP+Whitelist", - "elementCount": 331, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40997_ARTYPRODWHITELIST", - "method": "PUT" - } - }, - "name": "artyprod-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 129, - "type": "IP", - "uniqueId": "40997_ARTYPRODWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to allow traffic on jenkinstest.expedia.biz", - "elementCount": 30, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53434_JENKINSTESTWHITELIST", - "method": "PUT" - } - }, - "name": "JenkinsTest Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 15, - "type": "IP", - "uniqueId": "53434_JENKINSTESTWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for fisheye.expedia.biz and fisheyetest.expedia.biz", - "elementCount": 135, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68757_FISHEYEWHITELIST", - "method": "PUT" - } - }, - "name": "Fisheye Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 10, - "type": "IP", - "uniqueId": "68757_FISHEYEWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for sonar.expedia.biz and sonartest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/Sonar+EG+IP+Whitelist", - "elementCount": 173, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68755_SONARWHITELIST", - "method": "PUT" - } - }, - "name": "Sonar Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 23, - "type": "IP", - "uniqueId": "68755_SONARWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for testrail.expedia.biz and testrailtest.expedia.biz\nhttps://confluence.expedia.biz/display/EITCOLLAB/TestRail+EG+IP+Whitelist", - "elementCount": 133, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68758_TESTRAILWHITELIST", - "method": "PUT" - } - }, - "name": "Testrail Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "68758_TESTRAILWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 62, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/67898_ALMBLOGWHITELIST", - "method": "PUT" - } - }, - "name": "alm-blog-whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 15, - "type": "IP", - "uniqueId": "67898_ALMBLOGWHITELIST" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "description": "Added 187.207.181.251, unwanted IP on hoteles.volaris.com\nAdded 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24 - Erik Mattison (ERS - Sec Eng)", - "elementCount": 3969, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1706_HOTELSBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Hotels Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 129, - "type": "IP", - "uniqueId": "1706_HOTELSBRANDBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "description": "F-CS-4083079", - "elementCount": 44, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/75756_EGENCIASISENSEWHITELIST", - "method": "PUT" - } - }, - "name": "Egencia Sisense Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "75756_EGENCIASISENSEWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/51562_EGENCIABYPASS", - "method": "PUT" - } - }, - "name": "Egencia Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "51562_EGENCIABYPASS" - }, - { - "elementCount": 2767, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/14121_IMAGEMANAGERSERVERS", - "method": "PUT" - } - }, - "name": "Image Manager Servers", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 63, - "type": "IP", - "uniqueId": "14121_IMAGEMANAGERSERVERS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 20, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40999_ARTYPRODTESTWHITELIST", - "method": "PUT" - } - }, - "name": "artyprod-test-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 14, - "type": "IP", - "uniqueId": "40999_ARTYPRODTESTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Lydia - Removing IP 216.251.120.10", - "elementCount": 465, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55214_SECURITYBYPASSLISTGCO", - "method": "PUT" - } - }, - "name": "Security Bypass List - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "55214_SECURITYBYPASSLISTGCO" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "description": "ExpediaPartnerCentral IP Blacklist - Added 5 entries per SOC (Erik M, Sec Eng)", - "elementCount": 50, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32620_EPCBLACKLIST", - "method": "PUT" - } - }, - "name": "EPC Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 18, - "type": "IP", - "uniqueId": "32620_EPCBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "DO NOT USE!!! Testing list for automation - see Erik Mattison", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/74967_TESTLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/74967_TESTLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/74967_TESTLIST", - "method": "PUT" - } - }, - "name": "Test-list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "74967_TESTLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "The whitelist for githubtest.expedia.biz", - "elementCount": 34, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45358_GITHUBTESTWHITELIST", - "method": "PUT" - } - }, - "name": "GitHubTest Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 17, - "type": "IP", - "uniqueId": "45358_GITHUBTESTWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 22, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68112_CHEFLAB", - "method": "PUT" - } - }, - "name": "ChefLab Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 6, - "type": "IP", - "uniqueId": "68112_CHEFLAB" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 47, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46789_CARRENTALSBYPASS", - "method": "PUT" - } - }, - "name": "CarRentals Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 7, - "type": "IP", - "uniqueId": "46789_CARRENTALSBYPASS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to allow traffic on jenkinsdecaf.expedia.biz", - "elementCount": 25, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53433_JENKINSDECAFWHITELIST", - "method": "PUT" - } - }, - "name": "JenkinsDecaf Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "53433_JENKINSDECAFWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53077_EXPEDIAGROUPBYPASS", - "method": "PUT" - } - }, - "name": "Expediagroup Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "53077_EXPEDIAGROUPBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Duplicating ADYEN addresses to this list", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52769_RATECONTROLSBYPASSLIST", - "method": "PUT" - } - }, - "name": "Rate Controls Bypass List - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52769_RATECONTROLSBYPASSLIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Adding Non Prod VPCs", - "elementCount": 74, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/48306_ODSIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/48306_ODSIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/48306_ODSIPS", - "method": "PUT" - } - }, - "name": "ODS IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 14, - "type": "IP", - "uniqueId": "48306_ODSIPS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP Whitelist for chefdecaf.expedia.biz, chefautodecaf.expedia.biz, chefsupermarketdecaf.expedia.biz", - "elementCount": 20, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68115_CHEFDECAF", - "method": "PUT" - } - }, - "name": "Chefdecaf Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "68115_CHEFDECAF" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP Whitelist for chefcorp.expedia.biz, chefautocorp.expedia.biz, chefsupermarketcorp.expedia.biz", - "elementCount": 54, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68113_CHEFCORP", - "method": "PUT" - } - }, - "name": "ChefCorp Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "68113_CHEFCORP" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68750_HOTWIREWAFBYPASS", - "method": "PUT" - } - }, - "name": "Hotwire WAF Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "68750_HOTWIREWAFBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "F-CS-3996326", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/72997_STRICTWHITELISTGCO", - "method": "PUT" - } - }, - "name": "Strict Whitelist – GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "72997_STRICTWHITELISTGCO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 9, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/72924_VAPE2EPRODSWL", - "method": "PUT" - } - }, - "name": "vap-e2e-prod SWL", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "72924_VAPE2EPRODSWL" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "description": "new office in London Victoria for Vrbo", - "elementCount": 73, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45955_LODGINGINTERNALWHITELIST", - "method": "PUT" - } - }, - "name": "Lodging Internal Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 16, - "type": "IP", - "uniqueId": "45955_LODGINGINTERNALWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "External IPs allowed to access JIRA. See https://confluence.expedia.biz/display/JIRA/JIRA+IP+Whitelisting", - "elementCount": 304, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69322_VRBOJIRATESTALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Vrbojiratest Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69322_VRBOJIRATESTALLOWEDIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 56, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/67897_ALMBLOGTESTWHITELIST", - "method": "PUT" - } - }, - "name": "alm-blogtest-whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "67897_ALMBLOGTESTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 71, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65037_EXPEDIAGROUPPUBLICIPS", - "method": "PUT" - } - }, - "name": "Expedia Group Public IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "65037_EXPEDIAGROUPPUBLICIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "List of EG owned/trusted IPs", - "elementCount": 67, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69033_EGTRUSTEDIPS", - "method": "PUT" - } - }, - "name": "EG Trusted IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69033_EGTRUSTEDIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "External IPs allowed to access Confluence. See https://confluence.expedia.biz/display/CON/Confluence+IP+Whitelisting", - "elementCount": 218, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42664_CONFLUENCEALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Confluence Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 38, - "type": "IP", - "uniqueId": "42664_CONFLUENCEALLOWEDIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Added 43.225.193.0/24, 203.122.25.0/24, 182.76.251.168/30, 125.63.103.0/24, 104.143.209.0/24, 122.162.205.0/24, 122.176.176.0/24, 103.72.8.217- Erik Mattison (ERS - Sec Eng)", - "elementCount": 24, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/5703_EXPEDIATEMPORARYBLACKLIST", - "method": "PUT" - } - }, - "name": "Expedia Temporary Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "5703_EXPEDIATEMPORARYBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/71830_EXPEDIAGROUPGLOBALBLACKL", - "method": "PUT" - } - }, - "name": "Expedia Group Global Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "71830_EXPEDIAGROUPGLOBALBLACKL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Deny-By-IP, Apple Verification (STGR-2439), AWS Egress (PROD-5148, PROD-5319), Vitality (PROD-5818), Bangalore Office (PSUP-34217)", - "elementCount": 835, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/64150_VITALITYIPLIST", - "method": "PUT" - } - }, - "name": "Staging Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 16, - "type": "IP", - "uniqueId": "64150_VITALITYIPLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17400_CLASSICVACATIONSBLACKLIS", - "method": "PUT" - } - }, - "name": "Classic vacations Black list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "17400_CLASSICVACATIONSBLACKLIS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "description": "Blocking 49.86.182.23 for scanning", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40015_TEMPIPBLACKLIST", - "method": "PUT" - } - }, - "name": "TEMP IP Black List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "40015_TEMPIPBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/2276_VOYAGERCALLCENTERBLACKLI", - "method": "PUT" - } - }, - "name": "Voyager Call Center Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "2276_VOYAGERCALLCENTERBLACKLI" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3402_VOYAGERLABBLACKLIST", - "method": "PUT" - } - }, - "name": "Voyager LAB Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "3402_VOYAGERLABBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 7, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/4308_HOTWIREBRANDQABLACKLIST", - "method": "PUT" - } - }, - "name": "Hotwire Brand QA Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "4308_HOTWIREBRANDQABLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 7, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3380_VENEREBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Venere Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "3380_VENEREBRANDBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 28, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/5624_VOYAGERCALLCENTERBLACKL", - "method": "PUT" - } - }, - "name": "Voyager PROD Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "5624_VOYAGERCALLCENTERBLACKL" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 137, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/2643_TRAVELOCITYBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Travelocity Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 19, - "type": "IP", - "uniqueId": "2643_TRAVELOCITYBRANDBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 19, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1538_VIABRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Via Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 6, - "type": "IP", - "uniqueId": "1538_VIABRANDBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 13, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16864_EANIPBLACKLIST", - "method": "PUT" - } - }, - "name": "EAN IP Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "16864_EANIPBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44828_ECSCBLACKLIST", - "method": "PUT" - } - }, - "name": "ECSC-Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "44828_ECSCBLACKLIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46787_CARRENTALSBLACKLIST", - "method": "PUT" - } - }, - "name": "CarRentals Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "46787_CARRENTALSBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49181_ADTIPBLACKLIST", - "method": "PUT" - } - }, - "name": "ADT - IP Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "49181_ADTIPBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49996_LEGACYORBITZBLACKLIST", - "method": "PUT" - } - }, - "name": "LegacyOrbitz BlackList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "49996_LEGACYORBITZBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52764_IPBLACKLISTDUO", - "method": "PUT" - } - }, - "name": "IP Blacklist - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52764_IPBLACKLISTDUO" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52782_APIBLACKLIST", - "method": "PUT" - } - }, - "name": "API_Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52782_APIBLACKLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53347_BLACKLISTJENKINS", - "method": "PUT" - } - }, - "name": "Blacklist_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "53347_BLACKLISTJENKINS" - }, - { - "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53726_GCOBLACKLIST", - "method": "PUT" - } - }, - "name": "GCO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "53726_GCOBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55211_IPBLACKLISTGCO", - "method": "PUT" - } - }, - "name": "IP Blacklist - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "55211_IPBLACKLISTGCO" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 15625, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1933_EXPEDIABRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Expedia Brand Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 71, - "type": "IP", - "uniqueId": "1933_EXPEDIABRANDBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "description": "Adding 64.15.129.112 as per approval from Narainder.", - "elementCount": 29, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1883_HOTWIREBRANDBLACKLIST", - "method": "PUT" - } - }, - "name": "Hotwire Brand Prod Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "1883_HOTWIREBRANDBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63705_EGPBLACKLIST", - "method": "PUT" - } - }, - "name": "EGP Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "63705_EGPBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69602_WORLDLINEPRODWHITELIST", - "method": "PUT" - } - }, - "name": "WorldLine Prod Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69602_WORLDLINEPRODWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "195.35.91.69195.35.90.70", - "elementCount": 8, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69603_WORLDPAYPRODWHITELIST", - "method": "PUT" - } - }, - "name": "WorldPay Prod Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "69603_WORLDPAYPRODWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP Whitelist for chefsecure.expedia.biz, chefautosecure.expedia.biz, chefsupermarketsecure.expedia.biz", - "elementCount": 28, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68114_CHEFSECURE", - "method": "PUT" - } - }, - "name": "ChefSecure Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "68114_CHEFSECURE" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 319, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42684_HOTELSBRANDBLACKLISTEXCE", - "method": "PUT" - } - }, - "name": "Hotels Brand Blacklist Exceptions", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "42684_HOTELSBRANDBLACKLISTEXCE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 323, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49178_ADTSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "ADT StrictWhitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 11, - "type": "IP", - "uniqueId": "49178_ADTSTRICTWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "VPN IP to Whitelist", - "elementCount": 12, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46788_CARRENTALSWHITELIST", - "method": "PUT" - } - }, - "name": "CarRentals Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 7, - "type": "IP", - "uniqueId": "46788_CARRENTALSWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "204.14.232.0/21", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70704_FSPSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "Placeholder", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "70704_FSPSTRICTWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "description": "204.14.232.0/21", - "elementCount": 27, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70705_FSPSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "FSP Strict Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "70705_FSPSTRICTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 27, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70568_SALESFORCEIPS", - "method": "PUT" - } - }, - "name": "SalesForce IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "70568_SALESFORCEIPS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "PROD-5818", - "elementCount": 49, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65875_ALLOWBYIP", - "method": "PUT" - } - }, - "name": "Vitality-IP-List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "65875_ALLOWBYIP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Iran APT IOC IPs addition to security controls\nJira ID - ERSST-2128", - "elementCount": 17, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/70327_IRANAPTIOCIPS", - "method": "PUT" - } - }, - "name": "Iran APT IOC IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "70327_IRANAPTIOCIPS" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "description": "Added as requested by Atit: Expedia Partner JIRA: (AK-88) Add Qualys CIDR to EAN IP Bypass List\n\nAdded Deloitte IPs as requested by Atit. AK-104\n\nAdded Rapid7 IPs per Atit. Ak-171", - "elementCount": 13, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16862_EANIPBYPASSLIST", - "method": "PUT" - } - }, - "name": "EAN IP Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 10, - "type": "IP", - "uniqueId": "16862_EANIPBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69601_ADYENPRODWHITELIST", - "method": "PUT" - } - }, - "name": "Adyen Prod Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "69601_ADYENPRODWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55215_RATECONTROLSBYPASSLIST", - "method": "PUT" - } - }, - "name": "Rate Controls Bypass List - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "55215_RATECONTROLSBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68764_WORLDPAYWHITELIST", - "method": "PUT" - } - }, - "name": "WorldPay Test Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "68764_WORLDPAYWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68765_WORLDLINEWHITELIST", - "method": "PUT" - } - }, - "name": "WorldLine Test Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "68765_WORLDLINEWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 10, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68762_ADYEN/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68762_ADYEN" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68762_ADYEN/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68762_ADYEN", - "method": "PUT" - } - }, - "name": "Adyen Test Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "68762_ADYEN" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40021_TEMPBYPASSLIST", - "method": "PUT" - } - }, - "name": "TEMP Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "40021_TEMPBYPASSLIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69324_VRBOJIRATESTBYPASS", - "method": "PUT" - } - }, - "name": "Vrbojiratest_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "69324_VRBOJIRATESTBYPASS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/69323_VRBOJIRATESTRCWHITELIST", - "method": "PUT" - } - }, - "name": "Vrbojiratest_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "69323_VRBOJIRATESTRCWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 16, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55919_BEXRATECONTROLBYPASS", - "method": "PUT" - } - }, - "name": "BEX Rate Control Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "55919_BEXRATECONTROLBYPASS" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "description": "HAK-86, PROD-6167", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68043_AWSEGRESSIPS", - "method": "PUT" - } - }, - "name": "AWS Egress IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "68043_AWSEGRESSIPS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "List of IPs allowed to access https://cheftest.expedia.biz", - "elementCount": 13, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68111_CHEFTEST", - "method": "PUT" - } - }, - "name": "ChefTest Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "68111_CHEFTEST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "IP whitelist for jenkinssecure.expedia.biz", - "elementCount": 39, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55686_JENKINSSECUREWHITELIST", - "method": "PUT" - } - }, - "name": "jenkinssecure whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "55686_JENKINSSECUREWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 6, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46792_REPUTATIONWHITELISTCARRE", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (CarRentals)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "46792_REPUTATIONWHITELISTCARRE" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Adding New Relic San Francisco EndPoints for Synthetics", - "elementCount": 11, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46791_CARRENTALSRATECONTROLBYP", - "method": "PUT" - } - }, - "name": "CarRentals Rate Control Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "46791_CARRENTALSRATECONTROLBYP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "F-CS-3817120\nES_Tuning - Rate Control Recommendations\nBy Akamai", - "elementCount": 14, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68495_RATECONTROLSWHITELIST", - "method": "PUT" - } - }, - "name": "Rate Controls Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "68495_RATECONTROLSWHITELIST" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/68344_REPUTATIONWHITELISTEANW", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (EAN WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "68344_REPUTATIONWHITELISTEANW" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 4, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52784_APIBYPASSLIST", - "method": "PUT" - } - }, - "name": "API_BypassList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "52784_APIBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/67900_EITSERVICES", - "method": "PUT" - } - }, - "name": "eIT Services", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "67900_EITSERVICES" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 16, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/9606_REPUTATIONWHITELISTHOTEL", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Hotels)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 7, - "type": "IP", - "uniqueId": "9606_REPUTATIONWHITELISTHOTEL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/66858_WAFBYPASSFORDENYBYIP", - "method": "PUT" - } - }, - "name": "WAF Bypass for \"DENY-By-IP-Policy\"", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "66858_WAFBYPASSFORDENYBYIP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "PROD-5839, HAK-81\nTarget: apihotels.net", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65265_AWSBAMBOOWHITELIST", - "method": "PUT" - } - }, - "name": "API Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "65265_AWSBAMBOOWHITELIST" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65827_REPUTATIONWHITELISTEITE", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (eIT Extranet Services)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "65827_REPUTATIONWHITELISTEITE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 20, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49185_ADTWAFBYPASSLIST", - "method": "PUT" - } - }, - "name": "ADT - WAF Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "49185_ADTWAFBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65654_GEONETWORKLIST", - "method": "PUT" - } - }, - "name": "Geo - Network List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "65654_GEONETWORKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65653_IPBLOCKLISTEXCEPTION", - "method": "PUT" - } - }, - "name": "IP Block List Exception", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "65653_IPBLOCKLISTEXCEPTION" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/65651_AMEXWHITELIST", - "method": "PUT" - } - }, - "name": "Amex Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "65651_AMEXWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Adding EG DAST IPs", - "elementCount": 3, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53725_PARTNERWHITELIST", - "method": "PUT" - } - }, - "name": "CarRentals Partner Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "53725_PARTNERWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/9833_REPUTATIONWHITELISTHOTWI", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Hotwire WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "9833_REPUTATIONWHITELISTHOTWI" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44829_ECSCBYPASS", - "method": "PUT" - } - }, - "name": "ECSC-Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "44829_ECSCBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", - "elementCount": 213, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49617_CPIALLOWEDIPS", - "method": "PUT" - } - }, - "name": "CPI Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "49617_CPIALLOWEDIPS" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 29, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/48307_CUSTOMERCLIENTIPS", - "method": "PUT" - } - }, - "name": "Customer Client IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 10, - "type": "IP", - "uniqueId": "48307_CUSTOMERCLIENTIPS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 9, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53659_EGENCIASTRICTWL", - "method": "PUT" - } - }, - "name": "Egencia StrictWL", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "53659_EGENCIASTRICTWL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "External IPs allowed to access JIRA. See https://confluence/display/CON/Confluence+IP+Whitelisting", - "elementCount": 213, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50276_CONFLUENCEOKTAALLOWEDIPS", - "method": "PUT" - } - }, - "name": "Confluence Okta Allowed IPs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "50276_CONFLUENCEOKTAALLOWEDIPS" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 58, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44833_APPSTRICTWHITELIST", - "method": "PUT" - } - }, - "name": "App Strict Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "44833_APPSTRICTWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 37, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/26371_CORPORATEHQWHITELIST", - "method": "PUT" - } - }, - "name": "Corporate HQ Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "26371_CORPORATEHQWHITELIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 342, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3324_VOYAGERLABWHITELIST", - "method": "PUT" - } - }, - "name": "Voyager LAB Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 12, - "type": "IP", - "uniqueId": "3324_VOYAGERLABWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "List of allowed IPs for ALM GitHub Enterprise", - "elementCount": 18, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40196_GITHUBWHITELIST", - "method": "PUT" - } - }, - "name": "bogus-github-whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "40196_GITHUBWHITELIST" - }, - { - "description": "The Akamai Portal Test Center is a tool that you can use to test configuration changes. To take advantage of the Test Center, you must ensure that test requests coming from the Test Center are not blocked, by whitelisting this list in your WAF policies.", - "elementCount": 12, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46506_AKAMAIPORTALTESTCENTERA", - "method": "PUT" - } - }, - "name": "Akamai Test Center (ATC) Agents", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 2, - "type": "IP", - "uniqueId": "46506_AKAMAIPORTALTESTCENTERA" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 227, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1327_AKAMAIFIREWALL", - "method": "PUT" - } - }, - "name": "Akamai Firewall", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "1327_AKAMAIFIREWALL" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63829_REPUTATIONWHITELISTENTER", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Enterprise Solutions)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63829_REPUTATIONWHITELISTENTER" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63708_REPUTATIONWHITELISTEGP", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (EGP)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63708_REPUTATIONWHITELISTEGP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63707_EGPGEOLIST", - "method": "PUT" - } - }, - "name": "EGP Geolist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "63707_EGPGEOLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63706_EGPBYPASSLIST", - "method": "PUT" - } - }, - "name": "EGP Bypasslist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63706_EGPBYPASSLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/63704_EGPWHITELIST", - "method": "PUT" - } - }, - "name": "EGP Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "63704_EGPWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Allow Traffic from One UI Tool", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52781_APIWHITELIST", - "method": "PUT" - } - }, - "name": "API_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "52781_APIWHITELIST" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 75, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42686_HOTELSBRANDWAFBYPASS", - "method": "PUT" - } - }, - "name": "Hotels Brand WAF Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "IP", - "uniqueId": "42686_HOTELSBRANDWAFBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50637_WAFBYPASSWHITELISTOFFI", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - Offices", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "50637_WAFBYPASSWHITELISTOFFI" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 68, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44830_ECSCRCBYPASS", - "method": "PUT" - } - }, - "name": "ECSC-RC Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "44830_ECSCRCBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 30, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/62642_WAFSECURITYFILERATEBYP", - "method": "PUT" - } - }, - "name": "WAF Security File- Rate Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "62642_WAFSECURITYFILERATEBYP" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 9, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/886_WAFBYPASSIPLISTHOTWIR", - "method": "PUT" - } - }, - "name": "WAF bypass IP list - Hotwire QA", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "886_WAFBYPASSIPLISTHOTWIR" - }, - { - "accessControlGroup": "expedia_mk - 3-TE78Q.G113242", - "elementCount": 10, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/60322_HOTELSBRANDWHITELISTFR", - "method": "PUT" - } - }, - "name": "Hotels Brand - Whitelist from Custom Rule 621882", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "60322_HOTELSBRANDWHITELISTFR" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Testing the Network list automation using API and Flyte-Akamai chatbot, https://jira.hcom/browse/PLATFORM-461", - "elementCount": 18, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50114_TESTPLATFORM461", - "method": "PUT" - } - }, - "name": "test-PLATFORM-461", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 48, - "type": "IP", - "uniqueId": "50114_TESTPLATFORM461" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Negative match fro rate controls", - "elementCount": 2, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50628_HOTWIRERATECONTROLEXCEPT", - "method": "PUT" - } - }, - "name": "Hotwire Rate Control Exceptions", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "50628_HOTWIRERATECONTROLEXCEPT" - }, - { - "description": "Gomez synthetic monitoring network", - "elementCount": 104, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1026_GOMEZCOMPUWAREAGENTS", - "method": "PUT" - } - }, - "name": "Gomez (Compuware) Agents", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 4, - "type": "IP", - "uniqueId": "1026_GOMEZCOMPUWAREAGENTS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55664_REPUTATIONWHITELISTGCO", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (GCO)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "55664_REPUTATIONWHITELISTGCO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55213_GEOBLACKLISTGCO", - "method": "PUT" - } - }, - "name": "Geo Blacklist - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "55213_GEOBLACKLISTGCO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/55212_IPBLACKLISTEXCEPTIONGC", - "method": "PUT" - } - }, - "name": "IP Blacklist Exception - GCO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "55212_IPBLACKLISTEXCEPTIONGC" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Added 203.37.166.130, new origin IP for .com.au", - "elementCount": 250, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/6487_WAFBYPASSWHITELISTHOPS", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - Hopscotch", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 38, - "type": "IP", - "uniqueId": "6487_WAFBYPASSWHITELISTHOPS" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "description": "Added 72.246.0.10 & 72.246.0.22 as requested by Jim George.", - "elementCount": 143, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/48308_AKAMAICRACKER2ANDCRACKE", - "method": "PUT" - } - }, - "name": "Akamai Cracker 2 and Cracker 3 IPs for testing purposes", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "48308_AKAMAICRACKER2ANDCRACKE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/54056_AKAMAIINTERNALTESTING", - "method": "PUT" - } - }, - "name": "Akamai_Internal_Testing", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "54056_AKAMAIINTERNALTESTING" - }, - { - "accessControlGroup": "IPA Hotwire - 3-4168BG", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53355_REPUTATIONWHITELISTJENKI", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Jenkins)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53355_REPUTATIONWHITELISTJENKI" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to bypass rate controls on Jenkins config, jenkins policy", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53351_RATECONTROLBYPASSLISTJ", - "method": "PUT" - } - }, - "name": "Rate Control Bypass List _Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53351_RATECONTROLBYPASSLISTJ" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "Exclusion from blacklist", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53349_WHITELISTJENKINS", - "method": "PUT" - } - }, - "name": "Whitelist_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53349_WHITELISTJENKINS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53348_GEOBLACKLISTJENKINS", - "method": "PUT" - } - }, - "name": "GEO Blacklist_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "53348_GEOBLACKLISTJENKINS" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "description": "to bypass WAF on Jenkins Policy, Jenkins config", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53345_WAFBYPASSLISTJENKINS", - "method": "PUT" - } - }, - "name": "WAF Bypass List_Jenkins", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53345_WAFBYPASSLISTJENKINS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53080_REPUTATIONWHITELISTERS", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (ERS)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53080_REPUTATIONWHITELISTERS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53079_EXPEDIAGROUPRATECONTROLB", - "method": "PUT" - } - }, - "name": "Expediagroup Rate Control Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53079_EXPEDIAGROUPRATECONTROLB" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53076_EXPEDIAGROUPGEOLIST", - "method": "PUT" - } - }, - "name": "Expediagroup GEO list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "53076_EXPEDIAGROUPGEOLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53075_EXPEDIAGROUPWHITELIST", - "method": "PUT" - } - }, - "name": "Expediagroup White list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53075_EXPEDIAGROUPWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/53074_EXPEDIAGROUPBLACKLIST", - "method": "PUT" - } - }, - "name": "Expediagroup Black list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "53074_EXPEDIAGROUPBLACKLIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52783_APIGEOBLOCK", - "method": "PUT" - } - }, - "name": "API_GEOBlock", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "52783_APIGEOBLOCK" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52771_REPUTATIONWHITELISTDUO", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Duo)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "52771_REPUTATIONWHITELISTDUO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52768_SECURITYBYPASSLISTDUO", - "method": "PUT" - } - }, - "name": "Security Bypass List - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "52768_SECURITYBYPASSLISTDUO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52767_GEOBLACKLISTDUO", - "method": "PUT" - } - }, - "name": "Geo Blacklist - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "52767_GEOBLACKLISTDUO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/52766_IPBLACKLISTEXCEPTIONDU", - "method": "PUT" - } - }, - "name": "IP Blacklist Exception - Duo", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "52766_IPBLACKLISTEXCEPTIONDU" - }, - { - "elementCount": 468, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16656_CPISERVERS", - "method": "PUT" - } - }, - "name": "A2 Servers", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 15, - "type": "IP", - "uniqueId": "16656_CPISERVERS" - }, - { - "elementCount": 349, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/7054_FEOSERVERS", - "method": "PUT" - } - }, - "name": "FEO Servers", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 12, - "type": "IP", - "uniqueId": "7054_FEOSERVERS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/51561_EGENCIAGEOBLOCK", - "method": "PUT" - } - }, - "name": "Egencia GEO Block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "51561_EGENCIAGEOBLOCK" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50640_WAFBYPASSWHITELISTOTHE", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - Other", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50640_WAFBYPASSWHITELISTOTHE" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50638_WAFBYPASSWHITELISTAWS", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - AWS NATs", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50638_WAFBYPASSWHITELISTAWS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50636_WAFBYPASSWHITELISTCALL", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - CallCenter", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50636_WAFBYPASSWHITELISTCALL" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "Splitting up Hopscotch whitelist to improve management.", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50635_WAFBYPASSWHITELISTPART", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - partner", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50635_WAFBYPASSWHITELISTPART" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "splitting up the hopscotch list for easier management", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50634_WAFBYPASSWHITELISTDC", - "method": "PUT" - } - }, - "name": "WAF Bypass Whitelist - DC", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50634_WAFBYPASSWHITELISTDC" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 10, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50337_HOTEISCOMGEOLIST", - "method": "PUT" - } - }, - "name": "hoteis.com GEO list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "GEO", - "uniqueId": "50337_HOTEISCOMGEOLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50278_CONFLUENCEOKTARCWHITELIS", - "method": "PUT" - } - }, - "name": "Confluence Okta_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50278_CONFLUENCEOKTARCWHITELIS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/50277_CONFLUENCEOKTABYPASS", - "method": "PUT" - } - }, - "name": "Confluence Okta_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "50277_CONFLUENCEOKTABYPASS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49997_LEGACYORBITZBLACKLIST", - "method": "PUT" - } - }, - "name": "LegacyOrbitz GEO BlackList", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "49997_LEGACYORBITZBLACKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49995_LEGACYORBITZWHITELIST", - "method": "PUT" - } - }, - "name": "LegacyOrbitz Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49995_LEGACYORBITZWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49620_CPIRCWHITELIST", - "method": "PUT" - } - }, - "name": "CPI_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49620_CPIRCWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49618_CPIBYPASS", - "method": "PUT" - } - }, - "name": "CPI_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49618_CPIBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49186_ADTRATECONTROLSBYPASS", - "method": "PUT" - } - }, - "name": "ADT - Rate Controls Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "49186_ADTRATECONTROLSBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/49182_ADTGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "ADT - Geo Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "49182_ADTGEOBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/47882_HOTELSBRANDGEOLISTUSED", - "method": "PUT" - } - }, - "name": "Hotels Brand GEO List (Used by Custom Bots)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "GEO", - "uniqueId": "47882_HOTELSBRANDGEOLISTUSED" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/47546_LEGACYORBITZBYPASS", - "method": "PUT" - } - }, - "name": "legacyOrbitz_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "47546_LEGACYORBITZBYPASS" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/47517_DIGITALOCEANWHITELIST", - "method": "PUT" - } - }, - "name": "Digital Ocean Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "47517_DIGITALOCEANWHITELIST" - }, - { - "accessControlGroup": "Car Rentals - 3-TE78Q.G116804", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/46790_CARRENTALSGEOBLOCK", - "method": "PUT" - } - }, - "name": "CarRentals Geo Block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "46790_CARRENTALSGEOBLOCK" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45956_EPCGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "EPC GEO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "45956_EPCGEOBLACKLIST" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45954_EPCBYPASS", - "method": "PUT" - } - }, - "name": "EPC Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "45954_EPCBYPASS" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45953_EPCGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "EPC GEO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "45953_EPCGEOBLACKLIST" - }, - { - "accessControlGroup": "EPC - 3-TE78Q.G82853", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/45952_EPCWHITELIST", - "method": "PUT" - } - }, - "name": "EPC Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "45952_EPCWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44832_REPUTATIONWHITELISTECSC", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (ECSC)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "44832_REPUTATIONWHITELISTECSC" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44831_ECSCGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "ECSC-GEO Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "44831_ECSCGEOBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/44827_ECSCWHITELIST", - "method": "PUT" - } - }, - "name": "ECSC-Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "44827_ECSCWHITELIST" - }, - { - "accessControlGroup": "Classic Vacations - 3-TE78Q.G83605", - "description": "Classic Vacations Whitelist for", - "elementCount": 17, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/31075_CLASSICVACATIONSWHITELIST", - "method": "PUT" - } - }, - "name": "Classic Vacations Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 6, - "type": "IP", - "uniqueId": "31075_CLASSICVACATIONSWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/43172_EGENCIABRANDWHITELIST", - "method": "PUT" - } - }, - "name": "Egencia Brand Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "43172_EGENCIABRANDWHITELIST" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42688_HOTELSBRANDRATECONTROLS", - "method": "PUT" - } - }, - "name": "Hotels Brand Rate Controls Bypass List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "42688_HOTELSBRANDRATECONTROLS" - }, - { - "accessControlGroup": "exped_mk_101288 - 3-TE78Q.G112742", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42687_HOTELSBRANDGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "Hotels Brand Geo Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "42687_HOTELSBRANDGEOBLACKLIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42666_CONFLUENCEBYPASS", - "method": "PUT" - } - }, - "name": "Confluence_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "42666_CONFLUENCEBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/42665_CONFLUENCERCWHITELIST", - "method": "PUT" - } - }, - "name": "Confluence_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "42665_CONFLUENCERCWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40730_BMROLLOUTIP", - "method": "PUT" - } - }, - "name": "BM rollout-IP", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "IP", - "uniqueId": "40730_BMROLLOUTIP" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40731_BMROLLOUTGEO", - "method": "PUT" - } - }, - "name": "BM rollout-GEO", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 8, - "type": "GEO", - "uniqueId": "40731_BMROLLOUTGEO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40712_BMROLLOUTIP", - "method": "PUT" - } - }, - "name": "Not Used _3-TE78Q ION", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 5, - "type": "IP", - "uniqueId": "40712_BMROLLOUTIP" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40713_BMROLLOUTGEO", - "method": "PUT" - } - }, - "name": "Not Used_3-TE78Q ION", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 4, - "type": "GEO", - "uniqueId": "40713_BMROLLOUTGEO" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "description": "case F-CS-2759696", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40548_GEOBLOCKHOTWIRE", - "method": "PUT" - } - }, - "name": "GEO-Block Hotwire", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "GEO", - "uniqueId": "40548_GEOBLOCKHOTWIRE" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40198_REPUTATIONWHITELISTGITHU", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Github)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "40198_REPUTATIONWHITELISTGITHU" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40197_GITHUBBYPASS", - "method": "PUT" - } - }, - "name": "Github Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "40197_GITHUBBYPASS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40016_TEMPGEOBLOCKLIST", - "method": "PUT" - } - }, - "name": "TEMP Geo-Block List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "40016_TEMPGEOBLOCKLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/40014_TEMPIPWHITELIST", - "method": "PUT" - } - }, - "name": "TEMP IP White List", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "40014_TEMPIPWHITELIST" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/37172_REPUTATIONWHITELISTEXPED", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Expedia WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "37172_REPUTATIONWHITELISTEXPED" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/34616_JIRARCWHITELIST", - "method": "PUT" - } - }, - "name": "Jira_RC_Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "34616_JIRARCWHITELIST" - }, - { - "accessControlGroup": "ALM - 3-TE78Q.G112653", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/34613_JIRABYPASS", - "method": "PUT" - } - }, - "name": "Jira_Bypass", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "34613_JIRABYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32383_EANRATECONTROLBYPASS", - "method": "PUT" - } - }, - "name": "test3", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "32383_EANRATECONTROLBYPASS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32378_RATECONTROLSBYPASSLIST", - "method": "PUT" - } - }, - "name": "test2", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 2, - "type": "IP", - "uniqueId": "32378_RATECONTROLSBYPASSLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/32384_EANRATECONTROLBYPASSLIS", - "method": "PUT" - } - }, - "name": "EAN Rate Control bypass list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "32384_EANRATECONTROLBYPASSLIS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/31755_PARTNERTURNOFF", - "method": "PUT" - } - }, - "name": "Partner_turnoff", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "31755_PARTNERTURNOFF" - }, - { - "description": "reactivate to hide the variable. for Jira LUNADEVESC-5134", - "elementCount": 400, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/1025_KEYNOTEAGENTS", - "method": "PUT" - } - }, - "name": "Keynote Agents", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 5, - "type": "IP", - "uniqueId": "1025_KEYNOTEAGENTS" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 186, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/26372_CALLCENTERWHITELIST", - "method": "PUT" - } - }, - "name": "Call Center Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "26372_CALLCENTERWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/25066_HOMEAWAYIPWHITELIST", - "method": "PUT" - } - }, - "name": "HomeAway IP whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "25066_HOMEAWAYIPWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/25065_HOMEAWAYGEOBLOCK", - "method": "PUT" - } - }, - "name": "HomeAway Geo Block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "25065_HOMEAWAYGEOBLOCK" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/25064_IPBLOCK", - "method": "PUT" - } - }, - "name": "HomeAway IP block", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "25064_IPBLOCK" - }, - { - "accessControlGroup": "3-TE78Q ION - 3-TE78Q.G17244", - "elementCount": 216, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/18511_AS37963/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/18511_AS37963" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/18511_AS37963/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/18511_AS37963", - "method": "PUT" - } - }, - "name": "AS37963", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "18511_AS37963" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17403_CLASSICVACATIONSWAFBYPAS", - "method": "PUT" - } - }, - "name": "Classic vacations waf bypass list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "17403_CLASSICVACATIONSWAFBYPAS" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17402_CLASSICVACATIONSWHITELIST", - "method": "PUT" - } - }, - "name": "Classic vacations whitelist exception to network control", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "17402_CLASSICVACATIONSWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/17401_CLASSICVACATIONSGEOBLACK", - "method": "PUT" - } - }, - "name": "Classic vacations Geo Black list", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "17401_CLASSICVACATIONSGEOBLACK" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16865_EANGEOBLACKLIST", - "method": "PUT" - } - }, - "name": "EAN Geo Blacklist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "GEO", - "uniqueId": "16865_EANGEOBLACKLIST" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/16863_EANIPWHITELIST", - "method": "PUT" - } - }, - "name": "EAN IP Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "16863_EANIPWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/9818_REPUTATIONWHITELISTEGENC", - "method": "PUT" - } - }, - "name": "Reputation Whitelist (Egencia WAF)", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "9818_REPUTATIONWHITELISTEGENC" - }, - { - "elementCount": 27, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/968_ITARCOUNTRYLIST", - "method": "PUT" - } - }, - "name": "International Traffic in Arms Regulations (ITAR) List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 9, - "type": "GEO", - "uniqueId": "968_ITARCOUNTRYLIST" - }, - { - "elementCount": 22, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/969_IEEPACOUNTRYLIST", - "method": "PUT" - } - }, - "name": "International Emergency Economic Powers Act (IEEPA) List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 3, - "type": "GEO", - "uniqueId": "969_IEEPACOUNTRYLIST" - }, - { - "elementCount": 18, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/967_OFACCOUNTRYLIST", - "method": "PUT" - } - }, - "name": "Office of Foreign Asset Control (OFAC) List", - "networkListType": "networkListResponse", - "readOnly": true, - "shared": true, - "syncPoint": 4, - "type": "GEO", - "uniqueId": "967_OFACCOUNTRYLIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/6986_REPUTATIONWHITELIST", - "method": "PUT" - } - }, - "name": "Reputation Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "6986_REPUTATIONWHITELIST" - }, - { - "accessControlGroup": "EGENCIA - 3-TE78Q.G122736", - "elementCount": 4113, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/5627_TOREXITNODESSTATIC", - "method": "PUT" - } - }, - "name": "Tor Exit Nodes - Static", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 3, - "type": "IP", - "uniqueId": "5627_TOREXITNODESSTATIC" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 1, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/3453_TESTACCESS", - "method": "PUT" - } - }, - "name": "test access", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 1, - "type": "IP", - "uniqueId": "3453_TESTACCESS" - }, - { - "accessControlGroup": " Kona Site Defender - C-D5TW8R - C-D5TW8R.G31325", - "elementCount": 0, - "links": { - "activateInProduction": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/activate", - "method": "POST" - }, - "activateInStaging": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/activate", - "method": "POST" - }, - "appendItems": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/append", - "method": "POST" - }, - "retrieve": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI" - }, - "statusInProduction": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/PRODUCTION/status" - }, - "statusInStaging": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI/environments/STAGING/status" - }, - "update": { - "href": "/network-list/v2/network-lists/2275_VOYAGERCALLCENTERWHITELI", - "method": "PUT" - } - }, - "name": "Voyager Call Center Whitelist", - "networkListType": "networkListResponse", - "readOnly": false, - "shared": false, - "syncPoint": 0, - "type": "IP", - "uniqueId": "2275_VOYAGERCALLCENTERWHITELI" - } - ] - } -] \ No newline at end of file diff --git a/pkg/providers/networklists/testdata/TestResNetworkListSubscription/match_by_id.tf b/pkg/providers/networklists/testdata/TestResNetworkListSubscription/match_by_id.tf deleted file mode 100644 index cbee15717..000000000 --- a/pkg/providers/networklists/testdata/TestResNetworkListSubscription/match_by_id.tf +++ /dev/null @@ -1,10 +0,0 @@ -provider "akamai" { - edgerc = "~/.edgerc_network" -} - - -resource "akamai_networklist_network_list_subscription" "test" { - recipients = ["test@email.com"] - unique_ids = ["79536_MARTINNETWORKLIST"] - } - diff --git a/pkg/providers/providers.go b/pkg/providers/providers.go index 7d3812fcf..507f94241 100644 --- a/pkg/providers/providers.go +++ b/pkg/providers/providers.go @@ -7,6 +7,6 @@ import ( _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/gtm" _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/iam" - _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/networklists" + _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/property" ) From 53990dff5baf51b54f72bf62c9892840f06c12ff Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Thu, 14 Jan 2021 17:07:11 -0500 Subject: [PATCH 034/215] Incorporate review comments --- docs/data-sources/appsec_api_endpoints.md | 4 +++- docs/data-sources/appsec_attack_group_actions.md | 2 +- docs/data-sources/appsec_hostname_coverage_match_targets.md | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/data-sources/appsec_api_endpoints.md b/docs/data-sources/appsec_api_endpoints.md index 59e1bc0ca..af3d042da 100644 --- a/docs/data-sources/appsec_api_endpoints.md +++ b/docs/data-sources/appsec_api_endpoints.md @@ -8,7 +8,7 @@ description: |- # akamai_appsec_api_endpoints -Use the `akamai_appsec_api_endpoints` data source to retrieve information about the API endpoints associated with a security policy version, or about a specific API endpoint. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getapiendpoints). +Use the `akamai_appsec_api_endpoints` data source to retrieve information about the API Endpoints associated with a security policy or configuration version. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getapiendpoints). ## Example Usage @@ -34,6 +34,8 @@ The following arguments are supported: * `version` - (Required) The version number of the configuration. +* `security_policy_id` - (Optional) The ID of the security policy to use. + * `api_name` - (Optional) The name of a specific endpoint. ## Attributes Reference diff --git a/docs/data-sources/appsec_attack_group_actions.md b/docs/data-sources/appsec_attack_group_actions.md index 7a3fbd8f2..10dada55b 100644 --- a/docs/data-sources/appsec_attack_group_actions.md +++ b/docs/data-sources/appsec_attack_group_actions.md @@ -8,7 +8,7 @@ description: |- # akamai_appsec_attack_group_actions -The `akamai_appsec_attack_group_actions` data source allows you to retrieve a list of attack groups with their associated actions, or the action for a specific attack group. +The `akamai_appsec_attack_group_actions` data source allows you to retrieve a list of attack groups and actions associated with a security policy or a specific attack group and action associated with a security policy. ## Example Usage diff --git a/docs/data-sources/appsec_hostname_coverage_match_targets.md b/docs/data-sources/appsec_hostname_coverage_match_targets.md index c26e88acd..afbb3e1ee 100644 --- a/docs/data-sources/appsec_hostname_coverage_match_targets.md +++ b/docs/data-sources/appsec_hostname_coverage_match_targets.md @@ -34,7 +34,7 @@ The following arguments are supported: * `version` - (Required) The version number of the configuration. -* `hostname` - (Optional) The hostname for which to retrieve information. +* `hostname` - (Required) The hostname for which to retrieve information. ## Attributes Reference From 444a019048fe3ddb80333433992c553114f76f1c Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Fri, 15 Jan 2021 11:13:59 -0500 Subject: [PATCH 035/215] Add datasource/resource markdown files for Jan/Feb release Includes minor updates (whitespace etc.) to some existing files. --- ...appsec_attack_group_condition_exception.md | 1 + docs/data-sources/appsec_configuration.md | 2 +- .../appsec_configuration_version.md | 2 - docs/data-sources/appsec_contracts_groups.md | 68 ++++++ docs/data-sources/appsec_eval_rule_actions.md | 1 + docs/data-sources/appsec_hostname_coverage.md | 1 + docs/data-sources/appsec_ip_geo.md | 2 +- docs/data-sources/appsec_penalty_box.md | 1 + .../appsec_rate_policy_actions.md | 2 - .../appsec_reputation_profile_actions.md | 1 - .../appsec_reputation_profiles.md | 1 - docs/data-sources/appsec_rule_actions.md | 1 + .../appsec_rule_upgrade_details.md | 1 + docs/data-sources/appsec_security_policy.md | 1 + .../appsec_security_policy_protections.md | 8 + .../appsec_selectable_hostnames.md | 1 - .../data-sources/appsec_selected_hostnames.md | 1 - docs/data-sources/appsec_waf_mode.md | 1 - docs/data-sources/appsec_waf_protections.md | 1 + docs/resources/appsec_activations.md | 4 + .../appsec_advanced_settings_logging.html | 213 ++++++++++++++++ .../appsec_advanced_settings_logging.md | 59 +++++ .../appsec_advanced_settings_prefetch.html | 222 +++++++++++++++++ .../appsec_advanced_settings_prefetch.md | 65 +++++ .../appsec_api_request_constraints.html | 215 +++++++++++++++++ .../appsec_api_request_constraints.md | 62 +++++ ...appsec_attack_group_condition_exception.md | 3 +- docs/resources/appsec_configuration.html | 227 ++++++++++++++++++ docs/resources/appsec_configuration.md | 69 ++++++ docs/resources/appsec_configuration_clone.md | 59 +++-- .../appsec_configuration_version_clone.md | 49 ++-- docs/resources/appsec_custom_deny.html | 204 ++++++++++++++++ docs/resources/appsec_custom_deny.md | 53 ++++ docs/resources/appsec_custom_rule.md | 3 +- docs/resources/appsec_eval_host.html | 203 ++++++++++++++++ docs/resources/appsec_eval_host.md | 49 ++++ docs/resources/appsec_eval_protect_host.html | 208 ++++++++++++++++ docs/resources/appsec_eval_protect_host.md | 54 +++++ docs/resources/appsec_ip_geo.md | 3 +- docs/resources/appsec_penalty_box.md | 1 - .../resources/appsec_reputation_analysis.html | 210 ++++++++++++++++ docs/resources/appsec_reputation_analysis.md | 55 +++++ .../appsec_reputation_profile_action.md | 1 - .../resources/appsec_reputation_protection.md | 1 - docs/resources/appsec_slow_post.md | 1 - docs/resources/appsec_slowpost_protection.md | 1 - docs/resources/appsec_waf_protection.md | 1 - 47 files changed, 2328 insertions(+), 64 deletions(-) create mode 100644 docs/data-sources/appsec_contracts_groups.md create mode 100644 docs/resources/appsec_advanced_settings_logging.html create mode 100644 docs/resources/appsec_advanced_settings_logging.md create mode 100644 docs/resources/appsec_advanced_settings_prefetch.html create mode 100644 docs/resources/appsec_advanced_settings_prefetch.md create mode 100644 docs/resources/appsec_api_request_constraints.html create mode 100644 docs/resources/appsec_api_request_constraints.md create mode 100644 docs/resources/appsec_configuration.html create mode 100644 docs/resources/appsec_configuration.md create mode 100644 docs/resources/appsec_custom_deny.html create mode 100644 docs/resources/appsec_custom_deny.md create mode 100644 docs/resources/appsec_eval_host.html create mode 100644 docs/resources/appsec_eval_host.md create mode 100644 docs/resources/appsec_eval_protect_host.html create mode 100644 docs/resources/appsec_eval_protect_host.md create mode 100644 docs/resources/appsec_reputation_analysis.html create mode 100644 docs/resources/appsec_reputation_analysis.md diff --git a/docs/data-sources/appsec_attack_group_condition_exception.md b/docs/data-sources/appsec_attack_group_condition_exception.md index 90b572b17..a790f3fb9 100644 --- a/docs/data-sources/appsec_attack_group_condition_exception.md +++ b/docs/data-sources/appsec_attack_group_condition_exception.md @@ -56,3 +56,4 @@ In addition to the arguments above, the following attributes are exported: * `output_text` - A tabular display showing the ID, name, and action of all custom rules associated with the specified security configuration, version and security policy. * `json` - The condition and exception information in JSON format. + diff --git a/docs/data-sources/appsec_configuration.md b/docs/data-sources/appsec_configuration.md index 343437357..6726eef12 100644 --- a/docs/data-sources/appsec_configuration.md +++ b/docs/data-sources/appsec_configuration.md @@ -55,7 +55,6 @@ The following arguments are supported: * `name` - (Optional) The name of a specific security configuration. If not supplied, information about all security configurations is returned. - ## Attributes Reference In addition to the arguments above, the following attributes are exported: @@ -69,3 +68,4 @@ In addition to the arguments above, the following attributes are exported: * `staging_version` - The version of the specified security configuration currently active in staging. Returned only if `name` was specified. * `production_version` - The version of the specified security configuration currently active in production. Returned only if `name` was specified. + diff --git a/docs/data-sources/appsec_configuration_version.md b/docs/data-sources/appsec_configuration_version.md index 3ae11751c..a45a8b4c2 100644 --- a/docs/data-sources/appsec_configuration_version.md +++ b/docs/data-sources/appsec_configuration_version.md @@ -54,7 +54,6 @@ output "specific_version_production" { } ``` - ## Argument Reference The following arguments are supported: @@ -63,7 +62,6 @@ The following arguments are supported: * `version` - (Optional) The version number of the security configuration to use. If not supplied, information about all versions of the specified security configuration is returned. - ## Attributes Reference In addition to the arguments above, the following attributes are exported: diff --git a/docs/data-sources/appsec_contracts_groups.md b/docs/data-sources/appsec_contracts_groups.md new file mode 100644 index 000000000..dd0e45e68 --- /dev/null +++ b/docs/data-sources/appsec_contracts_groups.md @@ -0,0 +1,68 @@ +--- +layout: "akamai" +page_title: "Akamai: ContractsGroups" +subcategory: "Application Security" +description: |- + ContractsGroups +--- + +# akamai_appsec_contracts_groups + +The `akamai_appsec_contracts_groups` data source allows you to retrieve information about the contracts and groups for your account. Each object contains the contract, groups associated with the contract, and whether Kona Site Defender or Web Application Protector is the product for that contract. You’ll need this information when you create a new security configuration or when you want to get a list of hostnames still available for use in a security policy. The information available via this data source is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getcontractsandgroupswithksdorwaf). + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to see contract group details in an account +data "akamai_appsec_contracts_groups" "contracts_groups" { + contractid = var.contractid + groupid = var.groupid +} + +//tabular data of contractid, displayname and group id +output "contracts_groups_list" { + value = data.akamai_appsec_contracts_groups.contracts_groups.output_text +} + +output "contracts_groups_json" { + value = data.akamai_appsec_contracts_groups.contracts_groups.json +} + +//returns any of the contract/group +output "contract_groups_default_contractid" { + value = data.akamai_appsec_contracts_groups.contracts_groups.default_contractid +} + +output "contract_groups_default_groupid" { + value = data.akamai_appsec_contracts_groups.contracts_groups.default_groupid +} +``` + +## Argument Reference + +The following arguments are supported: + +## Attributes Reference + +* `contractid` - (Optional) The ID of a contract for which to retrieve information. + +* `groupid` - (Optional) The ID of a group for which to retrieve information. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `json` - A JSON-formatted list of the contract and group information. + +* `output_text` - A tabular display showing the contract and group information. + +* `default_contractid` - The default contract ID for the specified contract and group. + +* `default_groupid` - The default group ID for the specified contract and group. + diff --git a/docs/data-sources/appsec_eval_rule_actions.md b/docs/data-sources/appsec_eval_rule_actions.md index 411a659c0..90d552ffe 100644 --- a/docs/data-sources/appsec_eval_rule_actions.md +++ b/docs/data-sources/appsec_eval_rule_actions.md @@ -71,3 +71,4 @@ In addition to the arguments above, the following attributes are exported: * `json` - A JSON-formatted display of the ID and action for all rules in the security policy. * `action` - The action configured for the given rule if a `rule_id` was specified. + diff --git a/docs/data-sources/appsec_hostname_coverage.md b/docs/data-sources/appsec_hostname_coverage.md index f52a453f8..6d9364815 100644 --- a/docs/data-sources/appsec_hostname_coverage.md +++ b/docs/data-sources/appsec_hostname_coverage.md @@ -24,6 +24,7 @@ data "akamai_appsec_hostname_coverage" "hostname_coverage" { ``` ## Argument Reference + The following arguments are supported: * None diff --git a/docs/data-sources/appsec_ip_geo.md b/docs/data-sources/appsec_ip_geo.md index 7c84c1a12..f4e8a40d3 100644 --- a/docs/data-sources/appsec_ip_geo.md +++ b/docs/data-sources/appsec_ip_geo.md @@ -69,5 +69,5 @@ In addition to the arguments above, the following attributes are exported: * `exception_ip_network_lists` - The network lists to be allowed regardless of `mode`, `geo_network_lists`, and `ip_network_lists` parameters. -* `output_txt` - A tabular display of the IP/Geo firewall settings. +* `output_text` - A tabular display of the IP/Geo firewall settings. diff --git a/docs/data-sources/appsec_penalty_box.md b/docs/data-sources/appsec_penalty_box.md index 0aa5e05e7..fa63ed26a 100644 --- a/docs/data-sources/appsec_penalty_box.md +++ b/docs/data-sources/appsec_penalty_box.md @@ -62,3 +62,4 @@ In addition to the arguments above, the following attributes are exported: * `enabled` - Either `true` or `false`, indicating whether penalty box protection is enabled. * `output_text` - A tabular display of the `action` and `enabled` information. + diff --git a/docs/data-sources/appsec_rate_policy_actions.md b/docs/data-sources/appsec_rate_policy_actions.md index 6dc260779..efedbb35a 100644 --- a/docs/data-sources/appsec_rate_policy_actions.md +++ b/docs/data-sources/appsec_rate_policy_actions.md @@ -52,5 +52,3 @@ In addition to the arguments above, the following attributes are exported: * `output_text` - A tabular display showing the ID IPv4Action and IPv6Action of the indicated security policy. - - diff --git a/docs/data-sources/appsec_reputation_profile_actions.md b/docs/data-sources/appsec_reputation_profile_actions.md index a915cf99d..77fa95753 100644 --- a/docs/data-sources/appsec_reputation_profile_actions.md +++ b/docs/data-sources/appsec_reputation_profile_actions.md @@ -60,7 +60,6 @@ The following arguments are supported: * `reputation_profile_id` - (Optional) The ID of a given reputation profile. If not supplied, information about all reputation profiles is returned. - ## Attributes Reference In addition to the arguments above, the following attributes are exported: diff --git a/docs/data-sources/appsec_reputation_profiles.md b/docs/data-sources/appsec_reputation_profiles.md index b26c8a644..76c12bdef 100644 --- a/docs/data-sources/appsec_reputation_profiles.md +++ b/docs/data-sources/appsec_reputation_profiles.md @@ -58,7 +58,6 @@ The following arguments are supported: * `reputation_profile_id` - (Optional) The ID of a given reputation profile. If not supplied, information about all reputation profiles is returned. - ## Attributes Reference In addition to the arguments above, the following attributes are exported: diff --git a/docs/data-sources/appsec_rule_actions.md b/docs/data-sources/appsec_rule_actions.md index 12c926e09..de8309af8 100644 --- a/docs/data-sources/appsec_rule_actions.md +++ b/docs/data-sources/appsec_rule_actions.md @@ -68,3 +68,4 @@ In addition to the arguments above, the following attributes are exported: * `json` - A JSON-formatted display of the ID and action for all rules in the security policy. * `action` - The action configured for the given rule if a `rule_id` was specified. + diff --git a/docs/data-sources/appsec_rule_upgrade_details.md b/docs/data-sources/appsec_rule_upgrade_details.md index a8bfeaecf..1b80f2031 100644 --- a/docs/data-sources/appsec_rule_upgrade_details.md +++ b/docs/data-sources/appsec_rule_upgrade_details.md @@ -53,3 +53,4 @@ In addition to the arguments above, the following attributes are exported: * `output_text` - A tabular display showing changes (additions and deletions) to the rules for the specified security policy. * `json` - A JSON-formatted list of the changes (additions and deletions) to the rules for the specified security policy. + diff --git a/docs/data-sources/appsec_security_policy.md b/docs/data-sources/appsec_security_policy.md index df407402a..6be5025bf 100644 --- a/docs/data-sources/appsec_security_policy.md +++ b/docs/data-sources/appsec_security_policy.md @@ -66,3 +66,4 @@ In addition to the arguments above, the following attributes are exported: * `output_text` - A tabular display showing the ID and name of all security policies. * `policy_id` - The ID of the security policy. Included only if `name` was specified. + diff --git a/docs/data-sources/appsec_security_policy_protections.md b/docs/data-sources/appsec_security_policy_protections.md index 96cb18ff0..9c4239873 100644 --- a/docs/data-sources/appsec_security_policy_protections.md +++ b/docs/data-sources/appsec_security_policy_protections.md @@ -78,12 +78,20 @@ The following arguments are supported: In addition to the arguments above, the following attributes are exported: * `apply_application_layer_controls` - `true` or `false`, indicating whether application layer controls are in effect. + * `apply_network_layer_controls` - `true` or `false`, indicating whether network layer controls are in effect. + * `apply_rate_controls` - `true` or `false`, indicating whether rate controls are in effect. + * `apply_reputation_controls` - `true` or `false`, indicating whether reputation controls are in effect. + * `apply_botman_controls` - `true` or `false`, indicating whether botman controls are in effect. + * `apply_api_constraints` - `true` or `false`, indicating whether API constraints are in effect. + * `apply_slow_post_controls` - `true` or `false`, indicating whether slow post controls are in effect. + * `json` - a JSON-formatted list showing the status of the protection settings + * `output_text` - a tabular display showing the status of the protection settings diff --git a/docs/data-sources/appsec_selectable_hostnames.md b/docs/data-sources/appsec_selectable_hostnames.md index 449b4d3b1..536a6442e 100644 --- a/docs/data-sources/appsec_selectable_hostnames.md +++ b/docs/data-sources/appsec_selectable_hostnames.md @@ -50,7 +50,6 @@ The following arguments are supported: * `version` - (Required) The version number of the security configuration to use. - ## Attributes Reference In addition to the arguments above, the following attributes are exported: diff --git a/docs/data-sources/appsec_selected_hostnames.md b/docs/data-sources/appsec_selected_hostnames.md index 5f16eef64..08fe15be0 100644 --- a/docs/data-sources/appsec_selected_hostnames.md +++ b/docs/data-sources/appsec_selected_hostnames.md @@ -49,7 +49,6 @@ The following arguments are supported: * `version` - (Required) The version number of the security configuration to use. - ## Attributes Reference In addition to the arguments above, the following attributes are exported: diff --git a/docs/data-sources/appsec_waf_mode.md b/docs/data-sources/appsec_waf_mode.md index 5e6adee2d..0dbfd1911 100644 --- a/docs/data-sources/appsec_waf_mode.md +++ b/docs/data-sources/appsec_waf_mode.md @@ -63,7 +63,6 @@ The following arguments are supported: * `security_policy_id` - (Required) The ID of the security policy to use. - ## Attributes Reference In addition to the arguments above, the following attributes are exported: diff --git a/docs/data-sources/appsec_waf_protections.md b/docs/data-sources/appsec_waf_protections.md index 1a0f57897..31256bd18 100644 --- a/docs/data-sources/appsec_waf_protections.md +++ b/docs/data-sources/appsec_waf_protections.md @@ -83,3 +83,4 @@ In addition to the arguments above, the following attributes are exported: * `apply_reputation_controls` - true if reputation controls are applied, otherwise false * `apply_slow_post_controls` - true if slow post controls are applied, otherwise false + diff --git a/docs/resources/appsec_activations.md b/docs/resources/appsec_activations.md index 061ea12eb..5109da108 100644 --- a/docs/resources/appsec_activations.md +++ b/docs/resources/appsec_activations.md @@ -34,6 +34,10 @@ resource "akamai_appsec_activations" "activation" { ``` +## Argument Reference + +The following arguments are supported: + * `config_id` - (Required) The ID of the security configuration to use. * `version` - (Required) The version number of the security configuration to use. diff --git a/docs/resources/appsec_advanced_settings_logging.html b/docs/resources/appsec_advanced_settings_logging.html new file mode 100644 index 000000000..43377b23d --- /dev/null +++ b/docs/resources/appsec_advanced_settings_logging.html @@ -0,0 +1,213 @@ + + + + + appsec_advanced_settings_logging.md - Grip + + + + + + +
+
+ + + +
+
+
+
+ +

+ + appsec_advanced_settings_logging.md +

+ +
+
+

+layout: "akamai" +page_title: "Akamai: AdvancedSettingsLogging" +subcategory: "Application Security" +description: |- +AdvancedSettingsLogging

+

+resource_akamai_appsec_advanced_settings_logging

+

The resource_akamai_appsec_advanced_settings_logging resource allows you to enable, disable, or update HTTP header logging settings for a configuration. This operation applies at the configuration level, and therefore applies to all policies within a configuration. You may override these settings for a particular policy by specifying the policy using the security_policy_id parameter.

+

+Example Usage

+

Basic usage:

+
provider "akamai" {
+  edgerc = "~/.edgerc"
+}
+
+// USE CASE: user wants to set the logging settings
+data "akamai_appsec_configuration" "configuration" {
+  name = var.security_configuration
+}
+
+resource "akamai_appsec_advanced_settings_logging" "logging" {
+  config_id = data.akamai_appsec_configuration.configuration.config_id
+  version = data.akamai_appsec_configuration.configuration.latest_version
+  logging = file("${path.module}/logging.json")
+}
+
+// USE CASE: user wants to override the logging settings for a security policy
+resource "akamai_appsec_advanced_settings_logging" "policy_logging" {
+  config_id = data.akamai_appsec_configuration.configuration.config_id
+  version = data.akamai_appsec_configuration.configuration.latest_version
+  security_policy_id = var.security_policy_id
+  logging =  file("${path.module}/logging.json")
+}
+

+Argument Reference

+

The following arguments are supported:

+
    +
  • +

    config_id - (Required) The ID of the security configuration to use.

    +
  • +
  • +

    version - (Required) The version number of the security configuration to use.

    +
  • +
  • +

    logging - (Required) The logging settings to apply (format).

    +
  • +
  • +

    security_policy_id - (Optional) The ID of a specific security policy to which the logging settings should be applied. If not supplied, the indicated settings will be applied to all policies within the configuration.

    +
  • +
+

+Attributes Reference

+

In addition to the arguments above, the following attributes are exported:

+
    +
  • None
  • +
+ +
+
+
+
+
+ + + +
+
 
+
+ + \ No newline at end of file diff --git a/docs/resources/appsec_advanced_settings_logging.md b/docs/resources/appsec_advanced_settings_logging.md new file mode 100644 index 000000000..ff74bfdec --- /dev/null +++ b/docs/resources/appsec_advanced_settings_logging.md @@ -0,0 +1,59 @@ +--- +layout: "akamai" +page_title: "Akamai: AdvancedSettingsLogging" +subcategory: "Application Security" +description: |- + AdvancedSettingsLogging +--- + +# resource_akamai_appsec_advanced_settings_logging + +The `resource_akamai_appsec_advanced_settings_logging` resource allows you to enable, disable, or update HTTP header logging settings for a configuration. This operation applies at the configuration level, and therefore applies to all policies within a configuration. You may override these settings for a particular policy by specifying the policy using the security_policy_id parameter. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to set the logging settings +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +resource "akamai_appsec_advanced_settings_logging" "logging" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + logging = file("${path.module}/logging.json") +} + +// USE CASE: user wants to override the logging settings for a security policy +resource "akamai_appsec_advanced_settings_logging" "policy_logging" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + security_policy_id = var.security_policy_id + logging = file("${path.module}/logging.json") +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The ID of the security configuration to use. + +* `version` - (Required) The version number of the security configuration to use. + +* `logging` - (Required) The logging settings to apply ([format](https://developer.akamai.com/api/cloud_security/application_security/v1.html#puthttpheaderloggingforaconfiguration)). + +* `security_policy_id` - (Optional) The ID of a specific security policy to which the logging settings should be applied. If not supplied, the indicated settings will be applied to all policies within the configuration. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* None + diff --git a/docs/resources/appsec_advanced_settings_prefetch.html b/docs/resources/appsec_advanced_settings_prefetch.html new file mode 100644 index 000000000..7332729c3 --- /dev/null +++ b/docs/resources/appsec_advanced_settings_prefetch.html @@ -0,0 +1,222 @@ + + + + + appsec_advanced_settings_prefetch.md - Grip + + + + + + +
+
+ + + +
+
+
+
+ +

+ + appsec_advanced_settings_prefetch.md +

+ +
+
+

+layout: "akamai" +page_title: "Akamai: AdvancedSettingsPrefetch" +subcategory: "Application Security" +description: |- +AdvancedSettingsPrefetch

+

+resource_akamai_appsec_advanced_settings_prefetch

+

The resource_akamai_appsec_advanced_settings_prefetch resource allows you to enable inspection of internal requests (those between your origin and Akamai’s servers) for file types that you specify. You can also apply rate controls to prefetch requests. This operation applies at the configuration level.

+

+Example Usage

+

Basic usage:

+
provider "akamai" {
+  edgerc = "~/.edgerc"
+}
+
+// USE CASE: user wants to set the prefetch settings
+data "akamai_appsec_configuration" "configuration" {
+  name = var.security_configuration
+}
+
+resource "akamai_appsec_advanced_settings_prefetch" "prefetch" {
+  config_id = data.akamai_appsec_configuration.configuration.config_id
+  version = data.akamai_appsec_configuration.configuration.latest_version
+  enable_app_layer = false
+  all_extensions = true
+  enable_rate_controls = false
+  extensions = var.extensions
+}
+
+output "prefetch_settings" {
+  value = akamai_appsec_advanced_settings_prefetch.prefetch.output_text
+}
+

+Argument Reference

+

The following arguments are supported:

+
    +
  • +

    config_id - (Required) The ID of the security configuration to use.

    +
  • +
  • +

    version - (Required) The version number of the security configuration to use.

    +
  • +
  • +

    enable_app_layer - (Required) Whether to enable prefetch requests.

    +
  • +
  • +

    all_extensions - (Required) Whether to enable prefetch requests for all extensions.

    +
  • +
  • +

    enable_rate_controls - (Required) Whether to enable prefetch requests for rate controls.

    +
  • +
  • +

    extensions - (Required) The specific extensions for which to enable prefetch requests. If all_extensions is True, extensions must be an empty list.

    +
  • +
+

+Attributes Reference

+

In addition to the arguments above, the following attributes are exported:

+

*output_text - A tabular display showing the following updated prefetch settings.

+
    +
  • ENABLE APP LAYER
  • +
  • ALL EXTENSION
  • +
  • ENABLE RATE CONTROLS
  • +
  • EXTENSIONS
  • +
+ +
+
+
+
+
+ + + +
+
 
+
+ + \ No newline at end of file diff --git a/docs/resources/appsec_advanced_settings_prefetch.md b/docs/resources/appsec_advanced_settings_prefetch.md new file mode 100644 index 000000000..f4da7bb46 --- /dev/null +++ b/docs/resources/appsec_advanced_settings_prefetch.md @@ -0,0 +1,65 @@ +--- +layout: "akamai" +page_title: "Akamai: AdvancedSettingsPrefetch" +subcategory: "Application Security" +description: |- + AdvancedSettingsPrefetch +--- + +# resource_akamai_appsec_advanced_settings_prefetch + +The `resource_akamai_appsec_advanced_settings_prefetch` resource allows you to enable inspection of internal requests (those between your origin and Akamai’s servers) for file types that you specify. You can also apply rate controls to prefetch requests. This operation applies at the configuration level. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to set the prefetch settings +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +resource "akamai_appsec_advanced_settings_prefetch" "prefetch" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + enable_app_layer = false + all_extensions = true + enable_rate_controls = false + extensions = var.extensions +} + +output "prefetch_settings" { + value = akamai_appsec_advanced_settings_prefetch.prefetch.output_text +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The ID of the security configuration to use. + +* `version` - (Required) The version number of the security configuration to use. + +* `enable_app_layer` - (Required) Whether to enable prefetch requests. + +* `all_extensions` - (Required) Whether to enable prefetch requests for all extensions. + +* `enable_rate_controls` - (Required) Whether to enable prefetch requests for rate controls. + +* `extensions` - (Required) The specific extensions for which to enable prefetch requests. If `all_extensions` is True, `extensions` must be an empty list. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +*`output_text` - A tabular display showing the following updated prefetch settings. + * `ENABLE APP LAYER` + * `ALL EXTENSION` + * `ENABLE RATE CONTROLS` + * `EXTENSIONS` diff --git a/docs/resources/appsec_api_request_constraints.html b/docs/resources/appsec_api_request_constraints.html new file mode 100644 index 000000000..ed0e4c160 --- /dev/null +++ b/docs/resources/appsec_api_request_constraints.html @@ -0,0 +1,215 @@ + + + + + appsec_api_request_constraints.md - Grip + + + + + + +
+
+ + + +
+
+
+
+ +

+ + appsec_api_request_constraints.md +

+ +
+
+

+layout: "akamai" +page_title: "Akamai: ApiRequestConstraints" +subcategory: "Application Security" +description: |- +ApiRequestConstraints

+

+resource_akamai_appsec_api_request_constraints

+

The resource_akamai_appsec_api_request_constraints resource allows you to update what action to take when the API request constraint triggers. This operation modifies an individual API constraint action. To use this operation, use the akamai_appsec_api_endpoints data source to list one or all API endpoints, and use the ID of the selected endpoint. Use the action paameter to specify how the alert should be handled.

+

+Example Usage

+

Basic usage:

+
provider "akamai" {
+  edgerc = "~/.edgerc"
+}
+
+// USE CASE: user wants to set the api request constraints action
+data "akamai_appsec_configuration" "configuration" {
+  name = var.security_configuration
+}
+
+data "akamai_appsec_api_endpoints" "api_endpoint" {
+  config_id = data.akamai_appsec_configuration.configuration.config_id
+  version = data.akamai_appsec_configuration.configuration.latest_version
+  security_policy_id = var.security_policy_id
+  name = var.api_endpoint_name
+}
+
+resource "akamai_api_request_constraints" "api_request_constraints" {
+  config_id = data.akamai_appsec_configuration.configuration.config_id
+  version = data.akamai_appsec_configuration.configuration.latest_version
+  security_policy_id = var.security_policy_id
+  api_endpoint_id = data.akamai_appsec_api_endpoints.api_endpoint.id
+  action = "alert"
+}
+

+Argument Reference

+

The following arguments are supported:

+
    +
  • +

    config_id - (Required) The ID of the security configuration to use.

    +
  • +
  • +

    version - (Required) The version number of the security configuration to use.

    +
  • +
  • +

    security_policy_id - (Required) The ID of the security policy to use.

    +
  • +
  • +

    api_endpoint_id - (Required) The ID of the API endpoint to use.

    +
  • +
  • +

    action - (Required) The action to assign to API request constraints: either alert, deny, or none.

    +
  • +
+

+Attributes Reference

+

In addition to the arguments above, the following attributes are exported:

+

*output_text - A tabular display of the API request constraint information.

+ +
+
+
+
+
+ + + +
+
 
+
+ + \ No newline at end of file diff --git a/docs/resources/appsec_api_request_constraints.md b/docs/resources/appsec_api_request_constraints.md new file mode 100644 index 000000000..ffca377d8 --- /dev/null +++ b/docs/resources/appsec_api_request_constraints.md @@ -0,0 +1,62 @@ +--- +layout: "akamai" +page_title: "Akamai: ApiRequestConstraints" +subcategory: "Application Security" +description: |- + ApiRequestConstraints +--- + +# resource_akamai_appsec_api_request_constraints + +The `resource_akamai_appsec_api_request_constraints` resource allows you to update what action to take when the API request constraint triggers. This operation modifies an individual API constraint action. To use this operation, use the `akamai_appsec_api_endpoints` data source to list one or all API endpoints, and use the ID of the selected endpoint. Use the `action` paameter to specify how the alert should be handled. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to set the api request constraints action +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +data "akamai_appsec_api_endpoints" "api_endpoint" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + security_policy_id = var.security_policy_id + name = var.api_endpoint_name +} + +resource "akamai_api_request_constraints" "api_request_constraints" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + security_policy_id = var.security_policy_id + api_endpoint_id = data.akamai_appsec_api_endpoints.api_endpoint.id + action = "alert" +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The ID of the security configuration to use. + +* `version` - (Required) The version number of the security configuration to use. + +* `security_policy_id` - (Required) The ID of the security policy to use. + +* `api_endpoint_id` - (Required) The ID of the API endpoint to use. + +* `action` - (Required) The action to assign to API request constraints: either `alert`, `deny`, or `none`. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +*`output_text` - A tabular display of the API request constraint information. + diff --git a/docs/resources/appsec_attack_group_condition_exception.md b/docs/resources/appsec_attack_group_condition_exception.md index 2898882be..577a187ed 100644 --- a/docs/resources/appsec_attack_group_condition_exception.md +++ b/docs/resources/appsec_attack_group_condition_exception.md @@ -44,8 +44,7 @@ The following arguments are supported: * `attack_group` - The attack group to use. -* `condition_exception` - (Required) The name of a file containing a JSON-formatted description of the conditions and exceptions to use ([format](https://developer.akamai.com/api/cloud_security/application_security/v1.html#putattackgroupconditionexception)) - +* `condition_exception` - (Required) The name of a file containing a JSON-formatted description of the conditions and exceptions to use ([format](https://developer.akamai.com/api/cloud_security/application_security/v1.html#putattackgroupconditionexception)). ## Attributes Reference diff --git a/docs/resources/appsec_configuration.html b/docs/resources/appsec_configuration.html new file mode 100644 index 000000000..15f74b978 --- /dev/null +++ b/docs/resources/appsec_configuration.html @@ -0,0 +1,227 @@ + + + + + appsec_configuration.md - Grip + + + + + + +
+
+ + + +
+
+
+
+ +

+ + appsec_configuration.md +

+ +
+
+

+layout: "akamai" +page_title: "Akamai: Configuration" +subcategory: "Application Security" +description: |- +Configuration

+

+resource_akamai_appsec_configuration

+

The resource_akamai_appsec_configuration resource allows you to create a new WAP or KSD security configuration. KSD security configurations start out empty, and WAP configurations are created with preset values. The contract you pass in the request body determines which product you use. You can edit the default settings included in the WAP configuration, but you’ll need to run additional operations in this API to select specific protections for KSD. Your KSD configuration needs match targets and protection settings before it can be activated.

+

+Example Usage

+

Basic usage:

+
provider "akamai" {
+  edgerc = "~/.edgerc"
+}
+
+// USE CASE: user wants to create a new config
+data "akamai_appsec_contract_groups" "contract_groups" {
+}
+
+data "akamai_appsec_selectable_hostnames" "selectable_hostnames" {
+  config_id = data.akamai_appsec_configuration.configuration.config_id
+  version = data.akamai_appsec_configuration.configuration.latest_version
+}
+
+resource "akamai_appsec_configuration" "create_config" {
+  name = var.name
+  description = var.description
+  contract_id= data.akamai_appsec_contract_groups.contract_groups.default.contract_id
+  group_id  = data.akamai_appsec_contract_groups.contract_groups.default.group_id
+  host_names = data.akamai_appsec_selectable_hostnames.selectable_hostnames.hostnames
+}
+
+output "create_config_id" {
+  value = akamai_appsec_configuration.create_config.config_id
+}
+
+output "create_config_version" {
+  value = akamai_appsec_configuration.create_config.version
+}
+

+Argument Reference

+

The following arguments are supported:

+
    +
  • +

    name- (Required) The name to be assigned to the configuration.

    +
  • +
  • +

    description - (Required) A description of the configuration.

    +
  • +
  • +

    contract_id - (Required) The contract ID of the configuration.

    +
  • +
  • +

    group_id - (Required) The group ID of the configuration>

    +
  • +
  • +

    hostnames - (Required) The list of hostnames protected by this security configuration.

    +
  • +
+

+Attributes Reference

+

In addition to the arguments above, the following attributes are exported:

+
    +
  • +

    config_id - (Required) The ID of the security configuration.

    +
  • +
  • +

    version - (Required) The latest version of the security configuration.

    +
  • +
+ +
+
+
+
+
+ + + +
+
 
+
+ + \ No newline at end of file diff --git a/docs/resources/appsec_configuration.md b/docs/resources/appsec_configuration.md new file mode 100644 index 000000000..ef05f7ef0 --- /dev/null +++ b/docs/resources/appsec_configuration.md @@ -0,0 +1,69 @@ +--- +layout: "akamai" +page_title: "Akamai: Configuration" +subcategory: "Application Security" +description: |- + Configuration +--- + +# resource_akamai_appsec_configuration + +The `resource_akamai_appsec_configuration` resource allows you to create a new WAP or KSD security configuration. KSD security configurations start out empty, and WAP configurations are created with preset values. The contract you pass in the request body determines which product you use. You can edit the default settings included in the WAP configuration, but you’ll need to run additional operations in this API to select specific protections for KSD. Your KSD configuration needs match targets and protection settings before it can be activated. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to create a new config +data "akamai_appsec_contract_groups" "contract_groups" { +} + +data "akamai_appsec_selectable_hostnames" "selectable_hostnames" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version +} + +resource "akamai_appsec_configuration" "create_config" { + name = var.name + description = var.description + contract_id= data.akamai_appsec_contract_groups.contract_groups.default.contract_id + group_id = data.akamai_appsec_contract_groups.contract_groups.default.group_id + host_names = data.akamai_appsec_selectable_hostnames.selectable_hostnames.hostnames +} + +output "create_config_id" { + value = akamai_appsec_configuration.create_config.config_id +} + +output "create_config_version" { + value = akamai_appsec_configuration.create_config.version +} +``` + +## Argument Reference + +The following arguments are supported: + +* `name`- (Required) The name to be assigned to the configuration. + +* `description` - (Required) A description of the configuration. + +* `contract_id` - (Required) The contract ID of the configuration. + +* `group_id` - (Required) The group ID of the configuration> + +* `hostnames` - (Required) The list of hostnames protected by this security configuration. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `config_id` - (Required) The ID of the security configuration. + +* `version` - (Required) The latest version of the security configuration. + diff --git a/docs/resources/appsec_configuration_clone.md b/docs/resources/appsec_configuration_clone.md index 935afc654..7e85be881 100644 --- a/docs/resources/appsec_configuration_clone.md +++ b/docs/resources/appsec_configuration_clone.md @@ -6,10 +6,9 @@ description: |- ConfigurationClone --- -# akamai_appsec_configuration_clone +# resource_akamai_appsec_configuration_clone - -The `akamai_appsec_configuration_version_clone` resource allows you to create a new version of a security configuration by cloning an existing version. +The `resource_akamai_appsec_configuration_clone` resource allows you to create a new version of a given security configuration. ## Example Usage @@ -17,21 +16,41 @@ Basic usage: ```hcl provider "akamai" { - appsec_section = "default" + edgerc = "~/.edgerc" } +// USE CASE: user wants to clone a new configuration from an existing one data "akamai_appsec_configuration" "configuration" { - name = "Akamai Tools" + name = var.security_configuration +} + +// USE CASE: user wants to see contract group details in an account +data "akamai_appsec_contracts_groups" "contracts_groups" { + contractid = var.contractid + groupid = var.groupid } -resource "akamai_appsec_configuration_version_clone" "clone" { +data "akamai_appsec_selectable_hostnames" "selectable_hostnames" { config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version +} + +resource "akamai_appsec_configuration_clone" "clone_config" { + create_from_config_id = data.akamai_appsec_configuration.configuration.config_id create_from_version = data.akamai_appsec_configuration.configuration.latest_version - rule_update = false + name = var.name + description = var.description + contract_id = data.akamai_appsec_contracts_groups.contracts_groups.default_contractid + group_id = data.akamai_appsec_contracts_groups.contracts_groups.default_groupid + host_names = data.akamai_appsec_selectable_hostnames.selectable_hostnames.hostnames +} + +output "clone_config_id" { + value = akamai_appsec_configuration_clone.clone_config.config_id } -output "clone_version" { - value = akamai_appsec_configuration_version_clone.clone.version +output "clone_config_version" { + value = akamai_appsec_configuration_clone.clone_config.version } ``` @@ -39,15 +58,25 @@ output "clone_version" { The following arguments are supported: -* `config_id` - (Required) The ID of the security configuration to use. +* `name` - (Required) The name to be applied to the new configuration. + +* `description` - (Required) A description of the new configuration. + +* `create_from_config_id` - (Required) The ID of the configuration to be cloned. + +* `create_from_version` - (Required) The version number of the configuration to be cloned. + +* `contract_id` - (Required) The contract id to use. + +* `group_id` - (Required) The group id to use. -* `create_from_version` - (Required) The version number of the security configuration to clone. +* `host_names` - (Required) The hostnames to be protected under the new configuration. -* `rule_update` - A boolean indicating whether to update the rules of the new version. If not supplied, False is assumed. +## Attributes Reference -## Attribute Reference +In addition to the arguments above, the following attributes are exported: -In addition to the arguments above, the following attribute is exported: +* `config_id` - The ID of the newly created configuration. -* `version` - The number of the cloned version. +* `version` - The version number of the newly created configuration. diff --git a/docs/resources/appsec_configuration_version_clone.md b/docs/resources/appsec_configuration_version_clone.md index e143c3787..65286b004 100644 --- a/docs/resources/appsec_configuration_version_clone.md +++ b/docs/resources/appsec_configuration_version_clone.md @@ -1,17 +1,15 @@ --- layout: "akamai" -page_title: "Akamai: ConfigurationClone" -subcategory: "APPSEC" +page_title: "Akamai: ConfigurationVersionClone" +subcategory: "Application Security" description: |- - ConfigurationClone + ConfigurationVersionClone --- -# resource_akamai_appsec_configuration_clone +# akamai_appsec_configuration_clone -The `resource_akamai_appsec_configuration_clone` resource allows you to create or re-use ConfigurationClones. - -If the ConfigurationClone already exists, it will be used instead of creating a new one. +The `akamai_appsec_configuration_version_clone` resource allows you to create a new version of a security configuration by cloning an existing version. ## Example Usage @@ -21,40 +19,35 @@ Basic usage: provider "akamai" { appsec_section = "default" } - data "akamai_appsec_configuration" "appsecconfigedge" { - name = "Example for EDGE" - -} - - -output "configsedge" { - value = data.akamai_appsec_configuration.appsecconfigedge.config_id +data "akamai_appsec_configuration" "configuration" { + name = "Akamai Tools" } +resource "akamai_appsec_configuration_version_clone" "clone" { + config_id = data.akamai_appsec_configuration.configuration.config_id + create_from_version = data.akamai_appsec_configuration.configuration.latest_version + rule_update = false +} -resource "akamai_appsec_configuration_clone" "appsecconfigurationclone" { - config_id = data.akamai_appsec_configuration.appsecconfigedge.config_id - create_from_version = data.akamai_appsec_configuration.appsecconfigedge.latest_version - rule_update = false - } - +output "clone_version" { + value = akamai_appsec_configuration_version_clone.clone.version +} ``` ## Argument Reference The following arguments are supported: -* `config_id`- (Required) The Configuration ID -* `create_from_version` - (Required) The Version Number of configuration +* `config_id` - (Required) The ID of the security configuration to use. -* `rule_update` - (Optional) Update Rules Flag +* `create_from_version` - (Required) The version number of the security configuration to clone. -# Attributes Reference +* `rule_update` - A boolean indicating whether to update the rules of the new version. If not supplied, False is assumed. -The following are the return attributes: +## Attribute Reference -* `configcloneid` - Id of cloned configuration +In addition to the arguments above, the following attribute is exported: -* `version` - Version of cloned configuration +* `version` - The number of the cloned version. diff --git a/docs/resources/appsec_custom_deny.html b/docs/resources/appsec_custom_deny.html new file mode 100644 index 000000000..87791be18 --- /dev/null +++ b/docs/resources/appsec_custom_deny.html @@ -0,0 +1,204 @@ + + + + + appsec_custom_deny.md - Grip + + + + + + +
+
+ + + +
+
+
+
+ +

+ + appsec_custom_deny.md +

+ +
+
+

+layout: "akamai" +page_title: "Akamai: CustomDeny" +subcategory: "Application Security" +description: |- +CustomDeny

+

+resource_akamai_appsec_custom_deny

+

The resource_akamai_appsec_custom_deny resource allows you to create a new custom deny action for a specific configuration version.

+

+Example Usage

+

Basic usage:

+
// OPEN API --> https://developer.akamai.com/api/cloud_security/application_security/v1.html#postcustomdeny
+provider "akamai" {
+  edgerc = "~/.edgerc"
+}
+
+// USE CASE: user wants to create a custom deny action using a JSON definition
+data "akamai_appsec_configuration" "configuration" {
+  name = var.security_configuration
+}
+resource "akamai_appsec_custom_deny" "custom_deny" {
+  config_id = data.akamai_appsec_configuration.configuration.config_id
+  version = data.akamai_appsec_configuration.configuration.latest_version
+  custom_deny = file("${path.module}/custom_deny.json")
+}
+
+output "custom_deny_id" {
+  value = akamai_appsec_custom_deny.custom_deny.custom_deny_id
+}
+

+Argument Reference

+

The following arguments are supported:

+
    +
  • +

    config_id - (Required) The ID of the security configuration to use.

    +
  • +
  • +

    version - (Required) The version number of the security configuration to use.

    +
  • +
  • +

    custom_deny - (Required) The JSON-formatted definition of the custom deny action (format).

    +
  • +
+

+Attributes Reference

+

In addition to the arguments above, the following attributes are exported:

+

*custom_deny_id - The ID of the new custom deny action.

+ +
+
+
+
+
+ + + +
+
 
+
+ + \ No newline at end of file diff --git a/docs/resources/appsec_custom_deny.md b/docs/resources/appsec_custom_deny.md new file mode 100644 index 000000000..9d77ec36d --- /dev/null +++ b/docs/resources/appsec_custom_deny.md @@ -0,0 +1,53 @@ +--- +layout: "akamai" +page_title: "Akamai: CustomDeny" +subcategory: "Application Security" +description: |- + CustomDeny +--- + +# resource_akamai_appsec_custom_deny + +The `resource_akamai_appsec_custom_deny` resource allows you to create a new custom deny action for a specific configuration version. + +## Example Usage + +Basic usage: + +```hcl +// OPEN API --> https://developer.akamai.com/api/cloud_security/application_security/v1.html#postcustomdeny +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to create a custom deny action using a JSON definition +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} +resource "akamai_appsec_custom_deny" "custom_deny" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + custom_deny = file("${path.module}/custom_deny.json") +} + +output "custom_deny_id" { + value = akamai_appsec_custom_deny.custom_deny.custom_deny_id +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The ID of the security configuration to use. + +* `version` - (Required) The version number of the security configuration to use. + +* `custom_deny` - (Required) The JSON-formatted definition of the custom deny action ([format](https://developer.akamai.com/api/cloud_security/application_security/v1.html#63df3de3)). + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +*`custom_deny_id` - The ID of the new custom deny action. + diff --git a/docs/resources/appsec_custom_rule.md b/docs/resources/appsec_custom_rule.md index 360f2fe40..f961625cb 100644 --- a/docs/resources/appsec_custom_rule.md +++ b/docs/resources/appsec_custom_rule.md @@ -40,11 +40,12 @@ output "custom_rule_rule_id" { ## Argument Reference +The following arguments are supported: + * `config_id` - (Required) The ID of the security configuration to use. * `custom_rule` - (Required) The name of a JSON file containing a custom rule definition ([format](https://developer.akamai.com/api/cloud_security/application_security/v1.html#postcustomrules)). - ## Attribute Reference In addition to the arguments above, the following attribute is exported: diff --git a/docs/resources/appsec_eval_host.html b/docs/resources/appsec_eval_host.html new file mode 100644 index 000000000..db61df54d --- /dev/null +++ b/docs/resources/appsec_eval_host.html @@ -0,0 +1,203 @@ + + + + + appsec_eval_host.md - Grip + + + + + + +
+
+ + + +
+
+
+
+ +

+ + appsec_eval_host.md +

+ +
+
+

+layout: "akamai" +page_title: "Akamai: EvalHost" +subcategory: "Application Security" +description: |- +EvalHost

+

+resource_akamai_appsec_eval_host

+

The resource_akamai_appsec_eval_host resource allows you to update the list of hostnames you want to evaluate for a configuration version.

+

+Example Usage

+

Basic usage:

+
provider "akamai" {
+  edgerc = "~/.edgerc"
+}
+
+data "akamai_appsec_configuration" "configuration" {
+  name = var.security_configuration
+}
+
+// USE CASE: user wants to specify the hostnames to evaluate
+resource "akamai_appsec_eval_host" "eval_host" {
+  config_id = data.akamai_appsec_configuration.configuration.config_id
+  version = data.akamai_appsec_configuration.configuration.latest_version
+  hostnames = var.hostnames
+}
+

+Argument Reference

+

The following arguments are supported:

+
    +
  • +

    config_id - (Required) The ID of the security configuration to use.

    +
  • +
  • +

    version - (Required) The version number of the security configuration to use.

    +
  • +
  • +

    hostnames - (Required) A list of evaluation hostnames to be used for the specified configuration version.

    +
  • +
+

+Attributes Reference

+

In addition to the arguments above, the following attributes are exported:

+
    +
  • +output_text - A tabular display of the updated evaluation hostname information.
  • +
+ +
+
+
+
+
+ + + +
+
 
+
+ + \ No newline at end of file diff --git a/docs/resources/appsec_eval_host.md b/docs/resources/appsec_eval_host.md new file mode 100644 index 000000000..5f21a6cf0 --- /dev/null +++ b/docs/resources/appsec_eval_host.md @@ -0,0 +1,49 @@ +--- +layout: "akamai" +page_title: "Akamai: EvalHost" +subcategory: "Application Security" +description: |- + EvalHost +--- + +# resource_akamai_appsec_eval_host + +The `resource_akamai_appsec_eval_host` resource allows you to update the list of hostnames you want to evaluate for a configuration version. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +// USE CASE: user wants to specify the hostnames to evaluate +resource "akamai_appsec_eval_host" "eval_host" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + hostnames = var.hostnames +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The ID of the security configuration to use. + +* `version` - (Required) The version number of the security configuration to use. + +* `hostnames` - (Required) A list of evaluation hostnames to be used for the specified configuration version. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `output_text` - A tabular display of the updated evaluation hostname information. + diff --git a/docs/resources/appsec_eval_protect_host.html b/docs/resources/appsec_eval_protect_host.html new file mode 100644 index 000000000..72eab0ddc --- /dev/null +++ b/docs/resources/appsec_eval_protect_host.html @@ -0,0 +1,208 @@ + + + + + appsec_eval_protect_host.md - Grip + + + + + + +
+
+ + + +
+
+
+
+ +

+ + appsec_eval_protect_host.md +

+ +
+
+

+layout: "akamai" +page_title: "Akamai: EvalProtectHost" +subcategory: "Application Security" +description: |- +EvalProtectHost

+

+resource_akamai_appsec_eval_protect_host

+

The resource_akamai_appsec_eval_protect_host resource allows you to move hostnames that you are evaluating to active protection. When you move a hostname from the evaluation hostnames list, it’s added to your security policy as a protected hostname.

+

+Example Usage

+

Basic usage:

+
provider "akamai" {
+  edgerc = "~/.edgerc"
+}
+
+// USE CASE: user wants to move the evaluation hosts to protected
+data "akamai_appsec_configuration" "configuration" {
+  name = var.security_configuration
+}
+
+data "akamai_appsec_eval_hostnames" "eval_hostnames" {
+  config_id = data.akamai_appsec_configuration.configuration.config_id
+  version = data.akamai_appsec_configuration.configuration.latest_version
+}
+
+resource "akamai_appsec_eval_protect_host" "protect_host" {
+  config_id = data.akamai_appsec_configuration.configuration.config_id
+  version = data.akamai_appsec_configuration.configuration.latest_version
+  hostnames = data.akamai_appsec_eval_hostnames.eval_hostnames.hostnames
+}
+

+Argument Reference

+

The following arguments are supported:

+
    +
  • +

    config_id - (Required) The ID of the security configuration to use.

    +
  • +
  • +

    version - (Required) The version number of the security configuration to use.

    +
  • +
  • +

    hostnames - (Required) The evaluation hostnames to be moved to active protection.

    +
  • +
+

+Attributes Reference

+

In addition to the arguments above, the following attributes are exported:

+
    +
  • +output_text - A tabular display of the updated evaluation hostname information.
  • +
+ +
+
+
+
+
+ + + +
+
 
+
+ + \ No newline at end of file diff --git a/docs/resources/appsec_eval_protect_host.md b/docs/resources/appsec_eval_protect_host.md new file mode 100644 index 000000000..f8d6190f0 --- /dev/null +++ b/docs/resources/appsec_eval_protect_host.md @@ -0,0 +1,54 @@ +--- +layout: "akamai" +page_title: "Akamai: EvalProtectHost" +subcategory: "Application Security" +description: |- + EvalProtectHost +--- + +# resource_akamai_appsec_eval_protect_host + +The `resource_akamai_appsec_eval_protect_host` resource allows you to move hostnames that you are evaluating to active protection. When you move a hostname from the evaluation hostnames list, it’s added to your security policy as a protected hostname. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to move the evaluation hosts to protected +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +data "akamai_appsec_eval_hostnames" "eval_hostnames" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version +} + +resource "akamai_appsec_eval_protect_host" "protect_host" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + hostnames = data.akamai_appsec_eval_hostnames.eval_hostnames.hostnames +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The ID of the security configuration to use. + +* `version` - (Required) The version number of the security configuration to use. + +* `hostnames` - (Required) The evaluation hostnames to be moved to active protection. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `output_text` - A tabular display of the updated evaluation hostname information. + diff --git a/docs/resources/appsec_ip_geo.md b/docs/resources/appsec_ip_geo.md index 167546ad4..9c4110509 100644 --- a/docs/resources/appsec_ip_geo.md +++ b/docs/resources/appsec_ip_geo.md @@ -93,4 +93,5 @@ The following arguments are supported: In addition to the arguments above, the following attributes are exported: -* `output_txt` - A tabular display of the IP/Geo firewall settings. +* `output_text` - A tabular display of the IP/Geo firewall settings. + diff --git a/docs/resources/appsec_penalty_box.md b/docs/resources/appsec_penalty_box.md index 8d2ce131c..8e479e3ce 100644 --- a/docs/resources/appsec_penalty_box.md +++ b/docs/resources/appsec_penalty_box.md @@ -46,7 +46,6 @@ The following arguments are supported: * `penalty_box_action` - (Required) The action to take when penalty box protection is triggered: `alert` to record the trigger event, `deny` to block the request, `deny_custom_{custom_deny_id}` to execute a custom deny action, or `none` to take no action. Ignored if `penalty_box_protection` is set to `false`. - ## Attributes Reference In addition to the arguments above, the following attributes are exported: diff --git a/docs/resources/appsec_reputation_analysis.html b/docs/resources/appsec_reputation_analysis.html new file mode 100644 index 000000000..97a40ef98 --- /dev/null +++ b/docs/resources/appsec_reputation_analysis.html @@ -0,0 +1,210 @@ + + + + + appsec_reputation_analysis.md - Grip + + + + + + +
+
+ + + +
+
+
+
+ +

+ + appsec_reputation_analysis.md +

+ +
+
+

+layout: "akamai" +page_title: "Akamai: ReputationAnalysis" +subcategory: "Application Security" +description: |- +ReputationAnalysis

+

+resource_akamai_appsec_reputation_analysis

+

The resource_akamai_appsec_reputation_analysis resource allows you to toggle the reputation analysis settings for a given security policy. The forward_to_http_header parameter indicates whether to add client reputation details to requests forwarded to origin in an HTTP header. The forward_shared_ip_to_http_header_siem parameter indicates whether to add value indicating that shared IPs are included in HTTP header and SIEM integration.

+

+Example Usage

+

Basic usage:

+
provider "akamai" {
+  edgerc = "~/.edgerc"
+}
+
+data "akamai_appsec_configuration" "configuration" {
+  name = var.security_configuration
+}
+
+// USE CASE: user wants to set reputation analysis settings
+resource "akamai_appsec_reputation_analysis" "reputation_analysis" {
+  config_id = data.akamai_appsec_configuration.configuration.config_id
+  version = data.akamai_appsec_configuration.configuration.latest_version
+  security_policy_id = var.security_policy_id
+  forward_to_http_header = true
+  forward_shared_ip_to_http_header_siem = true
+}
+

+Argument Reference

+

The following arguments are supported:

+
    +
  • +

    config_id - (Required) The ID of the security configuration to use.

    +
  • +
  • +

    version - (Required) The version number of the security configuration to use.

    +
  • +
  • +

    security_policy_id - (Required) The ID of the security_policy_id to which the settings should be applied.

    +
  • +
  • +

    forward_to_http_header - (Required) Whether to add client reputation details to requests forwarded to origin in an HTTP header.

    +
  • +
  • +

    forward_shared_ip_to_http_header_siem - (Required) Whether to add value indicating that shared IPs are included in HTTP header and SIEM integration.

    +
  • +
+

+Attributes Reference

+

In addition to the arguments above, the following attributes are exported:

+
    +
  • None
  • +
+ +
+
+
+
+
+ + + +
+
 
+
+ + \ No newline at end of file diff --git a/docs/resources/appsec_reputation_analysis.md b/docs/resources/appsec_reputation_analysis.md new file mode 100644 index 000000000..92741cdfe --- /dev/null +++ b/docs/resources/appsec_reputation_analysis.md @@ -0,0 +1,55 @@ +--- +layout: "akamai" +page_title: "Akamai: ReputationAnalysis" +subcategory: "Application Security" +description: |- + ReputationAnalysis +--- + +# resource_akamai_appsec_reputation_analysis + +The `resource_akamai_appsec_reputation_analysis` resource allows you to toggle the reputation analysis settings for a given security policy. The `forward_to_http_header` parameter indicates whether to add client reputation details to requests forwarded to origin in an HTTP header. The `forward_shared_ip_to_http_header_siem` parameter indicates whether to add value indicating that shared IPs are included in HTTP header and SIEM integration. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +// USE CASE: user wants to set reputation analysis settings +resource "akamai_appsec_reputation_analysis" "reputation_analysis" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + security_policy_id = var.security_policy_id + forward_to_http_header = true + forward_shared_ip_to_http_header_siem = true +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The ID of the security configuration to use. + +* `version` - (Required) The version number of the security configuration to use. + +* `security_policy_id` - (Required) The ID of the security_policy_id to which the settings should be applied. + +* `forward_to_http_header` - (Required) Whether to add client reputation details to requests forwarded to origin in an HTTP header. + +* `forward_shared_ip_to_http_header_siem` - (Required) Whether to add value indicating that shared IPs are included in HTTP header and SIEM integration. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* None + diff --git a/docs/resources/appsec_reputation_profile_action.md b/docs/resources/appsec_reputation_profile_action.md index 617c40c83..e4aa1c3f0 100644 --- a/docs/resources/appsec_reputation_profile_action.md +++ b/docs/resources/appsec_reputation_profile_action.md @@ -54,7 +54,6 @@ The following arguments are supported: * `action` - (Required) The action to take when the specified reputation profile’s rule is triggered: `alert` to record the trigger event, `deny` to block the request, `deny_custom_{custom_deny_id}` to execute a custom deny action, or `none` to take no action. - ## Attributes Reference In addition to the arguments above, the following attributes are exported: diff --git a/docs/resources/appsec_reputation_protection.md b/docs/resources/appsec_reputation_protection.md index 4d28e1a15..e45d575a3 100644 --- a/docs/resources/appsec_reputation_protection.md +++ b/docs/resources/appsec_reputation_protection.md @@ -44,7 +44,6 @@ The following arguments are supported: * `enabled` - (Required) Whether to enable reputation controls: either `true` or `false`. - ## Attributes Reference In addition to the arguments above, the following attributes are exported: diff --git a/docs/resources/appsec_slow_post.md b/docs/resources/appsec_slow_post.md index 02eeecb52..15d1adf77 100644 --- a/docs/resources/appsec_slow_post.md +++ b/docs/resources/appsec_slow_post.md @@ -52,7 +52,6 @@ The following arguments are supported: * `duration_threshold_timeout` - (Required) The time in seconds before the first eight kilobytes of the POST body must be received to avoid triggering the specified `action`. - ## Attributes Reference In addition to the arguments above, the following attributes are exported: diff --git a/docs/resources/appsec_slowpost_protection.md b/docs/resources/appsec_slowpost_protection.md index 4f9a637b7..8778bba84 100644 --- a/docs/resources/appsec_slowpost_protection.md +++ b/docs/resources/appsec_slowpost_protection.md @@ -44,7 +44,6 @@ The following arguments are supported: * `enabled` - (Required) Whether to enable slowpost controls: either `true` or `false`. - ## Attributes Reference In addition to the arguments above, the following attributes are exported: diff --git a/docs/resources/appsec_waf_protection.md b/docs/resources/appsec_waf_protection.md index 29d8f1e34..571acfebe 100644 --- a/docs/resources/appsec_waf_protection.md +++ b/docs/resources/appsec_waf_protection.md @@ -44,7 +44,6 @@ The following arguments are supported: * `enabled` - (Required) Whether to enable WAF controls: either `true` or `false`. - ## Attributes Reference In addition to the arguments above, the following attributes are exported: From a6fc363ed00edbb77afefb2f2ce1b4445f8a0954 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 15 Jan 2021 10:20:42 -0600 Subject: [PATCH 036/215] Remove blank payload from bypass network lists --- .../appsec/resource_akamai_appsec_bypass_network_lists.go | 6 +----- .../resource_akamai_appsec_bypass_network_lists_test.go | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go index e55c9f2c8..0914a9e49 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go +++ b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go @@ -106,11 +106,7 @@ func resourceBypassNetworkListsDelete(ctx context.Context, d *schema.ResourceDat } removeBypassNetworkLists.Version = version - nru := make([]string, 0, 1) - - nru = append(nru, "") - - removeBypassNetworkLists.NetworkLists = nru + removeBypassNetworkLists.NetworkLists = nil _, erru := client.RemoveBypassNetworkLists(ctx, removeBypassNetworkLists) if erru != nil { diff --git a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go index e2693a524..e0649b068 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go @@ -37,7 +37,7 @@ func TestAccAkamaiBypassNetworkLists_res_basic(t *testing.T) { client.On("RemoveBypassNetworkLists", mock.Anything, // ctx is irrelevant for this test - appsec.RemoveBypassNetworkListsRequest{ConfigID: 43253, Version: 7, NetworkLists: []string{""}}, + appsec.RemoveBypassNetworkListsRequest{ConfigID: 43253, Version: 7, NetworkLists: []string(nil)}, ).Return(&crd, nil) useClient(client, func() { From cc777bdc9c9f67771f81a7a65584328733eb0544 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Fri, 15 Jan 2021 11:37:21 -0500 Subject: [PATCH 037/215] Add missing space --- docs/resources/appsec_api_request_constraints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/appsec_api_request_constraints.md b/docs/resources/appsec_api_request_constraints.md index ffca377d8..f4c1af7af 100644 --- a/docs/resources/appsec_api_request_constraints.md +++ b/docs/resources/appsec_api_request_constraints.md @@ -58,5 +58,5 @@ The following arguments are supported: In addition to the arguments above, the following attributes are exported: -*`output_text` - A tabular display of the API request constraint information. +* `output_text` - A tabular display of the API request constraint information. From beff21842f58039cfb4cf9ba9d67a91b36bc892b Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Fri, 15 Jan 2021 11:39:08 -0500 Subject: [PATCH 038/215] Add missing space --- docs/resources/appsec_advanced_settings_prefetch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/appsec_advanced_settings_prefetch.md b/docs/resources/appsec_advanced_settings_prefetch.md index f4da7bb46..5ae4858e2 100644 --- a/docs/resources/appsec_advanced_settings_prefetch.md +++ b/docs/resources/appsec_advanced_settings_prefetch.md @@ -58,7 +58,7 @@ The following arguments are supported: In addition to the arguments above, the following attributes are exported: -*`output_text` - A tabular display showing the following updated prefetch settings. +* `output_text` - A tabular display showing the following updated prefetch settings. * `ENABLE APP LAYER` * `ALL EXTENSION` * `ENABLE RATE CONTROLS` From 453426b2ae1d5ac9f08d4667e79e0ac162731f93 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Fri, 15 Jan 2021 11:49:35 -0500 Subject: [PATCH 039/215] Add missing whitespace --- docs/data-sources/appsec_hostname_coverage_match_targets.md | 4 ++-- docs/data-sources/appsec_hostname_coverage_overlapping.md | 4 ++-- docs/data-sources/appsec_slow_post.md | 4 ++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/data-sources/appsec_hostname_coverage_match_targets.md b/docs/data-sources/appsec_hostname_coverage_match_targets.md index afbb3e1ee..5b398f3a3 100644 --- a/docs/data-sources/appsec_hostname_coverage_match_targets.md +++ b/docs/data-sources/appsec_hostname_coverage_match_targets.md @@ -40,7 +40,7 @@ The following arguments are supported: In addition to the arguments above, the following attributes are exported: -*`json` - A JSON-formatted list of the coverage information. +* `json` - A JSON-formatted list of the coverage information. -*`output_text` - A tabular display of the coverage information. +* `output_text` - A tabular display of the coverage information. diff --git a/docs/data-sources/appsec_hostname_coverage_overlapping.md b/docs/data-sources/appsec_hostname_coverage_overlapping.md index 4e3c6a7e7..4b66c22db 100644 --- a/docs/data-sources/appsec_hostname_coverage_overlapping.md +++ b/docs/data-sources/appsec_hostname_coverage_overlapping.md @@ -40,7 +40,7 @@ The following arguments are supported: In addition to the arguments above, the following attributes are exported: -*`json` - A JSON-formatted list of the overlap information. +* `json` - A JSON-formatted list of the overlap information. -*`output_text` - A tabular display of the overlap information. +* `output_text` - A tabular display of the overlap information. diff --git a/docs/data-sources/appsec_slow_post.md b/docs/data-sources/appsec_slow_post.md index 23db13390..ba0daad44 100644 --- a/docs/data-sources/appsec_slow_post.md +++ b/docs/data-sources/appsec_slow_post.md @@ -50,8 +50,12 @@ The following arguments are supported: In addition to the arguments above, the following attributes are exported: * `output_text` - A tabular display including the following columns: + * `ACTION` - The action that the rule should trigger (either `alert` or `abort`) + * `SLOW_RATE_THRESHOLD RATE` - The average rate in bytes per second over the period specified by `period` before the specified `action` is triggered. + * `SLOW_RATE_THRESHOLD PERIOD` - The length in seconds of the period during which the server should accept a request before determining whether a POST request is too slow. + * `DURATION_THRESHOLD TIMEOUT` - The time in seconds before the first eight kilobytes of the POST body must be received to avoid triggering the specified `action`. From 94b7f286ba65aced3708d6ade3def2ab943bd038 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Fri, 15 Jan 2021 11:52:28 -0500 Subject: [PATCH 040/215] Remove .html files generated in testing --- .../appsec_advanced_settings_logging.html | 213 ---------------- .../appsec_advanced_settings_prefetch.html | 222 ----------------- .../appsec_api_request_constraints.html | 215 ----------------- docs/resources/appsec_configuration.html | 227 ------------------ docs/resources/appsec_custom_deny.html | 204 ---------------- docs/resources/appsec_eval_host.html | 203 ---------------- docs/resources/appsec_eval_protect_host.html | 208 ---------------- .../resources/appsec_reputation_analysis.html | 210 ---------------- 8 files changed, 1702 deletions(-) delete mode 100644 docs/resources/appsec_advanced_settings_logging.html delete mode 100644 docs/resources/appsec_advanced_settings_prefetch.html delete mode 100644 docs/resources/appsec_api_request_constraints.html delete mode 100644 docs/resources/appsec_configuration.html delete mode 100644 docs/resources/appsec_custom_deny.html delete mode 100644 docs/resources/appsec_eval_host.html delete mode 100644 docs/resources/appsec_eval_protect_host.html delete mode 100644 docs/resources/appsec_reputation_analysis.html diff --git a/docs/resources/appsec_advanced_settings_logging.html b/docs/resources/appsec_advanced_settings_logging.html deleted file mode 100644 index 43377b23d..000000000 --- a/docs/resources/appsec_advanced_settings_logging.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - appsec_advanced_settings_logging.md - Grip - - - - - - -
-
- - - -
-
-
-
- -

- - appsec_advanced_settings_logging.md -

- -
-
-

-layout: "akamai" -page_title: "Akamai: AdvancedSettingsLogging" -subcategory: "Application Security" -description: |- -AdvancedSettingsLogging

-

-resource_akamai_appsec_advanced_settings_logging

-

The resource_akamai_appsec_advanced_settings_logging resource allows you to enable, disable, or update HTTP header logging settings for a configuration. This operation applies at the configuration level, and therefore applies to all policies within a configuration. You may override these settings for a particular policy by specifying the policy using the security_policy_id parameter.

-

-Example Usage

-

Basic usage:

-
provider "akamai" {
-  edgerc = "~/.edgerc"
-}
-
-// USE CASE: user wants to set the logging settings
-data "akamai_appsec_configuration" "configuration" {
-  name = var.security_configuration
-}
-
-resource "akamai_appsec_advanced_settings_logging" "logging" {
-  config_id = data.akamai_appsec_configuration.configuration.config_id
-  version = data.akamai_appsec_configuration.configuration.latest_version
-  logging = file("${path.module}/logging.json")
-}
-
-// USE CASE: user wants to override the logging settings for a security policy
-resource "akamai_appsec_advanced_settings_logging" "policy_logging" {
-  config_id = data.akamai_appsec_configuration.configuration.config_id
-  version = data.akamai_appsec_configuration.configuration.latest_version
-  security_policy_id = var.security_policy_id
-  logging =  file("${path.module}/logging.json")
-}
-

-Argument Reference

-

The following arguments are supported:

-
    -
  • -

    config_id - (Required) The ID of the security configuration to use.

    -
  • -
  • -

    version - (Required) The version number of the security configuration to use.

    -
  • -
  • -

    logging - (Required) The logging settings to apply (format).

    -
  • -
  • -

    security_policy_id - (Optional) The ID of a specific security policy to which the logging settings should be applied. If not supplied, the indicated settings will be applied to all policies within the configuration.

    -
  • -
-

-Attributes Reference

-

In addition to the arguments above, the following attributes are exported:

-
    -
  • None
  • -
- -
-
-
-
-
- - - -
-
 
-
- - \ No newline at end of file diff --git a/docs/resources/appsec_advanced_settings_prefetch.html b/docs/resources/appsec_advanced_settings_prefetch.html deleted file mode 100644 index 7332729c3..000000000 --- a/docs/resources/appsec_advanced_settings_prefetch.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - appsec_advanced_settings_prefetch.md - Grip - - - - - - -
-
- - - -
-
-
-
- -

- - appsec_advanced_settings_prefetch.md -

- -
-
-

-layout: "akamai" -page_title: "Akamai: AdvancedSettingsPrefetch" -subcategory: "Application Security" -description: |- -AdvancedSettingsPrefetch

-

-resource_akamai_appsec_advanced_settings_prefetch

-

The resource_akamai_appsec_advanced_settings_prefetch resource allows you to enable inspection of internal requests (those between your origin and Akamai’s servers) for file types that you specify. You can also apply rate controls to prefetch requests. This operation applies at the configuration level.

-

-Example Usage

-

Basic usage:

-
provider "akamai" {
-  edgerc = "~/.edgerc"
-}
-
-// USE CASE: user wants to set the prefetch settings
-data "akamai_appsec_configuration" "configuration" {
-  name = var.security_configuration
-}
-
-resource "akamai_appsec_advanced_settings_prefetch" "prefetch" {
-  config_id = data.akamai_appsec_configuration.configuration.config_id
-  version = data.akamai_appsec_configuration.configuration.latest_version
-  enable_app_layer = false
-  all_extensions = true
-  enable_rate_controls = false
-  extensions = var.extensions
-}
-
-output "prefetch_settings" {
-  value = akamai_appsec_advanced_settings_prefetch.prefetch.output_text
-}
-

-Argument Reference

-

The following arguments are supported:

-
    -
  • -

    config_id - (Required) The ID of the security configuration to use.

    -
  • -
  • -

    version - (Required) The version number of the security configuration to use.

    -
  • -
  • -

    enable_app_layer - (Required) Whether to enable prefetch requests.

    -
  • -
  • -

    all_extensions - (Required) Whether to enable prefetch requests for all extensions.

    -
  • -
  • -

    enable_rate_controls - (Required) Whether to enable prefetch requests for rate controls.

    -
  • -
  • -

    extensions - (Required) The specific extensions for which to enable prefetch requests. If all_extensions is True, extensions must be an empty list.

    -
  • -
-

-Attributes Reference

-

In addition to the arguments above, the following attributes are exported:

-

*output_text - A tabular display showing the following updated prefetch settings.

-
    -
  • ENABLE APP LAYER
  • -
  • ALL EXTENSION
  • -
  • ENABLE RATE CONTROLS
  • -
  • EXTENSIONS
  • -
- -
-
-
-
-
- - - -
-
 
-
- - \ No newline at end of file diff --git a/docs/resources/appsec_api_request_constraints.html b/docs/resources/appsec_api_request_constraints.html deleted file mode 100644 index ed0e4c160..000000000 --- a/docs/resources/appsec_api_request_constraints.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - appsec_api_request_constraints.md - Grip - - - - - - -
-
- - - -
-
-
-
- -

- - appsec_api_request_constraints.md -

- -
-
-

-layout: "akamai" -page_title: "Akamai: ApiRequestConstraints" -subcategory: "Application Security" -description: |- -ApiRequestConstraints

-

-resource_akamai_appsec_api_request_constraints

-

The resource_akamai_appsec_api_request_constraints resource allows you to update what action to take when the API request constraint triggers. This operation modifies an individual API constraint action. To use this operation, use the akamai_appsec_api_endpoints data source to list one or all API endpoints, and use the ID of the selected endpoint. Use the action paameter to specify how the alert should be handled.

-

-Example Usage

-

Basic usage:

-
provider "akamai" {
-  edgerc = "~/.edgerc"
-}
-
-// USE CASE: user wants to set the api request constraints action
-data "akamai_appsec_configuration" "configuration" {
-  name = var.security_configuration
-}
-
-data "akamai_appsec_api_endpoints" "api_endpoint" {
-  config_id = data.akamai_appsec_configuration.configuration.config_id
-  version = data.akamai_appsec_configuration.configuration.latest_version
-  security_policy_id = var.security_policy_id
-  name = var.api_endpoint_name
-}
-
-resource "akamai_api_request_constraints" "api_request_constraints" {
-  config_id = data.akamai_appsec_configuration.configuration.config_id
-  version = data.akamai_appsec_configuration.configuration.latest_version
-  security_policy_id = var.security_policy_id
-  api_endpoint_id = data.akamai_appsec_api_endpoints.api_endpoint.id
-  action = "alert"
-}
-

-Argument Reference

-

The following arguments are supported:

-
    -
  • -

    config_id - (Required) The ID of the security configuration to use.

    -
  • -
  • -

    version - (Required) The version number of the security configuration to use.

    -
  • -
  • -

    security_policy_id - (Required) The ID of the security policy to use.

    -
  • -
  • -

    api_endpoint_id - (Required) The ID of the API endpoint to use.

    -
  • -
  • -

    action - (Required) The action to assign to API request constraints: either alert, deny, or none.

    -
  • -
-

-Attributes Reference

-

In addition to the arguments above, the following attributes are exported:

-

*output_text - A tabular display of the API request constraint information.

- -
-
-
-
-
- - - -
-
 
-
- - \ No newline at end of file diff --git a/docs/resources/appsec_configuration.html b/docs/resources/appsec_configuration.html deleted file mode 100644 index 15f74b978..000000000 --- a/docs/resources/appsec_configuration.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - appsec_configuration.md - Grip - - - - - - -
-
- - - -
-
-
-
- -

- - appsec_configuration.md -

- -
-
-

-layout: "akamai" -page_title: "Akamai: Configuration" -subcategory: "Application Security" -description: |- -Configuration

-

-resource_akamai_appsec_configuration

-

The resource_akamai_appsec_configuration resource allows you to create a new WAP or KSD security configuration. KSD security configurations start out empty, and WAP configurations are created with preset values. The contract you pass in the request body determines which product you use. You can edit the default settings included in the WAP configuration, but you’ll need to run additional operations in this API to select specific protections for KSD. Your KSD configuration needs match targets and protection settings before it can be activated.

-

-Example Usage

-

Basic usage:

-
provider "akamai" {
-  edgerc = "~/.edgerc"
-}
-
-// USE CASE: user wants to create a new config
-data "akamai_appsec_contract_groups" "contract_groups" {
-}
-
-data "akamai_appsec_selectable_hostnames" "selectable_hostnames" {
-  config_id = data.akamai_appsec_configuration.configuration.config_id
-  version = data.akamai_appsec_configuration.configuration.latest_version
-}
-
-resource "akamai_appsec_configuration" "create_config" {
-  name = var.name
-  description = var.description
-  contract_id= data.akamai_appsec_contract_groups.contract_groups.default.contract_id
-  group_id  = data.akamai_appsec_contract_groups.contract_groups.default.group_id
-  host_names = data.akamai_appsec_selectable_hostnames.selectable_hostnames.hostnames
-}
-
-output "create_config_id" {
-  value = akamai_appsec_configuration.create_config.config_id
-}
-
-output "create_config_version" {
-  value = akamai_appsec_configuration.create_config.version
-}
-

-Argument Reference

-

The following arguments are supported:

-
    -
  • -

    name- (Required) The name to be assigned to the configuration.

    -
  • -
  • -

    description - (Required) A description of the configuration.

    -
  • -
  • -

    contract_id - (Required) The contract ID of the configuration.

    -
  • -
  • -

    group_id - (Required) The group ID of the configuration>

    -
  • -
  • -

    hostnames - (Required) The list of hostnames protected by this security configuration.

    -
  • -
-

-Attributes Reference

-

In addition to the arguments above, the following attributes are exported:

-
    -
  • -

    config_id - (Required) The ID of the security configuration.

    -
  • -
  • -

    version - (Required) The latest version of the security configuration.

    -
  • -
- -
-
-
-
-
- - - -
-
 
-
- - \ No newline at end of file diff --git a/docs/resources/appsec_custom_deny.html b/docs/resources/appsec_custom_deny.html deleted file mode 100644 index 87791be18..000000000 --- a/docs/resources/appsec_custom_deny.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - appsec_custom_deny.md - Grip - - - - - - -
-
- - - -
-
-
-
- -

- - appsec_custom_deny.md -

- -
-
-

-layout: "akamai" -page_title: "Akamai: CustomDeny" -subcategory: "Application Security" -description: |- -CustomDeny

-

-resource_akamai_appsec_custom_deny

-

The resource_akamai_appsec_custom_deny resource allows you to create a new custom deny action for a specific configuration version.

-

-Example Usage

-

Basic usage:

-
// OPEN API --> https://developer.akamai.com/api/cloud_security/application_security/v1.html#postcustomdeny
-provider "akamai" {
-  edgerc = "~/.edgerc"
-}
-
-// USE CASE: user wants to create a custom deny action using a JSON definition
-data "akamai_appsec_configuration" "configuration" {
-  name = var.security_configuration
-}
-resource "akamai_appsec_custom_deny" "custom_deny" {
-  config_id = data.akamai_appsec_configuration.configuration.config_id
-  version = data.akamai_appsec_configuration.configuration.latest_version
-  custom_deny = file("${path.module}/custom_deny.json")
-}
-
-output "custom_deny_id" {
-  value = akamai_appsec_custom_deny.custom_deny.custom_deny_id
-}
-

-Argument Reference

-

The following arguments are supported:

-
    -
  • -

    config_id - (Required) The ID of the security configuration to use.

    -
  • -
  • -

    version - (Required) The version number of the security configuration to use.

    -
  • -
  • -

    custom_deny - (Required) The JSON-formatted definition of the custom deny action (format).

    -
  • -
-

-Attributes Reference

-

In addition to the arguments above, the following attributes are exported:

-

*custom_deny_id - The ID of the new custom deny action.

- -
-
-
-
-
- - - -
-
 
-
- - \ No newline at end of file diff --git a/docs/resources/appsec_eval_host.html b/docs/resources/appsec_eval_host.html deleted file mode 100644 index db61df54d..000000000 --- a/docs/resources/appsec_eval_host.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - appsec_eval_host.md - Grip - - - - - - -
-
- - - -
-
-
-
- -

- - appsec_eval_host.md -

- -
-
-

-layout: "akamai" -page_title: "Akamai: EvalHost" -subcategory: "Application Security" -description: |- -EvalHost

-

-resource_akamai_appsec_eval_host

-

The resource_akamai_appsec_eval_host resource allows you to update the list of hostnames you want to evaluate for a configuration version.

-

-Example Usage

-

Basic usage:

-
provider "akamai" {
-  edgerc = "~/.edgerc"
-}
-
-data "akamai_appsec_configuration" "configuration" {
-  name = var.security_configuration
-}
-
-// USE CASE: user wants to specify the hostnames to evaluate
-resource "akamai_appsec_eval_host" "eval_host" {
-  config_id = data.akamai_appsec_configuration.configuration.config_id
-  version = data.akamai_appsec_configuration.configuration.latest_version
-  hostnames = var.hostnames
-}
-

-Argument Reference

-

The following arguments are supported:

-
    -
  • -

    config_id - (Required) The ID of the security configuration to use.

    -
  • -
  • -

    version - (Required) The version number of the security configuration to use.

    -
  • -
  • -

    hostnames - (Required) A list of evaluation hostnames to be used for the specified configuration version.

    -
  • -
-

-Attributes Reference

-

In addition to the arguments above, the following attributes are exported:

-
    -
  • -output_text - A tabular display of the updated evaluation hostname information.
  • -
- -
-
-
-
-
- - - -
-
 
-
- - \ No newline at end of file diff --git a/docs/resources/appsec_eval_protect_host.html b/docs/resources/appsec_eval_protect_host.html deleted file mode 100644 index 72eab0ddc..000000000 --- a/docs/resources/appsec_eval_protect_host.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - appsec_eval_protect_host.md - Grip - - - - - - -
-
- - - -
-
-
-
- -

- - appsec_eval_protect_host.md -

- -
-
-

-layout: "akamai" -page_title: "Akamai: EvalProtectHost" -subcategory: "Application Security" -description: |- -EvalProtectHost

-

-resource_akamai_appsec_eval_protect_host

-

The resource_akamai_appsec_eval_protect_host resource allows you to move hostnames that you are evaluating to active protection. When you move a hostname from the evaluation hostnames list, it’s added to your security policy as a protected hostname.

-

-Example Usage

-

Basic usage:

-
provider "akamai" {
-  edgerc = "~/.edgerc"
-}
-
-// USE CASE: user wants to move the evaluation hosts to protected
-data "akamai_appsec_configuration" "configuration" {
-  name = var.security_configuration
-}
-
-data "akamai_appsec_eval_hostnames" "eval_hostnames" {
-  config_id = data.akamai_appsec_configuration.configuration.config_id
-  version = data.akamai_appsec_configuration.configuration.latest_version
-}
-
-resource "akamai_appsec_eval_protect_host" "protect_host" {
-  config_id = data.akamai_appsec_configuration.configuration.config_id
-  version = data.akamai_appsec_configuration.configuration.latest_version
-  hostnames = data.akamai_appsec_eval_hostnames.eval_hostnames.hostnames
-}
-

-Argument Reference

-

The following arguments are supported:

-
    -
  • -

    config_id - (Required) The ID of the security configuration to use.

    -
  • -
  • -

    version - (Required) The version number of the security configuration to use.

    -
  • -
  • -

    hostnames - (Required) The evaluation hostnames to be moved to active protection.

    -
  • -
-

-Attributes Reference

-

In addition to the arguments above, the following attributes are exported:

-
    -
  • -output_text - A tabular display of the updated evaluation hostname information.
  • -
- -
-
-
-
-
- - - -
-
 
-
- - \ No newline at end of file diff --git a/docs/resources/appsec_reputation_analysis.html b/docs/resources/appsec_reputation_analysis.html deleted file mode 100644 index 97a40ef98..000000000 --- a/docs/resources/appsec_reputation_analysis.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - appsec_reputation_analysis.md - Grip - - - - - - -
-
- - - -
-
-
-
- -

- - appsec_reputation_analysis.md -

- -
-
-

-layout: "akamai" -page_title: "Akamai: ReputationAnalysis" -subcategory: "Application Security" -description: |- -ReputationAnalysis

-

-resource_akamai_appsec_reputation_analysis

-

The resource_akamai_appsec_reputation_analysis resource allows you to toggle the reputation analysis settings for a given security policy. The forward_to_http_header parameter indicates whether to add client reputation details to requests forwarded to origin in an HTTP header. The forward_shared_ip_to_http_header_siem parameter indicates whether to add value indicating that shared IPs are included in HTTP header and SIEM integration.

-

-Example Usage

-

Basic usage:

-
provider "akamai" {
-  edgerc = "~/.edgerc"
-}
-
-data "akamai_appsec_configuration" "configuration" {
-  name = var.security_configuration
-}
-
-// USE CASE: user wants to set reputation analysis settings
-resource "akamai_appsec_reputation_analysis" "reputation_analysis" {
-  config_id = data.akamai_appsec_configuration.configuration.config_id
-  version = data.akamai_appsec_configuration.configuration.latest_version
-  security_policy_id = var.security_policy_id
-  forward_to_http_header = true
-  forward_shared_ip_to_http_header_siem = true
-}
-

-Argument Reference

-

The following arguments are supported:

-
    -
  • -

    config_id - (Required) The ID of the security configuration to use.

    -
  • -
  • -

    version - (Required) The version number of the security configuration to use.

    -
  • -
  • -

    security_policy_id - (Required) The ID of the security_policy_id to which the settings should be applied.

    -
  • -
  • -

    forward_to_http_header - (Required) Whether to add client reputation details to requests forwarded to origin in an HTTP header.

    -
  • -
  • -

    forward_shared_ip_to_http_header_siem - (Required) Whether to add value indicating that shared IPs are included in HTTP header and SIEM integration.

    -
  • -
-

-Attributes Reference

-

In addition to the arguments above, the following attributes are exported:

-
    -
  • None
  • -
- -
-
-
-
-
- - - -
-
 
-
- - \ No newline at end of file From 0295ab25137e381c9b0e49dab6fc1662c032c77f Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 15 Jan 2021 10:59:18 -0600 Subject: [PATCH 041/215] Remove extra string from eval host API call on destroy --- pkg/providers/appsec/resource_akamai_appsec_eval_host.go | 6 +----- .../appsec/resource_akamai_appsec_eval_host_test.go | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_host.go b/pkg/providers/appsec/resource_akamai_appsec_eval_host.go index 5d8bcec81..9768e9d07 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_host.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_host.go @@ -106,11 +106,7 @@ func resourceEvalHostDelete(ctx context.Context, d *schema.ResourceData, m inter } removeEvalHost.Version = version - hn := make([]string, 0, 1) - - hn = append(hn, "") - - removeEvalHost.Hostnames = hn + removeEvalHost.Hostnames = nil _, erru := client.RemoveEvalHost(ctx, removeEvalHost) if erru != nil { diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go index 48c7c1f60..807a061e2 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go @@ -37,7 +37,7 @@ func TestAccAkamaiEvalHost_res_basic(t *testing.T) { client.On("RemoveEvalHost", mock.Anything, // ctx is irrelevant for this test - appsec.RemoveEvalHostRequest{ConfigID: 43253, Version: 7, Hostnames: []string{""}}, + appsec.RemoveEvalHostRequest{ConfigID: 43253, Version: 7, Hostnames: []string(nil)}, ).Return(&crd, nil) useClient(client, func() { From c6ad105095d5c4c09157db5ea9a3680befd69759 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 15 Jan 2021 12:15:08 -0600 Subject: [PATCH 042/215] Make API ID optional in api_request_constraints --- .../appsec/resource_akamai_appsec_api_request_constraints.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go index 31805da5e..45c84aeaf 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go @@ -41,7 +41,7 @@ func resourceApiRequestConstraints() *schema.Resource { }, "api_endpoint_id": { Type: schema.TypeInt, - Required: true, + Optional: true, }, "action": { Type: schema.TypeString, From 53bf8b6651289675ae329976203f9337ea0c3055 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 15 Jan 2021 13:54:42 -0600 Subject: [PATCH 043/215] Fix failover hostnames --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 77af890c3..c6ac978e7 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -121,7 +121,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["configuration"] = &OutputTemplate{TemplateName: "Configurations", TableTitle: "Config_id|Name|Latest_version|Version_active_in_staging|Version_active_in_production", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .Configurations}}{{if $index}},{{end}}{{.ID}}|{{.Name}}|{{.LatestVersion}}|{{.StagingVersion}}|{{.ProductionVersion}}{{end}}"} otm["configurationVersion"] = &OutputTemplate{TemplateName: "ConfigurationVersion", TableTitle: "Version Number|Staging Status|Production Status", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .VersionList}}{{if $index}},{{end}}{{.Version}}|{{.Staging.Status}}|{{.Production.Status}}{{end}}"} otm["contractsgroupsDS"] = &OutputTemplate{TemplateName: "contractsgroupsDS", TableTitle: "ContractID|GroupID|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .ContractGroups}}{{if $index}},{{end}}{{.ContractID}}|{{.GroupID}}|{{.DisplayName}}{{end}}"} - otm["failoverHostnamesDS"] = &OutputTemplate{TemplateName: "failoverHostnamesDS", TableTitle: "Hostname", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .AvailableSet}}{{if $index}},{{end}}{{.Hostname}}{{end}}"} + otm["failoverHostnamesDS"] = &OutputTemplate{TemplateName: "failoverHostnamesDS", TableTitle: "Hostname", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .HostnameList}}{{if $index}},{{end}}{{.Hostname}}{{end}}"} otm["penaltyBoxDS"] = &OutputTemplate{TemplateName: "penaltyBoxDS", TableTitle: "PenaltyBoxProtection|Action", TemplateType: "TABULAR", TemplateString: "{{.PenaltyBoxProtection}}|{{.Action}}"} From f4de32e5f099a196a27eda58f903c6db51b9dd80 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Sun, 17 Jan 2021 21:11:43 -0600 Subject: [PATCH 044/215] Add support for JSON raw payloads direct to edgegrid API --- ...akamai_appsec_advanced_settings_logging.go | 8 +- ...i_appsec_advanced_settings_logging_test.go | 10 +- ...appsec_attack_group_condition_exception.go | 6 +- ...c_attack_group_condition_exception_test.go | 23 +-- ...urce_akamai_appsec_bypass_network_lists.go | 4 +- ...akamai_appsec_bypass_network_lists_test.go | 2 +- .../resource_akamai_appsec_custom_deny.go | 12 +- ...resource_akamai_appsec_custom_deny_test.go | 44 +--- .../resource_akamai_appsec_custom_rule.go | 16 +- ...resource_akamai_appsec_custom_rule_test.go | 76 +------ .../resource_akamai_appsec_eval_host.go | 4 +- .../resource_akamai_appsec_eval_host_test.go | 2 +- ...ai_appsec_eval_rule_condition_exception.go | 4 +- ...psec_eval_rule_condition_exception_test.go | 16 +- .../resource_akamai_appsec_match_target.go | 14 +- ...esource_akamai_appsec_match_target_test.go | 28 +-- .../resource_akamai_appsec_rate_policy.go | 12 +- ...resource_akamai_appsec_rate_policy_test.go | 60 +----- ...source_akamai_appsec_reputation_profile.go | 188 ++++++++++++------ ..._akamai_appsec_rule_condition_exception.go | 6 +- ...ai_appsec_rule_condition_exception_test.go | 71 +------ .../resource_akamai_appsec_security_policy.go | 11 + ...urce_akamai_appsec_security_policy_test.go | 2 +- pkg/providers/appsec/templates.go | 2 +- 24 files changed, 204 insertions(+), 417 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go index 98b251b6b..6ff0cee37 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go @@ -105,11 +105,11 @@ func resourceAdvancedSettingsLoggingUpdate(ctx context.Context, d *schema.Resour updateAdvancedSettingsLogging := appsec.UpdateAdvancedSettingsLoggingRequest{} - jsonpostpayload := d.Get("logging").(string) + jsonpostpayload := d.Get("logging") + jsonPayloadRaw := []byte(jsonpostpayload.(string)) + rawJSON := (json.RawMessage)(jsonPayloadRaw) - if err := json.Unmarshal([]byte(jsonpostpayload), &updateAdvancedSettingsLogging); err != nil { - return diag.FromErr(err) - } + updateAdvancedSettingsLogging.JsonPayloadRaw = rawJSON configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go index 484392b9f..938af606e 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go @@ -28,15 +28,7 @@ func TestAccAkamaiAdvancedSettingsLogging_res_basic(t *testing.T) { client.On("UpdateAdvancedSettingsLogging", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "", Override: false, AllowSampling: true, Cookies: struct { - Type string "json:\"type\"" - }{Type: "all"}, CustomHeaders: struct { - Type string "json:\"type\"" - Values []string "json:\"values\"" - }{Type: "exclude", Values: []string{"csdasdad"}}, StandardHeaders: struct { - Type string "json:\"type\"" - Values []string "json:\"values\"" - }{Type: "only", Values: []string{"Accept"}}}, + appsec.UpdateAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "", JsonPayloadRaw: json.RawMessage{0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x6c, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x73, 0x64, 0x61, 0x73, 0x64, 0x61, 0x64, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6f, 0x6e, 0x6c, 0x79, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x7d, 0xa}}, ).Return(&cu, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go index 989b95bd4..3da3fc1b6 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go @@ -163,10 +163,10 @@ func resourceAttackGroupConditionExceptionUpdate(ctx context.Context, d *schema. updateAttackGroupConditionException := appsec.UpdateAttackGroupConditionExceptionRequest{} jsonpostpayload := d.Get("condition_exception") + jsonPayloadRaw := []byte(jsonpostpayload.(string)) + rawJSON := (json.RawMessage)(jsonPayloadRaw) - if err := json.Unmarshal([]byte(jsonpostpayload.(string)), &updateAttackGroupConditionException); err != nil { - return diag.FromErr(err) - } + updateAttackGroupConditionException.JsonPayloadRaw = rawJSON configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { diff --git a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception_test.go b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception_test.go index 0efa3cc6d..04a6f95fc 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception_test.go @@ -37,28 +37,7 @@ func TestAccAkamaiAttackGroupConditionException_res_basic(t *testing.T) { client.On("UpdateAttackGroupConditionException", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateAttackGroupConditionExceptionRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", Group: "SQL", Conditions: []struct { - Type string "json:\"type\"" - Filenames []string "json:\"filenames,omitempty\"" - PositiveMatch bool "json:\"positiveMatch\"" - Methods []string "json:\"methods,omitempty\"" - }{}, Exception: struct { - HeaderCookieOrParamValues []string "json:\"headerCookieOrParamValues\"" - SpecificHeaderCookieOrParamNames []struct { - Names []string "json:\"names,omitempty\"" - Selector string "json:\"selector,omitempty\"" - } "json:\"specificHeaderCookieOrParamNames,omitempty\"" - SpecificHeaderCookieOrParamPrefix struct { - Prefix string "json:\"prefix,omitempty\"" - Selector string "json:\"selector,omitempty\"" - } "json:\"specificHeaderCookieOrParamPrefix,omitempty\"" - }{HeaderCookieOrParamValues: []string{"abc"}, SpecificHeaderCookieOrParamNames: []struct { - Names []string "json:\"names,omitempty\"" - Selector string "json:\"selector,omitempty\"" - }(nil), SpecificHeaderCookieOrParamPrefix: struct { - Prefix string "json:\"prefix,omitempty\"" - Selector string "json:\"selector,omitempty\"" - }{Prefix: "a*", Selector: "REQUEST_COOKIES"}}}, + appsec.UpdateAttackGroupConditionExceptionRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", Group: "SQL", JsonPayloadRaw: json.RawMessage{0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x62, 0x63, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x2a, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4f, 0x4b, 0x49, 0x45, 0x53, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x7d, 0xa}}, ).Return(&cu, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go index 0914a9e49..01a8affc1 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go +++ b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go @@ -106,7 +106,9 @@ func resourceBypassNetworkListsDelete(ctx context.Context, d *schema.ResourceDat } removeBypassNetworkLists.Version = version - removeBypassNetworkLists.NetworkLists = nil + hn := make([]string, 0, 1) + + removeBypassNetworkLists.NetworkLists = hn _, erru := client.RemoveBypassNetworkLists(ctx, removeBypassNetworkLists) if erru != nil { diff --git a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go index e0649b068..7a2a63d91 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go @@ -37,7 +37,7 @@ func TestAccAkamaiBypassNetworkLists_res_basic(t *testing.T) { client.On("RemoveBypassNetworkLists", mock.Anything, // ctx is irrelevant for this test - appsec.RemoveBypassNetworkListsRequest{ConfigID: 43253, Version: 7, NetworkLists: []string(nil)}, + appsec.RemoveBypassNetworkListsRequest{ConfigID: 43253, Version: 7, NetworkLists: []string{}}, ).Return(&crd, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go b/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go index 7f224dfd4..accddab22 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go @@ -58,10 +58,10 @@ func resourceCustomDenyCreate(ctx context.Context, d *schema.ResourceData, m int createCustomDeny := appsec.CreateCustomDenyRequest{} jsonpostpayload := d.Get("custom_deny") + jsonPayloadRaw := []byte(jsonpostpayload.(string)) + rawJSON := (json.RawMessage)(jsonPayloadRaw) - if err := json.Unmarshal([]byte(jsonpostpayload.(string)), &createCustomDeny); err != nil { - return diag.FromErr(err) - } + createCustomDeny.JsonPayloadRaw = rawJSON configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { @@ -94,10 +94,10 @@ func resourceCustomDenyUpdate(ctx context.Context, d *schema.ResourceData, m int updateCustomDeny := appsec.UpdateCustomDenyRequest{} jsonpostpayload := d.Get("custom_deny") + jsonPayloadRaw := []byte(jsonpostpayload.(string)) + rawJSON := (json.RawMessage)(jsonPayloadRaw) - if err := json.Unmarshal([]byte(jsonpostpayload.(string)), &updateCustomDeny); err != nil { - return diag.FromErr(err) - } + updateCustomDeny.JsonPayloadRaw = rawJSON configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go b/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go index 9fddd27fb..7b53dfdf4 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go @@ -41,52 +41,12 @@ func TestAccAkamaiCustomDeny_res_basic(t *testing.T) { client.On("UpdateCustomDeny", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateCustomDenyRequest{ConfigID: 43253, Version: 7, Description: "testing", Name: "new_custom_deny", ID: "deny_custom_622918", Parameters: []struct { - DisplayName string "json:\"displayName\"" - Name string "json:\"name\"" - Value string "json:\"value\"" - }{struct { - DisplayName string "json:\"displayName\"" - Name string "json:\"name\"" - Value string "json:\"value\"" - }{DisplayName: "", Name: "response_status_code", Value: "403"}, struct { - DisplayName string "json:\"displayName\"" - Name string "json:\"name\"" - Value string "json:\"value\"" - }{DisplayName: "", Name: "prevent_browser_cache", Value: "false"}, struct { - DisplayName string "json:\"displayName\"" - Name string "json:\"name\"" - Value string "json:\"value\"" - }{DisplayName: "", Name: "response_content_type", Value: "application/json"}, struct { - DisplayName string "json:\"displayName\"" - Name string "json:\"name\"" - Value string "json:\"value\"" - }{DisplayName: "", Name: "response_body_content", Value: "new testing"}}}, + appsec.UpdateCustomDenyRequest{ConfigID: 43253, Version: 7, ID: "deny_custom_622918", JsonPayloadRaw: json.RawMessage{0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x64, 0x65, 0x6e, 0x79, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x50, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x22, 0x20, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x34, 0x30, 0x33, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6e, 0x65, 0x77, 0x20, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x7d, 0xa}}, ).Return(&cu, nil) client.On("CreateCustomDeny", mock.Anything, // ctx is irrelevant for this test - appsec.CreateCustomDenyRequest{ConfigID: 43253, Version: 7, Description: "testing", Name: "new_custom_deny", Parameters: []struct { - DisplayName string "json:\"displayName\"" - Name string "json:\"name\"" - Value string "json:\"value\"" - }{struct { - DisplayName string "json:\"displayName\"" - Name string "json:\"name\"" - Value string "json:\"value\"" - }{DisplayName: "", Name: "response_status_code", Value: "403"}, struct { - DisplayName string "json:\"displayName\"" - Name string "json:\"name\"" - Value string "json:\"value\"" - }{DisplayName: "", Name: "prevent_browser_cache", Value: "true"}, struct { - DisplayName string "json:\"displayName\"" - Name string "json:\"name\"" - Value string "json:\"value\"" - }{DisplayName: "", Name: "response_content_type", Value: "application/json"}, struct { - DisplayName string "json:\"displayName\"" - Name string "json:\"name\"" - Value string "json:\"value\"" - }{DisplayName: "", Name: "response_body_content", Value: "new testing"}}}, + appsec.CreateCustomDenyRequest{ConfigID: 43253, Version: 7, JsonPayloadRaw: json.RawMessage{0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x64, 0x65, 0x6e, 0x79, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x50, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x22, 0x20, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x34, 0x30, 0x33, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x72, 0x75, 0x65, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6e, 0x65, 0x77, 0x20, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x7d, 0xa}}, ).Return(&crc, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go index 5c27c2b46..205067ad3 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go @@ -55,11 +55,11 @@ func resourceCustomRuleCreate(ctx context.Context, d *schema.ResourceData, m int } createCustomRule.ConfigID = configid - jsonpostpayload := d.Get("custom_rule").(string) + jsonpostpayload := d.Get("custom_rule") - if err := json.Unmarshal([]byte(jsonpostpayload), &createCustomRule); err != nil { - return diag.FromErr(err) - } + jsonPayloadRaw := []byte(jsonpostpayload.(string)) + rawJSON := (json.RawMessage)(jsonPayloadRaw) + createCustomRule.JsonPayloadRaw = rawJSON customrule, err := client.CreateCustomRule(ctx, createCustomRule) if err != nil { @@ -96,11 +96,11 @@ func resourceCustomRuleUpdate(ctx context.Context, d *schema.ResourceData, m int } updateCustomRule.ID = ID - jsonpostpayload := d.Get("custom_rule").(string) + jsonpostpayload := d.Get("custom_rule") - if err := json.Unmarshal([]byte(jsonpostpayload), &updateCustomRule); err != nil { - return diag.FromErr(err) - } + jsonPayloadRaw := []byte(jsonpostpayload.(string)) + rawJSON := (json.RawMessage)(jsonPayloadRaw) + updateCustomRule.JsonPayloadRaw = rawJSON _, erru := client.UpdateCustomRule(ctx, updateCustomRule) if erru != nil { diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_test.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_test.go index 8b1fe0b8b..e56085722 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_test.go @@ -36,84 +36,12 @@ func TestAccAkamaiCustomRule_res_basic(t *testing.T) { client.On("UpdateCustomRule", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateCustomRuleRequest{ConfigID: 43253, ID: 661699, Name: "Rule Test New Updated", Description: "Can I create all conditions?", Version: 0, RuleActivated: false, Tag: []string{"test"}, Conditions: []struct { - Type string "json:\"type\"" - PositiveMatch bool "json:\"positiveMatch\"" - Value []string "json:\"value,omitempty\"" - ValueWildcard bool "json:\"valueWildcard,omitempty\"" - ValueCase bool "json:\"valueCase,omitempty\"" - NameWildcard bool "json:\"nameWildcard,omitempty\"" - Name []string "json:\"name,omitempty\"" - NameCase bool "json:\"nameCase,omitempty\"" - }{struct { - Type string "json:\"type\"" - PositiveMatch bool "json:\"positiveMatch\"" - Value []string "json:\"value,omitempty\"" - ValueWildcard bool "json:\"valueWildcard,omitempty\"" - ValueCase bool "json:\"valueCase,omitempty\"" - NameWildcard bool "json:\"nameWildcard,omitempty\"" - Name []string "json:\"name,omitempty\"" - NameCase bool "json:\"nameCase,omitempty\"" - }{Type: "requestMethodMatch", PositiveMatch: true, Value: []string{"GET", "CONNECT", "TRACE", "PUT", "POST", "OPTIONS", "DELETE", "HEAD"}, ValueWildcard: false, ValueCase: false, NameWildcard: false, Name: []string(nil), NameCase: false}, struct { - Type string "json:\"type\"" - PositiveMatch bool "json:\"positiveMatch\"" - Value []string "json:\"value,omitempty\"" - ValueWildcard bool "json:\"valueWildcard,omitempty\"" - ValueCase bool "json:\"valueCase,omitempty\"" - NameWildcard bool "json:\"nameWildcard,omitempty\"" - Name []string "json:\"name,omitempty\"" - NameCase bool "json:\"nameCase,omitempty\"" - }{Type: "pathMatch", PositiveMatch: true, Value: []string{"/H", "/Li", "/He"}, ValueWildcard: false, ValueCase: false, NameWildcard: false, Name: []string(nil), NameCase: false}, struct { - Type string "json:\"type\"" - PositiveMatch bool "json:\"positiveMatch\"" - Value []string "json:\"value,omitempty\"" - ValueWildcard bool "json:\"valueWildcard,omitempty\"" - ValueCase bool "json:\"valueCase,omitempty\"" - NameWildcard bool "json:\"nameWildcard,omitempty\"" - Name []string "json:\"name,omitempty\"" - NameCase bool "json:\"nameCase,omitempty\"" - }{Type: "extensionMatch", PositiveMatch: true, Value: []string{"Li", "He", "H"}, ValueWildcard: true, ValueCase: true, NameWildcard: false, Name: []string(nil), NameCase: false}}}, + appsec.UpdateCustomRuleRequest{ConfigID: 43253, ID: 661699, Version: 0, JsonPayloadRaw: json.RawMessage{0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x52, 0x75, 0x6c, 0x65, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x43, 0x61, 0x6e, 0x20, 0x49, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3f, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x61, 0x67, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x47, 0x45, 0x54, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x54, 0x52, 0x41, 0x43, 0x45, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x50, 0x55, 0x54, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x50, 0x4f, 0x53, 0x54, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x48, 0x45, 0x41, 0x44, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x70, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x48, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x4c, 0x69, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x48, 0x65, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x57, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x61, 0x73, 0x65, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x4c, 0x69, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x48, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x48, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x7d, 0xa}}, ).Return(&cu, nil) client.On("CreateCustomRule", mock.Anything, // ctx is irrelevant for this test - appsec.CreateCustomRuleRequest{ConfigID: 43253, Name: "Rule Test New", Description: "Can I create all conditions?", Version: 0, RuleActivated: false, Tag: []string{"test"}, Conditions: []struct { - Type string "json:\"type\"" - PositiveMatch bool "json:\"positiveMatch\"" - Value []string "json:\"value,omitempty\"" - ValueWildcard bool "json:\"valueWildcard,omitempty\"" - ValueCase bool "json:\"valueCase,omitempty\"" - NameWildcard bool "json:\"nameWildcard,omitempty\"" - Name []string "json:\"name,omitempty\"" - NameCase bool "json:\"nameCase,omitempty\"" - }{struct { - Type string "json:\"type\"" - PositiveMatch bool "json:\"positiveMatch\"" - Value []string "json:\"value,omitempty\"" - ValueWildcard bool "json:\"valueWildcard,omitempty\"" - ValueCase bool "json:\"valueCase,omitempty\"" - NameWildcard bool "json:\"nameWildcard,omitempty\"" - Name []string "json:\"name,omitempty\"" - NameCase bool "json:\"nameCase,omitempty\"" - }{Type: "requestMethodMatch", PositiveMatch: true, Value: []string{"GET", "CONNECT", "TRACE", "PUT", "POST", "OPTIONS", "DELETE", "HEAD"}, ValueWildcard: false, ValueCase: false, NameWildcard: false, Name: []string(nil), NameCase: false}, struct { - Type string "json:\"type\"" - PositiveMatch bool "json:\"positiveMatch\"" - Value []string "json:\"value,omitempty\"" - ValueWildcard bool "json:\"valueWildcard,omitempty\"" - ValueCase bool "json:\"valueCase,omitempty\"" - NameWildcard bool "json:\"nameWildcard,omitempty\"" - Name []string "json:\"name,omitempty\"" - NameCase bool "json:\"nameCase,omitempty\"" - }{Type: "pathMatch", PositiveMatch: true, Value: []string{"/H", "/Li", "/He"}, ValueWildcard: false, ValueCase: false, NameWildcard: false, Name: []string(nil), NameCase: false}, struct { - Type string "json:\"type\"" - PositiveMatch bool "json:\"positiveMatch\"" - Value []string "json:\"value,omitempty\"" - ValueWildcard bool "json:\"valueWildcard,omitempty\"" - ValueCase bool "json:\"valueCase,omitempty\"" - NameWildcard bool "json:\"nameWildcard,omitempty\"" - Name []string "json:\"name,omitempty\"" - NameCase bool "json:\"nameCase,omitempty\"" - }{Type: "extensionMatch", PositiveMatch: true, Value: []string{"Li", "He", "H"}, ValueWildcard: true, ValueCase: true, NameWildcard: false, Name: []string(nil), NameCase: false}}}, + appsec.CreateCustomRuleRequest{ConfigID: 43253, Version: 0, JsonPayloadRaw: json.RawMessage{0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x52, 0x75, 0x6c, 0x65, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x77, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x43, 0x61, 0x6e, 0x20, 0x49, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3f, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x61, 0x67, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x47, 0x45, 0x54, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x54, 0x52, 0x41, 0x43, 0x45, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x50, 0x55, 0x54, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x50, 0x4f, 0x53, 0x54, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x48, 0x45, 0x41, 0x44, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x70, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x48, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x4c, 0x69, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x48, 0x65, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x57, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x61, 0x73, 0x65, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x4c, 0x69, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x48, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x48, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x7d, 0xa}}, ).Return(&cc, nil) client.On("RemoveCustomRule", diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_host.go b/pkg/providers/appsec/resource_akamai_appsec_eval_host.go index 9768e9d07..bb6701c62 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_host.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_host.go @@ -106,7 +106,9 @@ func resourceEvalHostDelete(ctx context.Context, d *schema.ResourceData, m inter } removeEvalHost.Version = version - removeEvalHost.Hostnames = nil + hn := make([]string, 0, 1) + + removeEvalHost.Hostnames = hn _, erru := client.RemoveEvalHost(ctx, removeEvalHost) if erru != nil { diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go index 807a061e2..afe4023ec 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go @@ -37,7 +37,7 @@ func TestAccAkamaiEvalHost_res_basic(t *testing.T) { client.On("RemoveEvalHost", mock.Anything, // ctx is irrelevant for this test - appsec.RemoveEvalHostRequest{ConfigID: 43253, Version: 7, Hostnames: []string(nil)}, + appsec.RemoveEvalHostRequest{ConfigID: 43253, Version: 7, Hostnames: []string{}}, ).Return(&crd, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go index e2d439111..014625e89 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go @@ -165,7 +165,9 @@ func resourceEvalRuleConditionExceptionUpdate(ctx context.Context, d *schema.Res jsonpostpayload := d.Get("condition_exception") - json.Unmarshal([]byte(jsonpostpayload.(string)), &updateEvalRuleConditionException) + jsonPayloadRaw := []byte(jsonpostpayload.(string)) + rawJSON := (json.RawMessage)(jsonPayloadRaw) + updateEvalRuleConditionException.JsonPayloadRaw = rawJSON configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception_test.go index ec3bdc4e3..51ec343d3 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception_test.go @@ -37,21 +37,7 @@ func TestAccAkamaiEvalRuleConditionException_res_basic(t *testing.T) { client.On("UpdateEvalRuleConditionException", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateEvalRuleConditionExceptionRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", RuleID: 12345, Conditions: []struct { - Type string "json:\"type\"" - Filenames []string "json:\"filenames,omitempty\"" - PositiveMatch bool "json:\"positiveMatch\"" - Methods []string "json:\"methods,omitempty\"" - }{}, Exception: struct { - HeaderCookieOrParamValues []string "json:\"headerCookieOrParamValues\"" - SpecificHeaderCookieOrParamNames []struct { - Names []string "json:\"names\"" - Selector string "json:\"selector\"" - } "json:\"specificHeaderCookieOrParamNames\"" - }{HeaderCookieOrParamValues: []string{"abc"}, SpecificHeaderCookieOrParamNames: []struct { - Names []string "json:\"names\"" - Selector string "json:\"selector\"" - }(nil)}}, + appsec.UpdateEvalRuleConditionExceptionRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", RuleID: 12345, JsonPayloadRaw: json.RawMessage{0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x62, 0x63, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x2a, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4f, 0x4b, 0x49, 0x45, 0x53, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x7d, 0xa}}, ).Return(&cu, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/resource_akamai_appsec_match_target.go b/pkg/providers/appsec/resource_akamai_appsec_match_target.go index 064948d98..8cbc2648d 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_match_target.go +++ b/pkg/providers/appsec/resource_akamai_appsec_match_target.go @@ -56,9 +56,10 @@ func resourceMatchTargetCreate(ctx context.Context, d *schema.ResourceData, m in jsonpostpayload := d.Get("match_target") - if err := json.Unmarshal([]byte(jsonpostpayload.(string)), &createMatchTarget); err != nil { - return diag.FromErr(err) - } + jsonPayloadRaw := []byte(jsonpostpayload.(string)) + rawJSON := (json.RawMessage)(jsonPayloadRaw) + + createMatchTarget.JsonPayloadRaw = rawJSON postresp, err := client.CreateMatchTarget(ctx, createMatchTarget) if err != nil { @@ -93,9 +94,10 @@ func resourceMatchTargetUpdate(ctx context.Context, d *schema.ResourceData, m in jsonpostpayload := d.Get("match_target") - if err := json.Unmarshal([]byte(jsonpostpayload.(string)), &updateMatchTarget); err != nil { - return diag.FromErr(err) - } + jsonPayloadRaw := []byte(jsonpostpayload.(string)) + rawJSON := (json.RawMessage)(jsonPayloadRaw) + + updateMatchTarget.JsonPayloadRaw = rawJSON targetID, errconv := strconv.Atoi(d.Id()) diff --git a/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go b/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go index c45c4836f..318e978fa 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go @@ -38,36 +38,12 @@ func TestAccAkamaiMatchTarget_res_basic(t *testing.T) { client.On("CreateMatchTarget", mock.Anything, // ctx is irrelevant for this test - appsec.CreateMatchTargetRequest{Type: "website", ConfigID: 43253, ConfigVersion: 15, DefaultFile: "NO_MATCH", EffectiveSecurityControls: struct { - ApplyApplicationLayerControls bool "json:\"applyApplicationLayerControls\"" - ApplyBotmanControls bool "json:\"applyBotmanControls\"" - ApplyNetworkLayerControls bool "json:\"applyNetworkLayerControls\"" - ApplyRateControls bool "json:\"applyRateControls\"" - ApplyReputationControls bool "json:\"applyReputationControls\"" - ApplySlowPostControls bool "json:\"applySlowPostControls\"" - }{ApplyApplicationLayerControls: false, ApplyBotmanControls: false, ApplyNetworkLayerControls: false, ApplyRateControls: false, ApplyReputationControls: false, ApplySlowPostControls: false}, FileExtensions: []string{"carb", "pct", "pdf", "swf", "cct", "jpeg", "js", "wmls", "hdml", "pws"}, FilePaths: []string{"/cache/aaabbc*"}, Hostnames: []string{"m.example.com", "www.example.net", "example.com"}, IsNegativeFileExtensionMatch: false, IsNegativePathMatch: false, SecurityPolicy: struct { - PolicyID string "json:\"policyId\"" - }{PolicyID: "AAAA_81230"}, Sequence: 1, BypassNetworkLists: []struct { - Name string "json:\"name\"" - ID string "json:\"id\"" - }(nil)}, + appsec.CreateMatchTargetRequest{Type: "", ConfigID: 0, ConfigVersion: 0, JsonPayloadRaw: json.RawMessage{0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x22, 0x3a, 0x20, 0x34, 0x33, 0x32, 0x35, 0x33, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x20, 0x31, 0x35, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x4e, 0x4f, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x42, 0x6f, 0x74, 0x6d, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x6c, 0x6f, 0x77, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x61, 0x72, 0x62, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x63, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x64, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x77, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x63, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6a, 0x70, 0x65, 0x67, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6a, 0x73, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x6d, 0x6c, 0x73, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x64, 0x6d, 0x6c, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x77, 0x73, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63, 0x2a, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x41, 0x41, 0x41, 0x41, 0x5f, 0x38, 0x31, 0x32, 0x33, 0x30, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x3a, 0x20, 0x31, 0xa, 0x7d, 0xa}}, ).Return(&crmt, nil) client.On("UpdateMatchTarget", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateMatchTargetRequest{Type: "website", ConfigID: 43253, ConfigVersion: 15, TargetID: 3008967, DefaultFile: "NO_MATCH", EffectiveSecurityControls: struct { - ApplyApplicationLayerControls bool "json:\"applyApplicationLayerControls\"" - ApplyBotmanControls bool "json:\"applyBotmanControls\"" - ApplyNetworkLayerControls bool "json:\"applyNetworkLayerControls\"" - ApplyRateControls bool "json:\"applyRateControls\"" - ApplyReputationControls bool "json:\"applyReputationControls\"" - ApplySlowPostControls bool "json:\"applySlowPostControls\"" - }{ApplyApplicationLayerControls: false, ApplyBotmanControls: false, ApplyNetworkLayerControls: false, ApplyRateControls: false, ApplyReputationControls: false, ApplySlowPostControls: false}, FileExtensions: []string{"carb", "pct", "pdf", "swf", "cct", "jpeg", "js", "wmls", "hdml", "pws"}, FilePaths: []string{"/cache/aaabbc*"}, Hostnames: []string{"m1.example.com", "www.example.net", "example.com"}, IsNegativeFileExtensionMatch: false, IsNegativePathMatch: false, SecurityPolicy: struct { - PolicyID string "json:\"policyId\"" - }{PolicyID: "AAAA_81230"}, Sequence: 1, BypassNetworkLists: []struct { - Name string "json:\"name\"" - ID string "json:\"id\"" - }(nil)}, + appsec.UpdateMatchTargetRequest{ConfigID: 0, ConfigVersion: 0, JsonPayloadRaw: json.RawMessage{0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x22, 0x3a, 0x20, 0x34, 0x33, 0x32, 0x35, 0x33, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x20, 0x31, 0x35, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x4e, 0x4f, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x42, 0x6f, 0x74, 0x6d, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x6c, 0x6f, 0x77, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x61, 0x72, 0x62, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x63, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x64, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x77, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x63, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6a, 0x70, 0x65, 0x67, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6a, 0x73, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x6d, 0x6c, 0x73, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x64, 0x6d, 0x6c, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x77, 0x73, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63, 0x2a, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x31, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x41, 0x41, 0x41, 0x41, 0x5f, 0x38, 0x31, 0x32, 0x33, 0x30, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x3a, 0x20, 0x31, 0xa, 0x7d, 0xa}, TargetID: 3008967}, ).Return(&cu, nil) client.On("RemoveMatchTarget", diff --git a/pkg/providers/appsec/resource_akamai_appsec_rate_policy.go b/pkg/providers/appsec/resource_akamai_appsec_rate_policy.go index a0f78c7e2..9116eb000 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rate_policy.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rate_policy.go @@ -55,10 +55,10 @@ func resourceRatePolicyCreate(ctx context.Context, d *schema.ResourceData, m int createRatePolicy := appsec.CreateRatePolicyRequest{} jsonpostpayload := d.Get("rate_policy") + jsonPayloadRaw := []byte(jsonpostpayload.(string)) + rawJSON := (json.RawMessage)(jsonPayloadRaw) - if err := json.Unmarshal([]byte(jsonpostpayload.(string)), &createRatePolicy); err != nil { - return diag.FromErr(err) - } + createRatePolicy.JsonPayloadRaw = rawJSON configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { @@ -91,10 +91,10 @@ func resourceRatePolicyUpdate(ctx context.Context, d *schema.ResourceData, m int updateRatePolicy := appsec.UpdateRatePolicyRequest{} jsonpostpayload := d.Get("rate_policy") + jsonPayloadRaw := []byte(jsonpostpayload.(string)) + rawJSON := (json.RawMessage)(jsonPayloadRaw) - if err := json.Unmarshal([]byte(jsonpostpayload.(string)), &updateRatePolicy); err != nil { - return diag.FromErr(err) - } + updateRatePolicy.JsonPayloadRaw = rawJSON configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { diff --git a/pkg/providers/appsec/resource_akamai_appsec_rate_policy_test.go b/pkg/providers/appsec/resource_akamai_appsec_rate_policy_test.go index afd8d63d3..fc779b01e 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rate_policy_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rate_policy_test.go @@ -36,68 +36,12 @@ func TestAccAkamaiRatePolicy_res_basic(t *testing.T) { client.On("UpdateRatePolicy", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateRatePolicyRequest{ConfigID: 43253, ConfigVersion: 7, RatePolicyID: 134644, MatchType: "path", Type: "WAF", Name: "Test_Paths 3", Description: "AFW Test Extensions U", AverageThreshold: 5, BurstThreshold: 10, ClientIdentifier: "ip", UseXForwardForHeaders: true, RequestType: "ClientRequest", SameActionOnIpv6: false, Path: struct { - PositiveMatch bool "json:\"positiveMatch\"" - Values []string "json:\"values\"" - }{PositiveMatch: true, Values: []string{"/login/", "/path/"}}, PathMatchType: "Custom", PathURIPositiveMatch: true, FileExtensions: struct { - PositiveMatch bool "json:\"positiveMatch\"" - Values []string "json:\"values\"" - }{PositiveMatch: false, Values: []string{"3g2", "3gp", "aif", "aiff", "au", "avi", "bin", "bmp", "cab"}}, Hostnames: []string{"www.ludin.org"}, AdditionalMatchOptions: []struct { - PositiveMatch bool "json:\"positiveMatch\"" - Type string "json:\"type\"" - Values []string "json:\"values\"" - }{struct { - PositiveMatch bool "json:\"positiveMatch\"" - Type string "json:\"type\"" - Values []string "json:\"values\"" - }{PositiveMatch: true, Type: "IpAddressCondition", Values: []string{"198.129.76.39"}}, struct { - PositiveMatch bool "json:\"positiveMatch\"" - Type string "json:\"type\"" - Values []string "json:\"values\"" - }{PositiveMatch: true, Type: "RequestMethodCondition", Values: []string{"GET"}}}, QueryParameters: []struct { - Name string "json:\"name\"" - Values []string "json:\"values\"" - PositiveMatch bool "json:\"positiveMatch\"" - ValueInRange bool "json:\"valueInRange\"" - }{struct { - Name string "json:\"name\"" - Values []string "json:\"values\"" - PositiveMatch bool "json:\"positiveMatch\"" - ValueInRange bool "json:\"valueInRange\"" - }{Name: "productId", Values: []string{"BUB_12", "SUSH_11"}, PositiveMatch: true, ValueInRange: false}}, CreateDate: "", UpdateDate: "", Used: false}, + appsec.UpdateRatePolicyRequest{RatePolicyID: 134644, PolicyID: 0, ConfigID: 43253, ConfigVersion: 7, JsonPayloadRaw: json.RawMessage{0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x70, 0x61, 0x74, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x57, 0x41, 0x46, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x54, 0x65, 0x73, 0x74, 0x5f, 0x50, 0x61, 0x74, 0x68, 0x73, 0x20, 0x33, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x41, 0x46, 0x57, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x55, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x3a, 0x20, 0x35, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x62, 0x75, 0x72, 0x73, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x3a, 0x20, 0x31, 0x30, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x69, 0x70, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x58, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x46, 0x6f, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x61, 0x6d, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6e, 0x49, 0x70, 0x76, 0x36, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x61, 0x74, 0x68, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2f, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x70, 0x61, 0x74, 0x68, 0x2f, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x61, 0x74, 0x68, 0x55, 0x72, 0x69, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x33, 0x67, 0x32, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x33, 0x67, 0x70, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x69, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x69, 0x66, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x75, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x76, 0x69, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x62, 0x69, 0x6e, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x62, 0x6d, 0x70, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x61, 0x62, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x77, 0x77, 0x2e, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x2e, 0x6f, 0x72, 0x67, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x31, 0x39, 0x38, 0x2e, 0x31, 0x32, 0x39, 0x2e, 0x37, 0x36, 0x2e, 0x33, 0x39, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x47, 0x45, 0x54, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x42, 0x55, 0x42, 0x5f, 0x31, 0x32, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x53, 0x55, 0x53, 0x48, 0x5f, 0x31, 0x31, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x7d, 0xa}}, ).Return(&cu, nil) client.On("CreateRatePolicy", mock.Anything, // ctx is irrelevant for this test - appsec.CreateRatePolicyRequest{ConfigID: 43253, ConfigVersion: 7, MatchType: "path", Type: "WAF", Name: "Test_Paths 3", Description: "AFW Test Extensions", AverageThreshold: 5, BurstThreshold: 10, ClientIdentifier: "ip", UseXForwardForHeaders: true, RequestType: "ClientRequest", SameActionOnIpv6: false, Path: struct { - PositiveMatch bool "json:\"positiveMatch\"" - Values []string "json:\"values\"" - }{PositiveMatch: true, Values: []string{"/login/", "/path/"}}, PathMatchType: "Custom", PathURIPositiveMatch: true, FileExtensions: struct { - PositiveMatch bool "json:\"positiveMatch\"" - Values []string "json:\"values\"" - }{PositiveMatch: false, Values: []string{"3g2", "3gp", "aif", "aiff", "au", "avi", "bin", "bmp", "cab"}}, Hostnames: []string{"www.ludin.org"}, AdditionalMatchOptions: []struct { - PositiveMatch bool "json:\"positiveMatch\"" - Type string "json:\"type\"" - Values []string "json:\"values\"" - }{struct { - PositiveMatch bool "json:\"positiveMatch\"" - Type string "json:\"type\"" - Values []string "json:\"values\"" - }{PositiveMatch: true, Type: "IpAddressCondition", Values: []string{"198.129.76.39"}}, struct { - PositiveMatch bool "json:\"positiveMatch\"" - Type string "json:\"type\"" - Values []string "json:\"values\"" - }{PositiveMatch: true, Type: "RequestMethodCondition", Values: []string{"GET"}}}, QueryParameters: []struct { - Name string "json:\"name\"" - Values []string "json:\"values\"" - PositiveMatch bool "json:\"positiveMatch\"" - ValueInRange bool "json:\"valueInRange\"" - }{struct { - Name string "json:\"name\"" - Values []string "json:\"values\"" - PositiveMatch bool "json:\"positiveMatch\"" - ValueInRange bool "json:\"valueInRange\"" - }{Name: "productId", Values: []string{"BUB_12", "SUSH_11"}, PositiveMatch: true, ValueInRange: false}}, CreateDate: "", UpdateDate: "", Used: false}, + appsec.CreateRatePolicyRequest{ID: 0, PolicyID: 0, ConfigID: 43253, ConfigVersion: 7, JsonPayloadRaw: json.RawMessage{0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x70, 0x61, 0x74, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x57, 0x41, 0x46, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x54, 0x65, 0x73, 0x74, 0x5f, 0x50, 0x61, 0x74, 0x68, 0x73, 0x20, 0x33, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x41, 0x46, 0x57, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x3a, 0x20, 0x35, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x62, 0x75, 0x72, 0x73, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x3a, 0x20, 0x31, 0x30, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x69, 0x70, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x58, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x46, 0x6f, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x61, 0x6d, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6e, 0x49, 0x70, 0x76, 0x36, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x61, 0x74, 0x68, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2f, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x70, 0x61, 0x74, 0x68, 0x2f, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x61, 0x74, 0x68, 0x55, 0x72, 0x69, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x33, 0x67, 0x32, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x33, 0x67, 0x70, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x69, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x69, 0x66, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x75, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x76, 0x69, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x62, 0x69, 0x6e, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x62, 0x6d, 0x70, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x61, 0x62, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x77, 0x77, 0x2e, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x2e, 0x6f, 0x72, 0x67, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x31, 0x39, 0x38, 0x2e, 0x31, 0x32, 0x39, 0x2e, 0x37, 0x36, 0x2e, 0x33, 0x39, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x47, 0x45, 0x54, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x42, 0x55, 0x42, 0x5f, 0x31, 0x32, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x53, 0x55, 0x53, 0x48, 0x5f, 0x31, 0x31, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x7d, 0xa}}, ).Return(&crpol, nil) client.On("RemoveRatePolicy", diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go index ff41227b9..ee019be0c 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -63,8 +64,6 @@ func resourceReputationProfileCreate(ctx context.Context, d *schema.ResourceData createReputationProfile.JsonPayloadRaw = rawJSON - logger.Errorf("calling 'createReputationProfile JSONRAW ': %s", rawJSON) - configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) @@ -100,25 +99,47 @@ func resourceReputationProfileUpdate(ctx context.Context, d *schema.ResourceData rawJSON := (json.RawMessage)(jsonPayloadRaw) updateReputationProfile.JsonPayloadRaw = rawJSON - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateReputationProfile.ConfigID = configid - - configversion, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateReputationProfile.ConfigVersion = configversion - - reputationProfileId, errconv := strconv.Atoi(d.Id()) - - if errconv != nil { - return diag.FromErr(errconv) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateReputationProfile.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateReputationProfile.ConfigVersion = version + + reputationProfileId, errconv := strconv.Atoi(s[2]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateReputationProfile.ReputationProfileId = reputationProfileId + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationProfile.ConfigID = configid + + configversion, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationProfile.ConfigVersion = configversion + + reputationProfileId, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + updateReputationProfile.ReputationProfileId = reputationProfileId } - updateReputationProfile.ReputationProfileId = reputationProfileId - _, erru := client.UpdateReputationProfile(ctx, updateReputationProfile) if erru != nil { logger.Errorf("calling 'updateReputationProfile': %s", erru.Error()) @@ -134,26 +155,47 @@ func resourceReputationProfileDelete(ctx context.Context, d *schema.ResourceData logger := meta.Log("APPSEC", "resourceReputationProfileRemove") removeReputationProfile := appsec.RemoveReputationProfileRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeReputationProfile.ConfigID = configid - - configversion, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeReputationProfile.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeReputationProfile.ConfigVersion = version + + reputationProfileId, errconv := strconv.Atoi(s[2]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeReputationProfile.ReputationProfileId = reputationProfileId + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeReputationProfile.ConfigID = configid + + configversion, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeReputationProfile.ConfigVersion = configversion + + reputationProfileId, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + removeReputationProfile.ReputationProfileId = reputationProfileId } - removeReputationProfile.ConfigVersion = configversion - - reputationProfileId, errconv := strconv.Atoi(d.Id()) - - if errconv != nil { - return diag.FromErr(errconv) - } - removeReputationProfile.ReputationProfileId = reputationProfileId - _, errd := client.RemoveReputationProfile(ctx, removeReputationProfile) if errd != nil { logger.Errorf("calling 'removeReputationProfile': %s", errd.Error()) @@ -172,25 +214,47 @@ func resourceReputationProfileRead(ctx context.Context, d *schema.ResourceData, getReputationProfile := appsec.GetReputationProfileRequest{} - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getReputationProfile.ConfigID = configid - - configversion, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getReputationProfile.ConfigVersion = configversion - - reputationProfileId, errconv := strconv.Atoi(d.Id()) - - if errconv != nil { - return diag.FromErr(errconv) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getReputationProfile.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getReputationProfile.ConfigVersion = version + + reputationProfileId, errconv := strconv.Atoi(s[2]) + if errconv != nil { + return diag.FromErr(errconv) + } + getReputationProfile.ReputationProfileId = reputationProfileId + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationProfile.ConfigID = configid + + configversion, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationProfile.ConfigVersion = configversion + + reputationProfileId, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + getReputationProfile.ReputationProfileId = reputationProfileId } - getReputationProfile.ReputationProfileId = reputationProfileId - reputationprofile, err := client.GetReputationProfile(ctx, getReputationProfile) if err != nil { logger.Errorf("calling 'getReputationProfile': %s", err.Error()) @@ -201,7 +265,15 @@ func resourceReputationProfileRead(ctx context.Context, d *schema.ResourceData, return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(reputationprofile.ID)) + if err := d.Set("config_id", getReputationProfile.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getReputationProfile.ConfigVersion); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%d", getReputationProfile.ConfigID, getReputationProfile.ConfigVersion, reputationprofile.ID)) return nil } diff --git a/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go index f101a3dba..dc4cfce3d 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go @@ -175,9 +175,9 @@ func resourceRuleConditionExceptionUpdate(ctx context.Context, d *schema.Resourc jsonpostpayload := d.Get("condition_exception") - if err := json.Unmarshal([]byte(jsonpostpayload.(string)), &updateRuleConditionException); err != nil { - return diag.FromErr(err) - } + jsonPayloadRaw := []byte(jsonpostpayload.(string)) + rawJSON := (json.RawMessage)(jsonPayloadRaw) + updateRuleConditionException.JsonPayloadRaw = rawJSON configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { diff --git a/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception_test.go b/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception_test.go index e44b0346a..345eec4d7 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception_test.go @@ -32,76 +32,7 @@ func TestAccAkamaiRuleConditionException_res_basic(t *testing.T) { client.On("UpdateRuleConditionException", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateRuleConditionExceptionRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", RuleID: 12345, Conditions: []struct { - Type string "json:\"type\"" - Filenames []string "json:\"filenames,omitempty\"" - PositiveMatch bool "json:\"positiveMatch\"" - Methods []string "json:\"methods,omitempty\"" - }{struct { - Type string "json:\"type\"" - Filenames []string "json:\"filenames,omitempty\"" - PositiveMatch bool "json:\"positiveMatch\"" - Methods []string "json:\"methods,omitempty\"" - }{Type: "extensionMatch", Filenames: []string(nil), PositiveMatch: true, Methods: []string(nil)}, struct { - Type string "json:\"type\"" - Filenames []string "json:\"filenames,omitempty\"" - PositiveMatch bool "json:\"positiveMatch\"" - Methods []string "json:\"methods,omitempty\"" - }{Type: "filenameMatch", Filenames: []string{"test2"}, PositiveMatch: true, Methods: []string(nil)}, struct { - Type string "json:\"type\"" - Filenames []string "json:\"filenames,omitempty\"" - PositiveMatch bool "json:\"positiveMatch\"" - Methods []string "json:\"methods,omitempty\"" - }{Type: "hostMatch", Filenames: []string(nil), PositiveMatch: true, Methods: []string(nil)}, struct { - Type string "json:\"type\"" - Filenames []string "json:\"filenames,omitempty\"" - PositiveMatch bool "json:\"positiveMatch\"" - Methods []string "json:\"methods,omitempty\"" - }{Type: "ipMatch", Filenames: []string(nil), PositiveMatch: true, Methods: []string(nil)}, struct { - Type string "json:\"type\"" - Filenames []string "json:\"filenames,omitempty\"" - PositiveMatch bool "json:\"positiveMatch\"" - Methods []string "json:\"methods,omitempty\"" - }{Type: "uriQueryMatch", Filenames: []string(nil), PositiveMatch: true, Methods: []string(nil)}, struct { - Type string "json:\"type\"" - Filenames []string "json:\"filenames,omitempty\"" - PositiveMatch bool "json:\"positiveMatch\"" - Methods []string "json:\"methods,omitempty\"" - }{Type: "requestHeaderMatch", Filenames: []string(nil), PositiveMatch: true, Methods: []string(nil)}, struct { - Type string "json:\"type\"" - Filenames []string "json:\"filenames,omitempty\"" - PositiveMatch bool "json:\"positiveMatch\"" - Methods []string "json:\"methods,omitempty\"" - }{Type: "requestMethodMatch", Filenames: []string(nil), PositiveMatch: true, Methods: []string{"GET"}}, struct { - Type string "json:\"type\"" - Filenames []string "json:\"filenames,omitempty\"" - PositiveMatch bool "json:\"positiveMatch\"" - Methods []string "json:\"methods,omitempty\"" - }{Type: "pathMatch", Filenames: []string(nil), PositiveMatch: true, Methods: []string(nil)}}, Exception: struct { - HeaderCookieOrParamValues []string "json:\"headerCookieOrParamValues\"" - SpecificHeaderCookieOrParamNames []struct { - Names []string "json:\"names\"" - Selector string "json:\"selector\"" - } "json:\"specificHeaderCookieOrParamNames\"" - }{HeaderCookieOrParamValues: []string{"test"}, SpecificHeaderCookieOrParamNames: []struct { - Names []string "json:\"names\"" - Selector string "json:\"selector\"" - }{struct { - Names []string "json:\"names\"" - Selector string "json:\"selector\"" - }{Names: []string{"test"}, Selector: "REQUEST_HEADERS"}, struct { - Names []string "json:\"names\"" - Selector string "json:\"selector\"" - }{Names: []string{"test"}, Selector: "REQUEST_COOKIES"}, struct { - Names []string "json:\"names\"" - Selector string "json:\"selector\"" - }{Names: []string{"test"}, Selector: "ARGS"}, struct { - Names []string "json:\"names\"" - Selector string "json:\"selector\"" - }{Names: []string{"test"}, Selector: "JSON_PAIRS"}, struct { - Names []string "json:\"names\"" - Selector string "json:\"selector\"" - }{Names: []string{"test"}, Selector: "XML_PAIRS"}}}}, + appsec.UpdateRuleConditionExceptionRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", RuleID: 12345, JsonPayloadRaw: json.RawMessage{0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x32, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x68, 0x6f, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x70, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x31, 0x32, 0x33, 0x2e, 0x31, 0x32, 0x33, 0x2e, 0x31, 0x32, 0x33, 0x2e, 0x31, 0x32, 0x33, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x72, 0x69, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x61, 0x73, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x33, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x73, 0x65, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x34, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x35, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x61, 0x73, 0x65, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x57, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x47, 0x45, 0x54, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x70, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x36, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x53, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x53, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4f, 0x4b, 0x49, 0x45, 0x53, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x41, 0x52, 0x47, 0x53, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x53, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x58, 0x4d, 0x4c, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x53, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x4f, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x53, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x7d, 0xa}}, ).Return(&cu, nil) client.On("RemoveRuleConditionException", diff --git a/pkg/providers/appsec/resource_akamai_appsec_security_policy.go b/pkg/providers/appsec/resource_akamai_appsec_security_policy.go index 0715092c5..47e31a197 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_security_policy.go +++ b/pkg/providers/appsec/resource_akamai_appsec_security_policy.go @@ -34,6 +34,11 @@ func resourceSecurityPolicy() *schema.Resource { Type: schema.TypeString, Optional: true, }, + "default_settings": { + Type: schema.TypeBool, + Optional: true, + Default: true, + }, "security_policy_prefix": { Type: schema.TypeString, Optional: true, @@ -72,6 +77,12 @@ func resourceSecurityPolicyCreate(ctx context.Context, d *schema.ResourceData, m } createSecurityPolicy.PolicyName = policyname + defaultSettings, err := tools.GetBoolValue("default_settings", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createSecurityPolicy.DefaultSettings = defaultSettings + policyprefix, err := tools.GetStringValue("security_policy_prefix", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_security_policy_test.go b/pkg/providers/appsec/resource_akamai_appsec_security_policy_test.go index 049c8a80f..8ae0f2601 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_security_policy_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_security_policy_test.go @@ -36,7 +36,7 @@ func TestAccAkamaiSecurityPolicy_res_basic(t *testing.T) { client.On("CreateSecurityPolicy", mock.Anything, // ctx is irrelevant for this test - appsec.CreateSecurityPolicyRequest{ConfigID: 43253, Version: 7, PolicyName: "Cloned Test for Launchpad 15", PolicyPrefix: "LN"}, + appsec.CreateSecurityPolicyRequest{ConfigID: 43253, Version: 7, PolicyName: "Cloned Test for Launchpad 15", PolicyPrefix: "LN", DefaultSettings: true}, ).Return(&crp, nil) client.On("UpdateSecurityPolicy", diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index c6ac978e7..7550b4ddd 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -109,7 +109,7 @@ func RenderTemplates(ots map[string]*OutputTemplate, key string, str interface{} } func InitTemplates(otm map[string]*OutputTemplate) { - otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.CustomHeaders}}|{{.StandardHeaders}}"} + otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.CustomHeaders.Type}} {{.CustomHeaders.Values}}|{{.StandardHeaders.Type}} {{.StandardHeaders.Values}}"} otm["advancedSettingsPolicyLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsPolicyLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.CustomHeaders}}|{{.StandardHeaders}}"} otm["advancedSettingsPrefetchDS"] = &OutputTemplate{TemplateName: "advancedSettingsPrefetchDS", TableTitle: "Enable App Layer|All Extension|Enable Rate Controls|Extensions", TemplateType: "TABULAR", TemplateString: "{{.EnableAppLayer}}|{{.AllExtensions}}|{{.EnableRateControls}}|{{range $index, $element := .Extensions}}{{.}} {{end}}"} From 51d064a9dd4b2e2a3388dcb8e27e3a98352d01fb Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Sun, 17 Jan 2021 22:14:40 -0600 Subject: [PATCH 045/215] Add support for import for resources custom rule match target rate policy security policy --- ...akamai_appsec_advanced_settings_logging.go | 114 +++++++---- ...i_appsec_advanced_settings_logging_test.go | 2 +- .../resource_akamai_appsec_custom_rule.go | 135 +++++++++---- ...resource_akamai_appsec_custom_rule_test.go | 4 +- .../resource_akamai_appsec_match_target.go | 3 + .../resource_akamai_appsec_rate_policy.go | 185 ++++++++++++------ ...resource_akamai_appsec_rate_policy_test.go | 4 +- .../resource_akamai_appsec_security_policy.go | 185 ++++++++++++------ ...urce_akamai_appsec_security_policy_test.go | 4 +- 9 files changed, 436 insertions(+), 200 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go index 6ff0cee37..54c525a8e 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go @@ -4,7 +4,9 @@ import ( "context" "encoding/json" "errors" + "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -55,25 +57,44 @@ func resourceAdvancedSettingsLoggingRead(ctx context.Context, d *schema.Resource logger := meta.Log("APPSEC", "resourceAdvancedSettingsLoggingRead") getAdvancedSettingsLogging := appsec.GetAdvancedSettingsLoggingRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAdvancedSettingsLogging.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getAdvancedSettingsLogging.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getAdvancedSettingsLogging.Version = version + + policyid := s[2] + + getAdvancedSettingsLogging.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsLogging.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsLogging.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsLogging.PolicyID = policyid } - getAdvancedSettingsLogging.Version = version - - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAdvancedSettingsLogging.PolicyID = policyid - advancedsettingslogging, err := client.GetAdvancedSettingsLogging(ctx, getAdvancedSettingsLogging) if err != nil { logger.Errorf("calling 'getAdvancedSettingsLogging': %s", err.Error()) @@ -88,7 +109,7 @@ func resourceAdvancedSettingsLoggingRead(ctx context.Context, d *schema.Resource d.Set("output_text", outputtext) } - d.SetId(strconv.Itoa(getAdvancedSettingsLogging.ConfigID)) + d.SetId(fmt.Sprintf("%d:%d:%s", getAdvancedSettingsLogging.ConfigID, getAdvancedSettingsLogging.Version, getAdvancedSettingsLogging.PolicyID)) return nil } @@ -110,25 +131,44 @@ func resourceAdvancedSettingsLoggingUpdate(ctx context.Context, d *schema.Resour rawJSON := (json.RawMessage)(jsonPayloadRaw) updateAdvancedSettingsLogging.JsonPayloadRaw = rawJSON - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAdvancedSettingsLogging.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateAdvancedSettingsLogging.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateAdvancedSettingsLogging.Version = version + + policyid := s[2] + + updateAdvancedSettingsLogging.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsLogging.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsLogging.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsLogging.PolicyID = policyid } - updateAdvancedSettingsLogging.Version = version - - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAdvancedSettingsLogging.PolicyID = policyid - _, erru := client.UpdateAdvancedSettingsLogging(ctx, updateAdvancedSettingsLogging) if erru != nil { logger.Errorf("calling 'updateAdvancedSettingsLogging': %s", erru.Error()) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go index 938af606e..74c122dd4 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go @@ -39,7 +39,7 @@ func TestAccAkamaiAdvancedSettingsLogging_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResAdvancedSettingsLogging/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_advanced_settings_logging.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_advanced_settings_logging.test", "id", "43253:7:"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go index 205067ad3..a5248a420 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -24,6 +25,9 @@ func resourceCustomRule() *schema.Resource { ReadContext: resourceCustomRuleRead, UpdateContext: resourceCustomRuleUpdate, DeleteContext: resourceCustomRuleDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, Schema: map[string]*schema.Schema{ "config_id": { Type: schema.TypeInt, @@ -71,7 +75,7 @@ func resourceCustomRuleCreate(ctx context.Context, d *schema.ResourceData, m int return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(customrule.ID)) + d.SetId(fmt.Sprintf("%d:%d", createCustomRule.ConfigID, customrule.ID)) return resourceCustomRuleRead(ctx, d, m) } @@ -82,26 +86,42 @@ func resourceCustomRuleUpdate(ctx context.Context, d *schema.ResourceData, m int logger := meta.Log("APPSEC", "resourceCustomRuleUpdate") updateCustomRule := appsec.UpdateCustomRuleRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateCustomRule.ConfigID = configid - - ID, errconv := strconv.Atoi(d.Id()) - - if errconv != nil { - return diag.FromErr(errconv) - } - updateCustomRule.ID = ID - jsonpostpayload := d.Get("custom_rule") jsonPayloadRaw := []byte(jsonpostpayload.(string)) rawJSON := (json.RawMessage)(jsonPayloadRaw) updateCustomRule.JsonPayloadRaw = rawJSON + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateCustomRule.ConfigID = configid + + ID, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateCustomRule.ID = ID + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateCustomRule.ConfigID = configid + + ID, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + updateCustomRule.ID = ID + + } _, erru := client.UpdateCustomRule(ctx, updateCustomRule) if erru != nil { logger.Errorf("calling 'updateCustomRule': %s", erru.Error()) @@ -117,20 +137,35 @@ func resourceCustomRuleDelete(ctx context.Context, d *schema.ResourceData, m int logger := meta.Log("APPSEC", "resourceCustomRuleRemove") removeCustomRule := appsec.RemoveCustomRuleRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeCustomRule.ConfigID = configid + + ID, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeCustomRule.ID = ID + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeCustomRule.ConfigID = configid + + ID, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + removeCustomRule.ID = ID } - removeCustomRule.ConfigID = configid - - ID, errconv := strconv.Atoi(d.Id()) - - if errconv != nil { - return diag.FromErr(errconv) - } - removeCustomRule.ID = ID - _, errd := client.RemoveCustomRule(ctx, removeCustomRule) if errd != nil { logger.Errorf("calling 'removeCustomRule': %s", errd.Error()) @@ -148,20 +183,35 @@ func resourceCustomRuleRead(ctx context.Context, d *schema.ResourceData, m inter logger := meta.Log("APPSEC", "resourceCustomRuleRead") getCustomRule := appsec.GetCustomRuleRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getCustomRule.ConfigID = configid - - ID, errconv := strconv.Atoi(d.Id()) - - if errconv != nil { - return diag.FromErr(errconv) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getCustomRule.ConfigID = configid + + ID, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getCustomRule.ID = ID + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getCustomRule.ConfigID = configid + + ID, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + getCustomRule.ID = ID } - getCustomRule.ID = ID - customrule, err := client.GetCustomRule(ctx, getCustomRule) if err != nil { logger.Errorf("calling 'getCustomRule': %s", err.Error()) @@ -171,7 +221,8 @@ func resourceCustomRuleRead(ctx context.Context, d *schema.ResourceData, m inter if err := d.Set("custom_rule_id", customrule.ID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(customrule.ID)) + + d.SetId(fmt.Sprintf("%d:%d", getCustomRule.ConfigID, customrule.ID)) return nil } diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_test.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_test.go index e56085722..649cb5ddb 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_test.go @@ -57,13 +57,13 @@ func TestAccAkamaiCustomRule_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResCustomRule/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_custom_rule.test", "id", "661699"), + resource.TestCheckResourceAttr("akamai_appsec_custom_rule.test", "id", "43253:661699"), ), }, { Config: loadFixtureString("testdata/TestResCustomRule/update_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_custom_rule.test", "id", "661699"), + resource.TestCheckResourceAttr("akamai_appsec_custom_rule.test", "id", "43253:661699"), //resource.TestCheckResourceAttr("akamai_appsec_custom_rule.test", "rules", compactJSON(loadFixtureBytes("testdata/TestResCustomRule/custom_rules.json"))), ), }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_match_target.go b/pkg/providers/appsec/resource_akamai_appsec_match_target.go index 8cbc2648d..3a109e566 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_match_target.go +++ b/pkg/providers/appsec/resource_akamai_appsec_match_target.go @@ -24,6 +24,9 @@ func resourceMatchTarget() *schema.Resource { ReadContext: resourceMatchTargetRead, UpdateContext: resourceMatchTargetUpdate, DeleteContext: resourceMatchTargetDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, Schema: map[string]*schema.Schema{ "config_id": { Type: schema.TypeInt, diff --git a/pkg/providers/appsec/resource_akamai_appsec_rate_policy.go b/pkg/providers/appsec/resource_akamai_appsec_rate_policy.go index 9116eb000..00d3cf448 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rate_policy.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rate_policy.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -25,6 +26,9 @@ func resourceRatePolicy() *schema.Resource { ReadContext: resourceRatePolicyRead, UpdateContext: resourceRatePolicyUpdate, DeleteContext: resourceRatePolicyDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, Schema: map[string]*schema.Schema{ "config_id": { Type: schema.TypeInt, @@ -78,7 +82,7 @@ func resourceRatePolicyCreate(ctx context.Context, d *schema.ResourceData, m int return diag.FromErr(err) } - d.SetId(strconv.Itoa(ratepolicy.ID)) + d.SetId(fmt.Sprintf("%d:%d:%d", createRatePolicy.ConfigID, createRatePolicy.ConfigVersion, ratepolicy.ID)) return resourceRatePolicyRead(ctx, d, meta) } @@ -95,26 +99,47 @@ func resourceRatePolicyUpdate(ctx context.Context, d *schema.ResourceData, m int rawJSON := (json.RawMessage)(jsonPayloadRaw) updateRatePolicy.JsonPayloadRaw = rawJSON - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRatePolicy.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRatePolicy.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRatePolicy.ConfigVersion = version + + ratePolicyID, errconv := strconv.Atoi(s[2]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRatePolicy.RatePolicyID = ratePolicyID + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRatePolicy.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRatePolicy.ConfigVersion = version + + ratePolicyID, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + updateRatePolicy.RatePolicyID = ratePolicyID } - updateRatePolicy.ConfigVersion = version - - ratePolicyID, errconv := strconv.Atoi(d.Id()) - - if errconv != nil { - return diag.FromErr(errconv) - } - updateRatePolicy.RatePolicyID = ratePolicyID - _, erru := client.UpdateRatePolicy(ctx, updateRatePolicy) if erru != nil { logger.Warnf("calling 'updateRatePolicyAction': %s", erru.Error()) @@ -130,26 +155,47 @@ func resourceRatePolicyDelete(ctx context.Context, d *schema.ResourceData, m int logger := meta.Log("APPSEC", "resourceRatePolicyDelete") deleteRatePolicy := appsec.RemoveRatePolicyRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - deleteRatePolicy.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - deleteRatePolicy.ConfigVersion = version - - ratePolicyID, errconv := strconv.Atoi(d.Id()) - - if errconv != nil { - return diag.FromErr(errconv) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + deleteRatePolicy.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + deleteRatePolicy.ConfigVersion = version + + ratePolicyID, errconv := strconv.Atoi(s[2]) + if errconv != nil { + return diag.FromErr(errconv) + } + deleteRatePolicy.RatePolicyID = ratePolicyID + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + deleteRatePolicy.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + deleteRatePolicy.ConfigVersion = version + + ratePolicyID, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + deleteRatePolicy.RatePolicyID = ratePolicyID } - deleteRatePolicy.RatePolicyID = ratePolicyID - _, errd := client.RemoveRatePolicy(ctx, deleteRatePolicy) if errd != nil { logger.Warnf("calling 'removeRatePolicyAction': %s", errd.Error()) @@ -167,26 +213,47 @@ func resourceRatePolicyRead(ctx context.Context, d *schema.ResourceData, m inter logger := meta.Log("APPSEC", "resourceRatePolicyRead") getRatePolicy := appsec.GetRatePolicyRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRatePolicy.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRatePolicy.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRatePolicy.ConfigVersion = version + + ratePolicyID, errconv := strconv.Atoi(s[2]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRatePolicy.RatePolicyID = ratePolicyID + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRatePolicy.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRatePolicy.ConfigVersion = version + + ratePolicyID, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + getRatePolicy.RatePolicyID = ratePolicyID } - getRatePolicy.ConfigVersion = version - - ratePolicyID, errconv := strconv.Atoi(d.Id()) - - if errconv != nil { - return diag.FromErr(errconv) - } - getRatePolicy.RatePolicyID = ratePolicyID - ratepolicy, errd := client.GetRatePolicy(ctx, getRatePolicy) if errd != nil { logger.Warnf("calling 'getRatePolicyAction': %s", errd.Error()) @@ -197,7 +264,7 @@ func resourceRatePolicyRead(ctx context.Context, d *schema.ResourceData, m inter return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(ratepolicy.ID)) + d.SetId(fmt.Sprintf("%d:%d:%d", getRatePolicy.ConfigID, getRatePolicy.ConfigVersion, ratepolicy.ID)) return nil } diff --git a/pkg/providers/appsec/resource_akamai_appsec_rate_policy_test.go b/pkg/providers/appsec/resource_akamai_appsec_rate_policy_test.go index fc779b01e..6fc913891 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rate_policy_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rate_policy_test.go @@ -57,14 +57,14 @@ func TestAccAkamaiRatePolicy_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResRatePolicy/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_rate_policy.test", "id", "134644"), + resource.TestCheckResourceAttr("akamai_appsec_rate_policy.test", "id", "43253:7:134644"), ), }, { Config: loadFixtureString("testdata/TestResRatePolicy/update_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_rate_policy.test", "id", "134644"), + resource.TestCheckResourceAttr("akamai_appsec_rate_policy.test", "id", "43253:7:134644"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_security_policy.go b/pkg/providers/appsec/resource_akamai_appsec_security_policy.go index 47e31a197..fd45079d0 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_security_policy.go +++ b/pkg/providers/appsec/resource_akamai_appsec_security_policy.go @@ -4,6 +4,8 @@ import ( "context" "errors" "fmt" + "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -21,6 +23,9 @@ func resourceSecurityPolicy() *schema.Resource { ReadContext: resourceSecurityPolicyRead, UpdateContext: resourceSecurityPolicyUpdate, DeleteContext: resourceSecurityPolicyDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, Schema: map[string]*schema.Schema{ "config_id": { Type: schema.TypeInt, @@ -104,6 +109,7 @@ func resourceSecurityPolicyCreate(ctx context.Context, d *schema.ResourceData, m } d.SetId(spcr.PolicyID) + d.SetId(fmt.Sprintf("%d:%d:%s", createSecurityPolicy.ConfigID, createSecurityPolicy.Version, spcr.PolicyID)) return resourceSecurityPolicyRead(ctx, d, m) } @@ -114,33 +120,64 @@ func resourceSecurityPolicyUpdate(ctx context.Context, d *schema.ResourceData, m logger := meta.Log("APPSEC", "resourceSecurityPolicyUpdate") updateSecurityPolicy := appsec.UpdateSecurityPolicyRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSecurityPolicy.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSecurityPolicy.Version = version - - policyname, err := tools.GetStringValue("security_policy_name", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSecurityPolicy.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSecurityPolicy.Version = version + + policyid := s[2] + + updateSecurityPolicy.PolicyID = policyid + + policyprefix, err := tools.GetStringValue("security_policy_prefix", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSecurityPolicy.PolicyPrefix = policyprefix + + policyname, err := tools.GetStringValue("security_policy_name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSecurityPolicy.PolicyName = policyname + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSecurityPolicy.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSecurityPolicy.Version = version + + policyname, err := tools.GetStringValue("security_policy_name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSecurityPolicy.PolicyName = policyname + + policyprefix, err := tools.GetStringValue("security_policy_prefix", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSecurityPolicy.PolicyPrefix = policyprefix + + updateSecurityPolicy.PolicyID = d.Id() } - updateSecurityPolicy.PolicyName = policyname - - policyprefix, err := tools.GetStringValue("security_policy_prefix", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSecurityPolicy.PolicyPrefix = policyprefix - - updateSecurityPolicy.PolicyID = d.Id() - _, erru := client.UpdateSecurityPolicy(ctx, updateSecurityPolicy) if erru != nil { logger.Errorf("calling 'updateSecurityPolicy': %s", erru.Error()) @@ -156,21 +193,40 @@ func resourceSecurityPolicyDelete(ctx context.Context, d *schema.ResourceData, m logger := meta.Log("APPSEC", "resourceSecurityPolicyRemove") removeSecurityPolicy := appsec.RemoveSecurityPolicyRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeSecurityPolicy.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeSecurityPolicy.Version = version + + policyid := s[2] + + removeSecurityPolicy.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeSecurityPolicy.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeSecurityPolicy.Version = version + + removeSecurityPolicy.PolicyID = d.Id() } - removeSecurityPolicy.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeSecurityPolicy.Version = version - - removeSecurityPolicy.PolicyID = d.Id() - _, errd := client.RemoveSecurityPolicy(ctx, removeSecurityPolicy) if errd != nil { logger.Errorf("calling 'removeSecurityPolicy': %s", errd.Error()) @@ -188,21 +244,40 @@ func resourceSecurityPolicyRead(ctx context.Context, d *schema.ResourceData, m i logger := meta.Log("APPSEC", "resourceSecurityPolicyRead") getSecurityPolicy := appsec.GetSecurityPolicyRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getSecurityPolicy.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getSecurityPolicy.Version = version + + policyid := s[2] + + getSecurityPolicy.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSecurityPolicy.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSecurityPolicy.Version = version + + getSecurityPolicy.PolicyID = d.Id() } - getSecurityPolicy.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getSecurityPolicy.Version = version - - getSecurityPolicy.PolicyID = d.Id() - securitypolicy, err := client.GetSecurityPolicy(ctx, getSecurityPolicy) if err != nil { logger.Errorf("calling 'getSecurityPolicy': %s", err.Error()) @@ -217,7 +292,7 @@ func resourceSecurityPolicyRead(ctx context.Context, d *schema.ResourceData, m i return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(securitypolicy.PolicyID) + d.SetId(fmt.Sprintf("%d:%d:%s", getSecurityPolicy.ConfigID, getSecurityPolicy.Version, securitypolicy.PolicyID)) return nil } diff --git a/pkg/providers/appsec/resource_akamai_appsec_security_policy_test.go b/pkg/providers/appsec/resource_akamai_appsec_security_policy_test.go index 8ae0f2601..68e9fa07a 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_security_policy_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_security_policy_test.go @@ -57,14 +57,14 @@ func TestAccAkamaiSecurityPolicy_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResSecurityPolicy/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_security_policy.test", "id", "PLE_114049"), + resource.TestCheckResourceAttr("akamai_appsec_security_policy.test", "id", "43253:7:PLE_114049"), ), ExpectNonEmptyPlan: true, }, { Config: loadFixtureString("testdata/TestResSecurityPolicy/update_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_security_policy.test", "id", "PLE_114049"), + resource.TestCheckResourceAttr("akamai_appsec_security_policy.test", "id", "43253:7:PLE_114049"), ), ExpectNonEmptyPlan: true, }, From 1b2f6fe88ff176ec295d40fd3a0d9e206bd9db8b Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Wed, 20 Jan 2021 13:48:11 -0500 Subject: [PATCH 046/215] Additional markdown files for Jan/Feb release --- .../appsec_advanced_settings_logging.md | 74 ++++++++++++++++++ .../appsec_advanced_settings_prefetch.md | 58 ++++++++++++++ .../appsec_api_request_constraints.md | 77 +++++++++++++++++++ .../appsec_attack_group_actions.md | 2 +- .../appsec_bypass_network_lists.md | 63 +++++++++++++++ docs/data-sources/appsec_contracts_groups.md | 2 +- docs/data-sources/appsec_custom_deny.md | 75 ++++++++++++++++++ docs/data-sources/appsec_eval_hostnames.md | 2 +- .../data-sources/appsec_failover_hostnames.md | 2 +- docs/data-sources/appsec_hostname_coverage.md | 20 ++++- .../appsec_hostname_coverage_match_targets.md | 2 +- .../appsec_hostname_coverage_overlapping.md | 2 +- .../appsec_reputation_analysis.md | 59 ++++++++++++++ docs/data-sources/appsec_siem_definitions.md | 2 +- docs/data-sources/appsec_siem_settings.md | 2 +- docs/data-sources/appsec_version_notes.md | 56 ++++++++++++++ docs/resources/appsec_bypass_network_lists.md | 50 ++++++++++++ docs/resources/appsec_security_policy.md | 59 ++++++++++++++ ...stname.md => appsec_selected_hostnames.md} | 8 +- docs/resources/appsec_siem_settings.md | 70 +++++++++++++++++ docs/resources/appsec_version_notes.md | 52 +++++++++++++ 21 files changed, 722 insertions(+), 15 deletions(-) create mode 100644 docs/data-sources/appsec_advanced_settings_logging.md create mode 100644 docs/data-sources/appsec_advanced_settings_prefetch.md create mode 100644 docs/data-sources/appsec_api_request_constraints.md create mode 100644 docs/data-sources/appsec_bypass_network_lists.md create mode 100644 docs/data-sources/appsec_custom_deny.md create mode 100644 docs/data-sources/appsec_reputation_analysis.md create mode 100644 docs/data-sources/appsec_version_notes.md create mode 100644 docs/resources/appsec_bypass_network_lists.md create mode 100644 docs/resources/appsec_security_policy.md rename docs/resources/{appsec_selected_hostname.md => appsec_selected_hostnames.md} (85%) create mode 100644 docs/resources/appsec_siem_settings.md create mode 100644 docs/resources/appsec_version_notes.md diff --git a/docs/data-sources/appsec_advanced_settings_logging.md b/docs/data-sources/appsec_advanced_settings_logging.md new file mode 100644 index 000000000..c3e3b7505 --- /dev/null +++ b/docs/data-sources/appsec_advanced_settings_logging.md @@ -0,0 +1,74 @@ +--- +layout: "akamai" +page_title: "Akamai: AdvancedSettingsLogging" +subcategory: "Application Security" +description: |- + AdvancedSettingsLogging +--- + +# akamai_appsec_advanced_settings_logging + +Use the `akamai_appsec_advanced_settings_logging` data source to retrieve information about the HTTP header logging controls for a configuration. This operation applies at the configuration level, and therefore applies to all policies within a configuration. You may retrieve these settings for a particular policy by specifying the policy using the security_policy_id parameter. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#gethttpheaderloggingforaconfiguration). + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to view the advanced settings loggings in a given security configuration +// when policy is set - /appsec/v1/configs/{configId}/versions/{versionNum}/security-policies/{policyId}/advanced-settings/logging +// with out policy - /appsec/v1/configs/{configId}/versions/{versionNum}/advanced-settings/logging +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +data "akamai_appsec_advanced_settings_logging" "logging" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version +} + +output "advanced_settings_logging_output" { + value = data.akamai_appsec_advanced_settings_logging.logging.output_text +} + +output "advanced_settings_logging_json" { + value = data.akamai_appsec_advanced_settings_logging.logging.json +} + +data "akamai_appsec_advanced_settings_logging" "policy_override" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + security_policy_id = var.security_policy_id +} + +output "advanced_settings_policy_logging_output" { + value = data.akamai_appsec_advanced_settings_logging.policy_override.output_text +} + +output "advanced_settings_policy_logging_json" { + value = data.akamai_appsec_advanced_settings_logging.policy_override.json +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The configuration ID. + +* `version` - (Required) The version number of the configuration. + +* `security_policy_id` - (Optional) The ID of the security policy to use. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `json` - A JSON-formatted list of information about the logging settings. + +* `output_text` - A tabular display showing the logging settings. + diff --git a/docs/data-sources/appsec_advanced_settings_prefetch.md b/docs/data-sources/appsec_advanced_settings_prefetch.md new file mode 100644 index 000000000..e42db6769 --- /dev/null +++ b/docs/data-sources/appsec_advanced_settings_prefetch.md @@ -0,0 +1,58 @@ +--- +layout: "akamai" +page_title: "Akamai: AdvancedSettingsPrefetch" +subcategory: "Application Security" +description: |- + AdvancedSettingsPrefetch +--- + +# akamai_appsec_advanced_settings_prefetch + +Use the `akamai_appsec_advanced_settings_prefetch` data source to retrieve information the prefetch request settings for a security configuration. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getprefetchrequestsforaconfiguration). + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to view the prefetch request settings for a given security configuration +// with out policy - /appsec/v1/configs/{configId}/versions/{versionNum}/advanced-settings/logging +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +data "akamai_appsec_advanced_settings_prefetch" "prefetch" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version +} + +//tabular data of all fields - 3 boolean fields and one extensions text +output "advanced_settings_prefetch_output" { + value = data.akamai_appsec_advanced_settings_prefetch.prefetch.output_text +} + +output "advanced_settings_prefetch_json" { + value = data.akamai_appsec_advanced_settings_prefetch.prefetch.json +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The configuration ID. + +* `version` - (Required) The version number of the configuration. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `json` - A JSON-formatted list of information about the prefetch request settings. + +* `output_text` - A tabular display showing the prefetch request settings. + diff --git a/docs/data-sources/appsec_api_request_constraints.md b/docs/data-sources/appsec_api_request_constraints.md new file mode 100644 index 000000000..3fd693f17 --- /dev/null +++ b/docs/data-sources/appsec_api_request_constraints.md @@ -0,0 +1,77 @@ +--- +layout: "akamai" +page_title: "Akamai: ApiRequestConstraints" +subcategory: "Application Security" +description: |- + ApiRequestConstraints +--- + +# akamai_appsec_api_request_constraints + +Use the `akamai_appsec_api_request_constraints` data source to retrieve a list of APIs with their constraints and associated actions, or the constraints and actions for a particular API. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getapirequestconstraints). + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to view the all api request constraints associated with a given security policy +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} +data "akamai_appsec_api_request_constraints" "apis_request_constraints" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + security_policy_id = var.security_policy_id +} + +//endpoint id and action +output "apis_constraints_text" { + value = data.akamai_appsec_api_request_constraints.apis_request_constraints.output_text +} + +output "apis_constraints_json" { + value = data.akamai_appsec_api_request_constraints.apis_request_constraints.json +} + +// USE CASE: user wants to view action on a single api request constraint associated with a given security policy +data "akamai_appsec_api_request_constraints" "api_request_constraints" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + security_policy_id = var.security_policy_id + api_id = var.api_id +} + +output "api_constraints_text" { + value = data.akamai_appsec_api_request_constraints.api_request_constraints.output_text +} + +output "api_constraints_json" { + value = data.akamai_appsec_api_request_constraints.api_request_constraints.json +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The configuration ID to use. + +* `version` - (Required) The version number of the configuration to use. + +* `security_policy_id` - (Required) The ID of the security policy to use. + +* `api_id` - (Optional) The ID of a specific API for which to retrieve constraint information. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `json` - A JSON-formatted list of information about the APIs and their constraints and actions. + +* `output_text` - A tabular display showing the APIs and their constraints and actions. + diff --git a/docs/data-sources/appsec_attack_group_actions.md b/docs/data-sources/appsec_attack_group_actions.md index 10dada55b..8d82994ea 100644 --- a/docs/data-sources/appsec_attack_group_actions.md +++ b/docs/data-sources/appsec_attack_group_actions.md @@ -8,7 +8,7 @@ description: |- # akamai_appsec_attack_group_actions -The `akamai_appsec_attack_group_actions` data source allows you to retrieve a list of attack groups and actions associated with a security policy or a specific attack group and action associated with a security policy. +Use the `akamai_appsec_attack_group_actions` data source to retrieve a list of attack groups and actions associated with a security policy or a specific attack group and action associated with a security policy. ## Example Usage diff --git a/docs/data-sources/appsec_bypass_network_lists.md b/docs/data-sources/appsec_bypass_network_lists.md new file mode 100644 index 000000000..dd15da8e5 --- /dev/null +++ b/docs/data-sources/appsec_bypass_network_lists.md @@ -0,0 +1,63 @@ +--- +layout: "akamai" +page_title: "Akamai: BypassNetworkLists" +subcategory: "Application Security" +description: |- + BypassNetworkLists +--- + +# akamai_appsec_bypass_network_lists + +Use the `akamai_appsec_bypass_network_lists` data source to retrieve information about which network lists are used in the bypass network lists settings. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getbypassnetworklistsforawapconfigversion). + + +## Example Usage + +Basic usage: + +```hcl + +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to see information about bypass network lists used in a Security Configuration version +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +data "akamai_appsec_bypass_network_lists" "bypass_network_lists" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version +} + +//Tabular display of ID and Name of the network lists +output "bypass_network_lists_output" { + value = data.akamai_appsec_bypass_network_lists.bypass_network_lists.output_text +} + +output "bypass_network_lists_json" { + value = data.akamai_appsec_bypass_network_lists.bypass_network_lists.json +} + +output "bypass_network_lists_id_list" { + value = data.akamai_appsec_bypass_network_lists.bypass_network_lists.bypass_network_list +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The configuration ID to use. + +* `version` - (Required) The version number of the configuration to use. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `json` - A JSON-formatted list of information about the bypass network lists. + +* `output_text` - A tabular display showing the bypass network list information. + diff --git a/docs/data-sources/appsec_contracts_groups.md b/docs/data-sources/appsec_contracts_groups.md index dd0e45e68..006d724d2 100644 --- a/docs/data-sources/appsec_contracts_groups.md +++ b/docs/data-sources/appsec_contracts_groups.md @@ -8,7 +8,7 @@ description: |- # akamai_appsec_contracts_groups -The `akamai_appsec_contracts_groups` data source allows you to retrieve information about the contracts and groups for your account. Each object contains the contract, groups associated with the contract, and whether Kona Site Defender or Web Application Protector is the product for that contract. You’ll need this information when you create a new security configuration or when you want to get a list of hostnames still available for use in a security policy. The information available via this data source is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getcontractsandgroupswithksdorwaf). +Use the `akamai_appsec_contracts_groups` data source to retrieve information about the contracts and groups for your account. Each object contains the contract, groups associated with the contract, and whether Kona Site Defender or Web Application Protector is the product for that contract. You’ll need this information when you create a new security configuration or when you want to get a list of hostnames still available for use in a security policy. The information available via this data source is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getcontractsandgroupswithksdorwaf). ## Example Usage diff --git a/docs/data-sources/appsec_custom_deny.md b/docs/data-sources/appsec_custom_deny.md new file mode 100644 index 000000000..0a5007ab5 --- /dev/null +++ b/docs/data-sources/appsec_custom_deny.md @@ -0,0 +1,75 @@ +--- +layout: "akamai" +page_title: "Akamai: CustomDeny" +subcategory: "Application Security" +description: |- + CustomDeny +--- + +# akamai_appsec_custom_deny + +Use the `akamai_appsec_custom_deny` data source to retrieve information about custom deny actions for a specific security configuration version, or about a particular custom deny action. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getcustomdeny). + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to view the custom deny data with a given security configuration +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +data "akamai_appsec_custom_deny" "custom_deny_list" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version +} + +//tabular data with id and name +output "custom_deny_list_output" { + value = data.akamai_appsec_custom_deny.custom_deny_list.output_text +} + +output "custom_deny_list_json" { + value = data.akamai_appsec_custom_deny.custom_deny_list.json +} + +// USE CASE: user wants to see a single custom deny associated with a given security configuration version +data "akamai_appsec_custom_deny" "custom_deny" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + custom_deny_id = var.custom_deny_id +} + +output "custom_deny_json" { + value = data.akamai_appsec_custom_deny.custom_deny.json +} + +output "custom_deny_output" { + value = data.akamai_appsec_custom_deny.custom_deny.output_text +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The configuration ID to use. + +* `version` - (Required) The version number of the configuration to use. + +* `custom_deny_id` - (Optional) The ID of a specific custom deny action. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `json` - A JSON-formatted list of the custom deny action information. + +* `output_text` - A tabular display showing the custom deny action information. + + diff --git a/docs/data-sources/appsec_eval_hostnames.md b/docs/data-sources/appsec_eval_hostnames.md index 1e4cd7be2..0fb6756b8 100644 --- a/docs/data-sources/appsec_eval_hostnames.md +++ b/docs/data-sources/appsec_eval_hostnames.md @@ -8,7 +8,7 @@ description: |- # akamai_appsec_eval_hostnames -The `akamai_appsec_eval_hostnames` data source allows you to retrieve the evaluation hostnames for a configuration version. Evaluation mode for hostnames is only available for Web Application Protector. Run hostnames in evaluation mode to see how your configuration settings protect traffic for that hostname before adding a hostname directly to a live configuration. An evaluation period lasts four weeks unless you stop the evaluation. Once you begin, the hostnames you evaluate start responding to traffic as if they are your current hostnames. However, instead of taking an action the evaluation hostnames log which action they would have taken if they were your actively-protected hostnames and not a test. +Use the `akamai_appsec_eval_hostnames` data source to retrieve the evaluation hostnames for a configuration version. Evaluation mode for hostnames is only available for Web Application Protector. Run hostnames in evaluation mode to see how your configuration settings protect traffic for that hostname before adding a hostname directly to a live configuration. An evaluation period lasts four weeks unless you stop the evaluation. Once you begin, the hostnames you evaluate start responding to traffic as if they are your current hostnames. However, instead of taking an action the evaluation hostnames log which action they would have taken if they were your actively-protected hostnames and not a test. ## Example Usage diff --git a/docs/data-sources/appsec_failover_hostnames.md b/docs/data-sources/appsec_failover_hostnames.md index 0bc41cbb4..ce259bdd9 100644 --- a/docs/data-sources/appsec_failover_hostnames.md +++ b/docs/data-sources/appsec_failover_hostnames.md @@ -8,7 +8,7 @@ description: |- # akamai_appsec_failover_hostnames -The `akamai_appsec_failover_hostnames` data source allows you to retrieve a list of the failover hostnames in a configuration. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getfailoverhostnames). +Use the `akamai_appsec_failover_hostnames` data source to retrieve a list of the failover hostnames in a configuration. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getfailoverhostnames). ## Example Usage diff --git a/docs/data-sources/appsec_hostname_coverage.md b/docs/data-sources/appsec_hostname_coverage.md index 6d9364815..8729c8fc3 100644 --- a/docs/data-sources/appsec_hostname_coverage.md +++ b/docs/data-sources/appsec_hostname_coverage.md @@ -3,12 +3,12 @@ layout: "akamai" page_title: "Akamai: HostnameCoverage" subcategory: "Application Security" description: |- - ApiHostnameCoverage + HostnameCoverage --- # akamai_appsec_hostname_coverage -The `akamai_appsec_hostname_coverage` data source allows you to retrieve a list of hostnames in the account with their current protections, activation statuses, and other summary information. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#8eb23096). +Use the `akamai_appsec_hostname_coverage` data source to retrieve a list of hostnames in the account with their current protections, activation statuses, and other summary information. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#8eb23096). ## Example Usage @@ -19,8 +19,22 @@ provider "akamai" { edgerc = "~/.edgerc" } +// USE CASE: user wants to view the hostname coverage data +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + data "akamai_appsec_hostname_coverage" "hostname_coverage" { } + +output "hostname_coverage_list_json" { + value = data.akamai_appsec_hostname_coverage.hostname_coverage.json +} + +//tabular data of hostname, status, hasMatchTarget +output "hostname_coverage_list_output" { + value = data.akamai_appsec_hostname_coverage.hostname_coverage.output_text +} ``` ## Argument Reference @@ -31,7 +45,7 @@ The following arguments are supported: ## Attributes Reference -In addition to the arguments above, the following attributes are exported: +The following attributes are exported: * `json` - A JSON-formatted list of the hostname coverage information. diff --git a/docs/data-sources/appsec_hostname_coverage_match_targets.md b/docs/data-sources/appsec_hostname_coverage_match_targets.md index 5b398f3a3..3de2197b2 100644 --- a/docs/data-sources/appsec_hostname_coverage_match_targets.md +++ b/docs/data-sources/appsec_hostname_coverage_match_targets.md @@ -8,7 +8,7 @@ description: |- # akamai_appsec_hostname_coverage_match_targets -The `akamai_appsec_hostname_coverage_match_targets` data source allows you to retrieve information about the API and website match targets that protect a hostname. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#gethostnamecoveragematchtargets). +Use the `akamai_appsec_hostname_coverage_match_targets` data source to retrieve information about the API and website match targets that protect a hostname. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#gethostnamecoveragematchtargets). ## Example Usage diff --git a/docs/data-sources/appsec_hostname_coverage_overlapping.md b/docs/data-sources/appsec_hostname_coverage_overlapping.md index 4b66c22db..8f6b6e9b8 100644 --- a/docs/data-sources/appsec_hostname_coverage_overlapping.md +++ b/docs/data-sources/appsec_hostname_coverage_overlapping.md @@ -8,7 +8,7 @@ description: |- # akamai_appsec_hostname_coverage_overlapping -The `akamai_appsec_hostname_coverage_overlapping` data source allows you to retrieve information about the configuration versions that contain a hostname also included in the current configuration version. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#gethostnamecoverageoverlapping). +Use the `akamai_appsec_hostname_coverage_overlapping` data source to retrieve information about the configuration versions that contain a hostname also included in the current configuration version. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#gethostnamecoverageoverlapping). ## Example Usage diff --git a/docs/data-sources/appsec_reputation_analysis.md b/docs/data-sources/appsec_reputation_analysis.md new file mode 100644 index 000000000..d7ad4b902 --- /dev/null +++ b/docs/data-sources/appsec_reputation_analysis.md @@ -0,0 +1,59 @@ +--- +layout: "akamai" +page_title: "Akamai: ReputationAnalysis" +subcategory: "Application Security" +description: |- + ReputationAnalysis +--- + +# akamai_appsec_reputation_analysis + +Use the `` data source to retrieve information about the current reputation analysis settings. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getreputationanalysis). + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to view the all reputation analysis associated with a given security policy +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +data "akamai_appsec_reputation_analysis" "reputation_analysis" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + security_policy_id = var.security_policy_id +} + +output "reputation_analysis_text" { + value = data.akamai_appsec_reputation_analysis.reputation_analysis.output_text +} + +output "reputation_analysis_json" { + value = data.akamai_appsec_reputation_analysis.reputation_analysis.json +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The configuration ID to use. + +* `version` - (Required) The version number of the configuration to use. + +* `security_policy_id` - (Required) The ID of the security policy to use. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `json` - A JSON-formatted list of the reputation analysis settings. + +* `output_text` - A tabular display showing the reputation analysis settings. + diff --git a/docs/data-sources/appsec_siem_definitions.md b/docs/data-sources/appsec_siem_definitions.md index 1d2dc70f0..4fb418b24 100644 --- a/docs/data-sources/appsec_siem_definitions.md +++ b/docs/data-sources/appsec_siem_definitions.md @@ -8,7 +8,7 @@ description: |- # akamai_appsec_siem_definitions -The `akamai_appsec_siem_definitions` data source allows you to retrieve information about the available SIEM versions, or about a specific SIEM version. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getsiemversions). +Use the `akamai_appsec_siem_definitions` data source to retrieve information about the available SIEM versions, or about a specific SIEM version. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getsiemversions). ## Example Usage diff --git a/docs/data-sources/appsec_siem_settings.md b/docs/data-sources/appsec_siem_settings.md index e9435af14..e7d7f96a3 100644 --- a/docs/data-sources/appsec_siem_settings.md +++ b/docs/data-sources/appsec_siem_settings.md @@ -8,7 +8,7 @@ description: |- # akamai_appsec_siem_settings -The `akamai_appsec_siem_settings` data source allows you to retrieve the SIEM settings for a specific configuration. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getsiemsettings). +Use the `akamai_appsec_siem_settings` data source to retrieve the SIEM settings for a specific configuration. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getsiemsettings). ## Example Usage diff --git a/docs/data-sources/appsec_version_notes.md b/docs/data-sources/appsec_version_notes.md new file mode 100644 index 000000000..95ffd89f3 --- /dev/null +++ b/docs/data-sources/appsec_version_notes.md @@ -0,0 +1,56 @@ +--- +layout: "akamai" +page_title: "Akamai: VersionNotes" +subcategory: "Application Security" +description: |- + VersionNotes +--- + +# akamai_appsec_version_notes + +Use the `akamai_appsec_version_notes` data source to retrieve the most recent version notes for a configuration. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +// USE CASE: user wants to see version notes of the latest version +data "akamai_appsec_version_notes" "version_notes" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version +} + +output "version_notes_text" { + value = data.akamai_appsec_version_notes.version_notes.output_text +} + +output "version_notes_json" { + value = data.akamai_appsec_version_notes.version_notes.json +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The configuration ID to use. + +* `version` - (Required) The version number of the configuration to use. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `json` - A JSON-formatted list showing the version notes. + +* `output_text` - A tabular display showing the version notes. + diff --git a/docs/resources/appsec_bypass_network_lists.md b/docs/resources/appsec_bypass_network_lists.md new file mode 100644 index 000000000..615c826a3 --- /dev/null +++ b/docs/resources/appsec_bypass_network_lists.md @@ -0,0 +1,50 @@ +--- +layout: "akamai" +page_title: "Akamai: BypassNetworkLists" +subcategory: "Application Security" +description: |- + BypassNetworkLists +--- + +# akamai_appsec_bypass_network_lists + +Use the `akamai_appsec_bypass_network_lists` resource to update which network lists to use in the bypass network lists settings. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to update bypass network lists used in a Security Configuration version +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} +resource "akamai_appsec_bypass_network_lists" "bypass_network_lists" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + bypass_network_list = ["id1","id2"] +} + +//TF destroy - remove all the hosts, call the same API with empty payload +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The configuration ID to use. + +* `version` - (Required) The version number of the configuration to use. + +* `bypass_network_list` - (Required) A list containing the IDs of the network lists to use. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `output_text` - A tabular display showing the updated list of network list IDs. + diff --git a/docs/resources/appsec_security_policy.md b/docs/resources/appsec_security_policy.md new file mode 100644 index 000000000..24da2b31d --- /dev/null +++ b/docs/resources/appsec_security_policy.md @@ -0,0 +1,59 @@ +--- +layout: "akamai" +page_title: "Akamai: SecurityPolicy" +subcategory: "Application Security" +description: |- + SecurityPolicy +--- + +# akamai_appsec_security_policy + +Use the `akamai_appsec_security_policy` resource to create a new security policy. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to create a new security policy +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +resource "akamai_appsec_security_policy" "security_policy_create" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + default_settings = var.default_settings + security_policy_name = var.policy_name + security_policy_prefix = var.policy_prefix +} + +output "security_policy_create" { + value = akamai_appsec_security_policy.security_policy_create.security_policy_id +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The configuration ID to use. + +* `version` - (Required) The version number of the configuration to use. + +* `security_policy_name` - (Optional) The name of the new security policy. If not supplied, the name will be autogenerated. + +* `security_policy_prefix' - (Optional) The four-character alphanumeric string prefix for the policyId. If not provided, the prefix is autogenerated. + +* `default_settings` - (Optional) Whether the new policy should use the default settings. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `security_policy_id` - The ID of the newly created security policy. + diff --git a/docs/resources/appsec_selected_hostname.md b/docs/resources/appsec_selected_hostnames.md similarity index 85% rename from docs/resources/appsec_selected_hostname.md rename to docs/resources/appsec_selected_hostnames.md index 4b09b1c60..413ae3800 100644 --- a/docs/resources/appsec_selected_hostname.md +++ b/docs/resources/appsec_selected_hostnames.md @@ -1,15 +1,15 @@ --- layout: "akamai" -page_title: "Akamai: SelectedHostname" +page_title: "Akamai: SelectedHostnames" subcategory: "Application Security" description: |- - SelectedHostname + SelectedHostnames --- -# akamai_appsec_selected_hostname +# akamai_appsec_selected_hostnames -The `akamai_appsec_selected_hostname` resource allows you to set the list of hostnames protected under a given security configuration version. +The `akamai_appsec_selected_hostnames` resource allows you to set the list of hostnames protected under a given security configuration version. ## Example Usage diff --git a/docs/resources/appsec_siem_settings.md b/docs/resources/appsec_siem_settings.md new file mode 100644 index 000000000..1eebc7c88 --- /dev/null +++ b/docs/resources/appsec_siem_settings.md @@ -0,0 +1,70 @@ +--- +layout: "akamai" +page_title: "Akamai: SIEMSettings" +subcategory: "Application Security" +description: |- + SIEMSettings +--- + +# akamai_appsec_siem_settings + +Use the `akamai_appsec_siem_settings` resource to mpdate the SIEM integration settings for a specific configuration. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to update the siem settings +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +data "akamai_appsec_siem_definitions" "siem_definition" { + siem_definition_name = var.siem_definition_name +} + +data "akamai_appsec_security_policy" "security_policies" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version +} + +resource "akamai_appsec_siem_settings" "siem" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + enable_siem = true + enable_for_all_policies = false + enable_botman_siem = true + siem_id = data.akamai_appsec_siem_definitions.siem_definition.id + security_policy_ids = data.akamai_appsec_security_policy.security_policies.policy_list +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The configuration ID to use. + +* `version` - (Required) The version number of the configuration to use. + +* `enable_siem` - (Required) Whether you enabled SIEM in a security configuration version. + +* `enable_for_all_policies` - (Required) Whether you enabled SIEM for all the security policies in the configuration version. + +* `enable_botman_siem` - (Required) Whether you enabled SIEM for the Bot Manager events. + +* `siem_id` - (Required) An integer that uniquely identifies the SIEM settings. + +* `security_policy_ids` - (Required) The list of security policy identifiers for which to enable the SIEM integration. + +## Attributes Reference + +In addition to the arguments above, the following attribute is exported: + +* `output_text` - A tabular display showing the updated SIEM integration settings. + diff --git a/docs/resources/appsec_version_notes.md b/docs/resources/appsec_version_notes.md new file mode 100644 index 000000000..12e9f7c12 --- /dev/null +++ b/docs/resources/appsec_version_notes.md @@ -0,0 +1,52 @@ +--- +layout: "akamai" +page_title: "Akamai: VersionNotes" +subcategory: "Application Security" +description: |- + VersionNotes +--- + +# akamai_appsec_version_notes + +Use the `akamai_appsec_version_notes` resource to update the version notes for a configuration. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +// USE CASE: user wants to update the version notes of the latest version +resource "akamai_appsec_version_notes" "version_notes" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + version_notes = var.version_notes +} +output "version_notes" { + value = akamai_appsec_version_notes.version_notes.output_text +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The configuration ID to use. + +* `version` - (Required) The version number of the configuration to use. + +* `version_notes` - (Required) A string containing the version notes to be used. + +## Attributes Reference + +In addition to the arguments above, the following attributes are exported: + +* `output_text` - A tabular display showing the updated version notes. + From 3ca8c890292e3ae673668bddbd87b8a508261621 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Wed, 20 Jan 2021 15:59:02 -0500 Subject: [PATCH 047/215] Fix name for eval_hostnames resource --- .../{appsec_eval_host.md => appsec_eval_hostnames.md} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename docs/resources/{appsec_eval_host.md => appsec_eval_hostnames.md} (77%) diff --git a/docs/resources/appsec_eval_host.md b/docs/resources/appsec_eval_hostnames.md similarity index 77% rename from docs/resources/appsec_eval_host.md rename to docs/resources/appsec_eval_hostnames.md index 5f21a6cf0..e608cff45 100644 --- a/docs/resources/appsec_eval_host.md +++ b/docs/resources/appsec_eval_hostnames.md @@ -1,14 +1,14 @@ --- layout: "akamai" -page_title: "Akamai: EvalHost" +page_title: "Akamai: EvalHostnames" subcategory: "Application Security" description: |- - EvalHost + EvalHostnames --- -# resource_akamai_appsec_eval_host +# resource_akamai_appsec_eval_hostnames -The `resource_akamai_appsec_eval_host` resource allows you to update the list of hostnames you want to evaluate for a configuration version. +The `resource_akamai_appsec_eval_hostnames` resource allows you to update the list of hostnames you want to evaluate for a configuration version. ## Example Usage @@ -24,7 +24,7 @@ data "akamai_appsec_configuration" "configuration" { } // USE CASE: user wants to specify the hostnames to evaluate -resource "akamai_appsec_eval_host" "eval_host" { +resource "akamai_appsec_eval_hostnames" "eval_hostnames" { config_id = data.akamai_appsec_configuration.configuration.config_id version = data.akamai_appsec_configuration.configuration.latest_version hostnames = var.hostnames From db566a093dfcc48f833a37eb5de0b6dc7ee8d0d2 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 20 Jan 2021 20:16:01 -0600 Subject: [PATCH 048/215] Add support for removal of allow sampling and override --- pkg/providers/appsec/appsec_test.go | 10 ++++ ...akamai_appsec_advanced_settings_logging.go | 59 ++++++++++++++++++- ...i_appsec_advanced_settings_logging_test.go | 9 +++ 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/appsec_test.go b/pkg/providers/appsec/appsec_test.go index 092e9bbe9..408377f54 100644 --- a/pkg/providers/appsec/appsec_test.go +++ b/pkg/providers/appsec/appsec_test.go @@ -131,6 +131,16 @@ func (p *mockappsec) GetAdvancedSettingsLogging(ctx context.Context, params apps return args.Get(0).(*appsec.GetAdvancedSettingsLoggingResponse), args.Error(1) } +func (p *mockappsec) RemoveAdvancedSettingsLogging(ctx context.Context, params appsec.RemoveAdvancedSettingsLoggingRequest) (*appsec.RemoveAdvancedSettingsLoggingResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.RemoveAdvancedSettingsLoggingResponse), args.Error(1) +} + func (p *mockappsec) GetAdvancedSettingsPrefetch(ctx context.Context, params appsec.GetAdvancedSettingsPrefetchRequest) (*appsec.GetAdvancedSettingsPrefetchResponse, error) { args := p.Called(ctx, params) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go index 54c525a8e..3dcb0ef33 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go @@ -116,7 +116,64 @@ func resourceAdvancedSettingsLoggingRead(ctx context.Context, d *schema.Resource func resourceAdvancedSettingsLoggingDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - return schema.NoopContext(nil, d, m) + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceAdvancedSettingsLoggingRemove") + + removeAdvancedSettingsLogging := appsec.RemoveAdvancedSettingsLoggingRequest{} + + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeAdvancedSettingsLogging.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeAdvancedSettingsLogging.Version = version + + policyid := s[2] + + removeAdvancedSettingsLogging.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeAdvancedSettingsLogging.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeAdvancedSettingsLogging.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeAdvancedSettingsLogging.PolicyID = policyid + } + + if removeAdvancedSettingsLogging.PolicyID != "" { + removeAdvancedSettingsLogging.Override = false + } else { + removeAdvancedSettingsLogging.AllowSampling = false + } + + _, erru := client.RemoveAdvancedSettingsLogging(ctx, removeAdvancedSettingsLogging) + if erru != nil { + logger.Errorf("calling 'updateAdvancedSettingsLogging': %s", erru.Error()) + return diag.FromErr(erru) + } + d.SetId("") + return nil } func resourceAdvancedSettingsLoggingUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go index 74c122dd4..ce5166894 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go @@ -21,6 +21,10 @@ func TestAccAkamaiAdvancedSettingsLogging_res_basic(t *testing.T) { expectJS := compactJSON(loadFixtureBytes("testdata/TestResAdvancedSettingsLogging/AdvancedSettingsLogging.json")) json.Unmarshal([]byte(expectJS), &cr) + crd := appsec.RemoveAdvancedSettingsLoggingResponse{} + expectJSD := compactJSON(loadFixtureBytes("testdata/TestResAdvancedSettingsLogging/AdvancedSettingsLogging.json")) + json.Unmarshal([]byte(expectJSD), &crd) + client.On("GetAdvancedSettingsLogging", mock.Anything, // ctx is irrelevant for this test appsec.GetAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7}, @@ -31,6 +35,11 @@ func TestAccAkamaiAdvancedSettingsLogging_res_basic(t *testing.T) { appsec.UpdateAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: "", JsonPayloadRaw: json.RawMessage{0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x6c, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x73, 0x64, 0x61, 0x73, 0x64, 0x61, 0x64, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x6f, 0x6e, 0x6c, 0x79, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x7d, 0xa}}, ).Return(&cu, nil) + client.On("RemoveAdvancedSettingsLogging", + mock.Anything, // ctx is irrelevant for this test + appsec.RemoveAdvancedSettingsLoggingRequest{ConfigID: 43253, Version: 7, PolicyID: ""}, + ).Return(&crd, nil) + useClient(client, func() { resource.Test(t, resource.TestCase{ IsUnitTest: true, From 9c7ae5ac728489048e53b0f304ff4cbd0660cb03 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 20 Jan 2021 20:30:19 -0600 Subject: [PATCH 049/215] Add support for cookies in output template for advanced settings --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 7550b4ddd..6bf4e1150 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -109,7 +109,7 @@ func RenderTemplates(ots map[string]*OutputTemplate, key string, str interface{} } func InitTemplates(otm map[string]*OutputTemplate) { - otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.CustomHeaders.Type}} {{.CustomHeaders.Values}}|{{.StandardHeaders.Type}} {{.StandardHeaders.Values}}"} + otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Cookies|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}}|{{.CustomHeaders.Type}} {{.CustomHeaders.Values}}|{{.StandardHeaders.Type}} {{.StandardHeaders.Values}}"} otm["advancedSettingsPolicyLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsPolicyLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.CustomHeaders}}|{{.StandardHeaders}}"} otm["advancedSettingsPrefetchDS"] = &OutputTemplate{TemplateName: "advancedSettingsPrefetchDS", TableTitle: "Enable App Layer|All Extension|Enable Rate Controls|Extensions", TemplateType: "TABULAR", TemplateString: "{{.EnableAppLayer}}|{{.AllExtensions}}|{{.EnableRateControls}}|{{range $index, $element := .Extensions}}{{.}} {{end}}"} From 7a7a2fe6bc64a555964e34fc92a0af73f43471fe Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 20 Jan 2021 20:53:19 -0600 Subject: [PATCH 050/215] Add support for hostnames output list to failover hostnames --- .../appsec/data_akamai_appsec_failover_hostnames.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/providers/appsec/data_akamai_appsec_failover_hostnames.go b/pkg/providers/appsec/data_akamai_appsec_failover_hostnames.go index f30ce46a8..1843af8c7 100644 --- a/pkg/providers/appsec/data_akamai_appsec_failover_hostnames.go +++ b/pkg/providers/appsec/data_akamai_appsec_failover_hostnames.go @@ -79,6 +79,16 @@ func dataSourceFailoverHostnamesRead(ctx context.Context, d *schema.ResourceData return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + newhdata := make([]string, 0, len(failoverhostnames.HostnameList)) + + for _, hosts := range failoverhostnames.HostnameList { + newhdata = append(newhdata, hosts.Hostname) + } + + if err := d.Set("hostnames", newhdata); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(strconv.Itoa(getFailoverHostnames.ConfigID)) return nil From 3da9a8c6212f965ae5f74047b8361c5312837f06 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 20 Jan 2021 21:13:22 -0600 Subject: [PATCH 051/215] Add support for RemoveApiRequestConstraints --- pkg/providers/appsec/appsec_test.go | 10 ++++ ...e_akamai_appsec_api_request_constraints.go | 47 +++++++++++++++++-- ...mai_appsec_api_request_constraints_test.go | 9 ++++ 3 files changed, 62 insertions(+), 4 deletions(-) diff --git a/pkg/providers/appsec/appsec_test.go b/pkg/providers/appsec/appsec_test.go index 408377f54..0de0ae360 100644 --- a/pkg/providers/appsec/appsec_test.go +++ b/pkg/providers/appsec/appsec_test.go @@ -231,6 +231,16 @@ func (p *mockappsec) UpdateApiRequestConstraints(ctx context.Context, params app return args.Get(0).(*appsec.UpdateApiRequestConstraintsResponse), args.Error(1) } +func (p *mockappsec) RemoveApiRequestConstraints(ctx context.Context, params appsec.RemoveApiRequestConstraintsRequest) (*appsec.RemoveApiRequestConstraintsResponse, error) { + args := p.Called(ctx, params) + + if args.Get(0) == nil { + return nil, args.Error(1) + } + + return args.Get(0).(*appsec.RemoveApiRequestConstraintsResponse), args.Error(1) +} + func (p *mockappsec) GetContractsGroups(ctx context.Context, params appsec.GetContractsGroupsRequest) (*appsec.GetContractsGroupsResponse, error) { args := p.Called(ctx, params) diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go index 45c84aeaf..838dce5f9 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go @@ -5,7 +5,7 @@ import ( "errors" "strconv" - v2 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" @@ -66,7 +66,7 @@ func resourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceDa client := inst.Client(meta) logger := meta.Log("APPSEC", "resourceApiRequestConstraintsRead") - getApiRequestConstraints := v2.GetApiRequestConstraintsRequest{} + getApiRequestConstraints := appsec.GetApiRequestConstraintsRequest{} configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { @@ -113,7 +113,46 @@ func resourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceDa func resourceApiRequestConstraintsDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - return schema.NoopContext(nil, d, m) + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceApiRequestConstraintsRemove") + + removeApiRequestConstraints := appsec.RemoveApiRequestConstraintsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeApiRequestConstraints.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeApiRequestConstraints.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeApiRequestConstraints.PolicyID = policyid + + apiEndpointID, err := tools.GetIntValue("api_endpoint_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeApiRequestConstraints.ApiID = apiEndpointID + + removeApiRequestConstraints.Action = "none" + + _, erru := client.RemoveApiRequestConstraints(ctx, removeApiRequestConstraints) + if erru != nil { + logger.Errorf("calling 'removeApiRequestConstraints': %s", erru.Error()) + return diag.FromErr(erru) + } + + d.SetId("") + return nil } func resourceApiRequestConstraintsUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { @@ -121,7 +160,7 @@ func resourceApiRequestConstraintsUpdate(ctx context.Context, d *schema.Resource client := inst.Client(meta) logger := meta.Log("APPSEC", "resourceApiRequestConstraintsUpdate") - updateApiRequestConstraints := v2.UpdateApiRequestConstraintsRequest{} + updateApiRequestConstraints := appsec.UpdateApiRequestConstraintsRequest{} configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go index 862df949c..62d677b72 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go @@ -21,6 +21,10 @@ func TestAccAkamaiApiRequestConstraints_res_basic(t *testing.T) { expectJS := compactJSON(loadFixtureBytes("testdata/TestResApiRequestConstraints/ApiRequestConstraints.json")) json.Unmarshal([]byte(expectJS), &cr) + crd := appsec.RemoveApiRequestConstraintsResponse{} + expectJSD := compactJSON(loadFixtureBytes("testdata/TestResApiRequestConstraints/ApiRequestConstraints.json")) + json.Unmarshal([]byte(expectJSD), &crd) + client.On("GetApiRequestConstraints", mock.Anything, // ctx is irrelevant for this test appsec.GetApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, @@ -31,6 +35,11 @@ func TestAccAkamaiApiRequestConstraints_res_basic(t *testing.T) { appsec.UpdateApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ApiID: 1, Action: "alert"}, ).Return(&cu, nil) + client.On("RemoveApiRequestConstraints", + mock.Anything, // ctx is irrelevant for this test + appsec.RemoveApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ApiID: 1, Action: "none"}, + ).Return(&crd, nil) + useClient(client, func() { resource.Test(t, resource.TestCase{ IsUnitTest: true, From bb7eb7e7995f6ca7cb208d16d442d85489bfe10f Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 20 Jan 2021 21:46:42 -0600 Subject: [PATCH 052/215] Add support for BypassNetworkLists output and text output --- .../data_akamai_appsec_bypass_network_lists.go | 18 ++++++++++++++++-- pkg/providers/appsec/templates.go | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists.go b/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists.go index bc613c6aa..453c94795 100644 --- a/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists.go +++ b/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists.go @@ -27,7 +27,11 @@ func dataSourceBypassNetworkLists() *schema.Resource { Type: schema.TypeInt, Required: true, }, - + "bypass_network_list": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, "json": { Type: schema.TypeString, Computed: true, @@ -69,7 +73,7 @@ func dataSourceBypassNetworkListsRead(ctx context.Context, d *schema.ResourceDat ots := OutputTemplates{} InitTemplates(ots) - outputtext, err := RenderTemplates(ots, "AttackGroupActionDS", bypassnetworklists) + outputtext, err := RenderTemplates(ots, "bypassNetworkListsDS", bypassnetworklists) if err == nil { d.Set("output_text", outputtext) } @@ -83,6 +87,16 @@ func dataSourceBypassNetworkListsRead(ctx context.Context, d *schema.ResourceDat return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + nldata := make([]string, 0, len(bypassnetworklists.NetworkLists)) + + for _, hosts := range bypassnetworklists.NetworkLists { + nldata = append(nldata, hosts.ID) + } + + if err := d.Set("bypass_network_list", nldata); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(strconv.Itoa(getBypassNetworkLists.ConfigID)) return nil diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 6bf4e1150..ce69cf8c9 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -122,6 +122,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["configurationVersion"] = &OutputTemplate{TemplateName: "ConfigurationVersion", TableTitle: "Version Number|Staging Status|Production Status", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .VersionList}}{{if $index}},{{end}}{{.Version}}|{{.Staging.Status}}|{{.Production.Status}}{{end}}"} otm["contractsgroupsDS"] = &OutputTemplate{TemplateName: "contractsgroupsDS", TableTitle: "ContractID|GroupID|Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .ContractGroups}}{{if $index}},{{end}}{{.ContractID}}|{{.GroupID}}|{{.DisplayName}}{{end}}"} otm["failoverHostnamesDS"] = &OutputTemplate{TemplateName: "failoverHostnamesDS", TableTitle: "Hostname", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .HostnameList}}{{if $index}},{{end}}{{.Hostname}}{{end}}"} + otm["bypassNetworkListsDS"] = &OutputTemplate{TemplateName: "bypassNetworkListsDS", TableTitle: "Network List|ID", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .NetworkLists}}{{if $index}},{{end}}{{.Name}}|{{.ID}}{{end}}"} otm["penaltyBoxDS"] = &OutputTemplate{TemplateName: "penaltyBoxDS", TableTitle: "PenaltyBoxProtection|Action", TemplateType: "TABULAR", TemplateString: "{{.PenaltyBoxProtection}}|{{.Action}}"} From 3beff906b74677007b628401b3a4a1d19ec80681 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Thu, 21 Jan 2021 09:38:23 -0500 Subject: [PATCH 053/215] Remove comment --- docs/resources/appsec_bypass_network_lists.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/resources/appsec_bypass_network_lists.md b/docs/resources/appsec_bypass_network_lists.md index 615c826a3..082919037 100644 --- a/docs/resources/appsec_bypass_network_lists.md +++ b/docs/resources/appsec_bypass_network_lists.md @@ -28,8 +28,6 @@ resource "akamai_appsec_bypass_network_lists" "bypass_network_lists" { version = data.akamai_appsec_configuration.configuration.latest_version bypass_network_list = ["id1","id2"] } - -//TF destroy - remove all the hosts, call the same API with empty payload ``` ## Argument Reference From 6eb3b4b4b79a1f87a032cbfe4fec27f78cadd5a9 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Thu, 21 Jan 2021 11:39:51 -0500 Subject: [PATCH 054/215] Add bypass_network_list attribute --- docs/data-sources/appsec_bypass_network_lists.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/data-sources/appsec_bypass_network_lists.md b/docs/data-sources/appsec_bypass_network_lists.md index dd15da8e5..a1d13f0d8 100644 --- a/docs/data-sources/appsec_bypass_network_lists.md +++ b/docs/data-sources/appsec_bypass_network_lists.md @@ -57,6 +57,8 @@ The following arguments are supported: In addition to the arguments above, the following attributes are exported: +* `bypass_network_list` - A list of strings containing the network list IDs. + * `json` - A JSON-formatted list of information about the bypass network lists. * `output_text` - A tabular display showing the bypass network list information. From a478bc2b591823ea0fabc359e0ae6f84156d605e Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Thu, 21 Jan 2021 12:49:00 -0500 Subject: [PATCH 055/215] Remove comment --- docs/resources/appsec_custom_deny.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/resources/appsec_custom_deny.md b/docs/resources/appsec_custom_deny.md index 9d77ec36d..d2e2f2245 100644 --- a/docs/resources/appsec_custom_deny.md +++ b/docs/resources/appsec_custom_deny.md @@ -15,7 +15,6 @@ The `resource_akamai_appsec_custom_deny` resource allows you to create a new cus Basic usage: ```hcl -// OPEN API --> https://developer.akamai.com/api/cloud_security/application_security/v1.html#postcustomdeny provider "akamai" { edgerc = "~/.edgerc" } From 6e1159dcd177042762adcc345bb51425b93ec460 Mon Sep 17 00:00:00 2001 From: "St. Lawrence, Zachary" Date: Thu, 21 Jan 2021 20:21:26 -0500 Subject: [PATCH 056/215] DEVOPSPROV-1390 update property to use comments and populate version note field --- .../property/data_akamai_property_rules_schema_v0.go | 8 ++++---- pkg/providers/property/diff_suppress_funcs_test.go | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/providers/property/data_akamai_property_rules_schema_v0.go b/pkg/providers/property/data_akamai_property_rules_schema_v0.go index a8122a00b..7d38bca20 100644 --- a/pkg/providers/property/data_akamai_property_rules_schema_v0.go +++ b/pkg/providers/property/data_akamai_property_rules_schema_v0.go @@ -90,7 +90,7 @@ func dataAkamaiPropertyRuleSchemaV0() *schema.Resource { Type: schema.TypeString, Required: true, }, - "comment": { + "comments": { Type: schema.TypeString, Optional: true, }, @@ -110,7 +110,7 @@ func dataAkamaiPropertyRuleSchemaV0() *schema.Resource { Type: schema.TypeString, Required: true, }, - "comment": { + "comments": { Type: schema.TypeString, Optional: true, }, @@ -130,7 +130,7 @@ func dataAkamaiPropertyRuleSchemaV0() *schema.Resource { Type: schema.TypeString, Required: true, }, - "comment": { + "comments": { Type: schema.TypeString, Optional: true, }, @@ -150,7 +150,7 @@ func dataAkamaiPropertyRuleSchemaV0() *schema.Resource { Type: schema.TypeString, Required: true, }, - "comment": { + "comments": { Type: schema.TypeString, Optional: true, }, diff --git a/pkg/providers/property/diff_suppress_funcs_test.go b/pkg/providers/property/diff_suppress_funcs_test.go index 607e03fb5..5c99e056f 100644 --- a/pkg/providers/property/diff_suppress_funcs_test.go +++ b/pkg/providers/property/diff_suppress_funcs_test.go @@ -28,7 +28,7 @@ func TestCompareRules(t *testing.T) { }, }, Children: []papi.Rules{}, - Comment: "comment", + Comments: "comment", Criteria: []papi.RuleBehavior{ { Locked: "locked", @@ -83,7 +83,7 @@ func TestCompareRules(t *testing.T) { }, }, Children: []papi.Rules{}, - Comment: "comment", + Comments: "comment", Criteria: []papi.RuleBehavior{ { Locked: "locked", From 7393922e6de91735a9bf133a4048eb7759cd81ab Mon Sep 17 00:00:00 2001 From: "St. Lawrence, Zachary" Date: Thu, 21 Jan 2021 22:19:57 -0500 Subject: [PATCH 057/215] Changes to property version notes will now be seen as edits. --- pkg/providers/property/diff_suppress_funcs.go | 8 ++++++++ pkg/providers/property/diff_suppress_funcs_test.go | 12 ++++++------ pkg/providers/property/resource_akamai_property.go | 7 +++++-- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/pkg/providers/property/diff_suppress_funcs.go b/pkg/providers/property/diff_suppress_funcs.go index b8a7c0213..8c386024f 100644 --- a/pkg/providers/property/diff_suppress_funcs.go +++ b/pkg/providers/property/diff_suppress_funcs.go @@ -23,6 +23,14 @@ func compareRulesJSON(old, new string) bool { return diff } +func compareRuleTree(old, new *papi.RulesUpdate) bool { + if old.Comments != new.Comments { + return false + } + diff := compareRules(&old.Rules, &new.Rules) + return diff +} + // compareRules handles comparison between two papi.Rules objects // due to an issue in PAPI we need to compare collections of behaviors, criteria and variables discarding the order from JSON func compareRules(old, new *papi.Rules) bool { diff --git a/pkg/providers/property/diff_suppress_funcs_test.go b/pkg/providers/property/diff_suppress_funcs_test.go index 5c99e056f..12d49c2d4 100644 --- a/pkg/providers/property/diff_suppress_funcs_test.go +++ b/pkg/providers/property/diff_suppress_funcs_test.go @@ -152,7 +152,7 @@ func TestCompareRules(t *testing.T) { }, }, Children: []papi.Rules{}, - Comment: "comment", + Comments: "comment", Criteria: []papi.RuleBehavior{ { Locked: "locked", @@ -217,7 +217,7 @@ func TestCompareRules(t *testing.T) { }, }, Children: []papi.Rules{}, - Comment: "comment", + Comments: "comment", Criteria: []papi.RuleBehavior{ { Locked: "locked", @@ -316,7 +316,7 @@ func TestCompareRules(t *testing.T) { Name: "RULE 2", }, }, - Comment: "comment", + Comments: "comment", Criteria: []papi.RuleBehavior{}, CriteriaLocked: true, CustomOverride: &papi.RuleCustomOverride{ @@ -383,7 +383,7 @@ func TestCompareRules(t *testing.T) { Name: "RULE 2", }, }, - Comment: "comment", + Comments: "comment", Criteria: []papi.RuleBehavior{}, CriteriaLocked: true, CustomOverride: &papi.RuleCustomOverride{ @@ -454,7 +454,7 @@ func TestCompareRules(t *testing.T) { Name: "RULE 1", }, }, - Comment: "comment", + Comments: "comment", Criteria: []papi.RuleBehavior{}, CriteriaLocked: true, CustomOverride: &papi.RuleCustomOverride{ @@ -521,7 +521,7 @@ func TestCompareRules(t *testing.T) { Name: "RULE 2", }, }, - Comment: "comment", + Comments: "comment", Criteria: []papi.RuleBehavior{}, CriteriaLocked: true, CustomOverride: &papi.RuleCustomOverride{ diff --git a/pkg/providers/property/resource_akamai_property.go b/pkg/providers/property/resource_akamai_property.go index 0bdbfa39a..87a0a6bd8 100644 --- a/pkg/providers/property/resource_akamai_property.go +++ b/pkg/providers/property/resource_akamai_property.go @@ -63,7 +63,7 @@ func resourceProperty() *schema.Resource { return false } - return compareRules(&oldRules.Rules, &newRules.Rules) + return compareRuleTree(&oldRules, &newRules) } diffSuppressHostNames := func(_, oldHostname, newHostname string, _ *schema.ResourceData) bool { @@ -768,7 +768,10 @@ func fetchPropertyRules(ctx context.Context, client papi.PAPI, Property papi.Pro } logger.WithFields(logFields(*res)).Debug("fetched property rules") - Rules = papi.RulesUpdate{Rules: res.Rules} + Rules = papi.RulesUpdate{ + Rules: res.Rules, + Comments:res.Comments, + } Format = res.RuleFormat Errors = res.Errors Warnings = res.Warnings From 022343863bfc220e05b44ac92d9565d7fa052796 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 22 Jan 2021 12:51:35 -0600 Subject: [PATCH 058/215] Add support for JSON based import resources and fix advanced settings output --- ...akamai_appsec_advanced_settings_logging.go | 12 ++ ...e_akamai_appsec_api_request_constraints.go | 17 +- .../resource_akamai_appsec_configuration.go | 8 +- .../resource_akamai_appsec_custom_rule.go | 4 + .../resource_akamai_appsec_match_target.go | 182 ++++++++++++------ ...esource_akamai_appsec_match_target_test.go | 6 +- .../resource_akamai_appsec_rate_policy.go | 11 ++ ...source_akamai_appsec_reputation_profile.go | 2 +- pkg/providers/appsec/templates.go | 3 +- 9 files changed, 175 insertions(+), 70 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go index 3dcb0ef33..a7fa9635b 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go @@ -109,6 +109,18 @@ func resourceAdvancedSettingsLoggingRead(ctx context.Context, d *schema.Resource d.Set("output_text", outputtext) } + if err := d.Set("config_id", getAdvancedSettingsLogging.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getAdvancedSettingsLogging.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getAdvancedSettingsLogging.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%s", getAdvancedSettingsLogging.ConfigID, getAdvancedSettingsLogging.Version, getAdvancedSettingsLogging.PolicyID)) return nil diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go index 838dce5f9..2a455b864 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go @@ -118,38 +118,51 @@ func resourceApiRequestConstraintsDelete(ctx context.Context, d *schema.Resource logger := meta.Log("APPSEC", "resourceApiRequestConstraintsRemove") removeApiRequestConstraints := appsec.RemoveApiRequestConstraintsRequest{} + removePolicyProtections := appsec.RemovePolicyProtectionsRequest{} configid, err := tools.GetIntValue("config_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } removeApiRequestConstraints.ConfigID = configid + removePolicyProtections.ConfigID = configid version, err := tools.GetIntValue("version", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } removeApiRequestConstraints.Version = version + removePolicyProtections.Version = version policyid, err := tools.GetStringValue("security_policy_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } removeApiRequestConstraints.PolicyID = policyid + removePolicyProtections.PolicyID = policyid apiEndpointID, err := tools.GetIntValue("api_endpoint_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } removeApiRequestConstraints.ApiID = apiEndpointID - - removeApiRequestConstraints.Action = "none" + if removeApiRequestConstraints.ApiID != 0 { + removeApiRequestConstraints.Action = "none" + } _, erru := client.RemoveApiRequestConstraints(ctx, removeApiRequestConstraints) if erru != nil { logger.Errorf("calling 'removeApiRequestConstraints': %s", erru.Error()) return diag.FromErr(erru) } + if removeApiRequestConstraints.ApiID == 0 { + removePolicyProtections.ApplyAPIConstraints = false + _, errd := client.RemovePolicyProtections(ctx, removePolicyProtections) + if errd != nil { + logger.Errorf("calling 'removePolicyProtections': %s", errd.Error()) + return diag.FromErr(errd) + } + } d.SetId("") return nil diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration.go b/pkg/providers/appsec/resource_akamai_appsec_configuration.go index 8b9d64328..852804acd 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_configuration.go +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration.go @@ -183,13 +183,7 @@ func resourceConfigurationRead(ctx context.Context, d *schema.ResourceData, m in logger := meta.Log("APPSEC", "resourceConfigurationRead") getConfiguration := appsec.GetConfigurationsRequest{} - /* - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getConfiguration.ConfigID = configid - */ + ID, errconv := strconv.Atoi(d.Id()) if errconv != nil { diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go index a5248a420..ed03b7859 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go @@ -222,6 +222,10 @@ func resourceCustomRuleRead(ctx context.Context, d *schema.ResourceData, m inter return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("config_id", getCustomRule.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d", getCustomRule.ConfigID, customrule.ID)) return nil diff --git a/pkg/providers/appsec/resource_akamai_appsec_match_target.go b/pkg/providers/appsec/resource_akamai_appsec_match_target.go index 3a109e566..4ccfd7195 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_match_target.go +++ b/pkg/providers/appsec/resource_akamai_appsec_match_target.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -102,28 +103,50 @@ func resourceMatchTargetUpdate(ctx context.Context, d *schema.ResourceData, m in updateMatchTarget.JsonPayloadRaw = rawJSON - targetID, errconv := strconv.Atoi(d.Id()) - - if errconv != nil { - return diag.FromErr(errconv) - } - updateMatchTarget.TargetID = targetID - - jsonBody, err := json.Marshal(updateMatchTarget) - if err != nil { - return diag.FromErr(err) - } - - if err := d.Set("match_target", string(jsonBody)); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateMatchTarget.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateMatchTarget.ConfigVersion = version + + targetID, errconv := strconv.Atoi(s[2]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateMatchTarget.TargetID = targetID + + } else { + targetID, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + updateMatchTarget.TargetID = targetID + + jsonBody, err := json.Marshal(updateMatchTarget) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("match_target", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } } - resp, err := client.UpdateMatchTarget(ctx, updateMatchTarget) if err != nil { logger.Errorf("calling 'updateMatchTarget': %s", err.Error()) return diag.FromErr(err) } - jsonBody, err = json.Marshal(resp) + jsonBody, err := json.Marshal(resp) if err != nil { return diag.FromErr(err) } @@ -141,26 +164,47 @@ func resourceMatchTargetDelete(ctx context.Context, d *schema.ResourceData, m in logger := meta.Log("APPSEC", "resourceMatchTargetRemove") removeMatchTarget := appsec.RemoveMatchTargetRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeMatchTarget.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeMatchTarget.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeMatchTarget.ConfigVersion = version + + targetID, errconv := strconv.Atoi(s[2]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeMatchTarget.TargetID = targetID + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeMatchTarget.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeMatchTarget.ConfigVersion = version + + targetID, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + removeMatchTarget.TargetID = targetID } - removeMatchTarget.ConfigVersion = version - - targetID, errconv := strconv.Atoi(d.Id()) - - if errconv != nil { - return diag.FromErr(errconv) - } - removeMatchTarget.TargetID = targetID - _, errd := client.RemoveMatchTarget(ctx, removeMatchTarget) if errd != nil { logger.Errorf("calling 'removeMatchTarget': %s", errd.Error()) @@ -178,26 +222,47 @@ func resourceMatchTargetRead(ctx context.Context, d *schema.ResourceData, m inte logger := meta.Log("APPSEC", "resourceMatchTargetRead") getMatchTarget := appsec.GetMatchTargetRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getMatchTarget.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getMatchTarget.ConfigVersion = version - - targetID, errconv := strconv.Atoi(d.Id()) - - if errconv != nil { - return diag.FromErr(errconv) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getMatchTarget.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getMatchTarget.ConfigVersion = version + + targetID, errconv := strconv.Atoi(s[2]) + if errconv != nil { + return diag.FromErr(errconv) + } + getMatchTarget.TargetID = targetID + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getMatchTarget.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getMatchTarget.ConfigVersion = version + + targetID, errconv := strconv.Atoi(d.Id()) + + if errconv != nil { + return diag.FromErr(errconv) + } + getMatchTarget.TargetID = targetID } - getMatchTarget.TargetID = targetID - matchtarget, err := client.GetMatchTarget(ctx, getMatchTarget) if err != nil { logger.Errorf("calling 'getMatchTarget': %s", err.Error()) @@ -216,8 +281,15 @@ func resourceMatchTargetRead(ctx context.Context, d *schema.ResourceData, m inte if err := d.Set("match_target_id", matchtarget.TargetID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("config_id", getMatchTarget.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getMatchTarget.ConfigVersion); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } - d.SetId(strconv.Itoa(matchtarget.TargetID)) + d.SetId(fmt.Sprintf("%d:%d:%d", getMatchTarget.ConfigID, getMatchTarget.ConfigVersion, matchtarget.TargetID)) return nil } diff --git a/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go b/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go index 318e978fa..78ff50e7c 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go @@ -43,7 +43,7 @@ func TestAccAkamaiMatchTarget_res_basic(t *testing.T) { client.On("UpdateMatchTarget", mock.Anything, // ctx is irrelevant for this test - appsec.UpdateMatchTargetRequest{ConfigID: 0, ConfigVersion: 0, JsonPayloadRaw: json.RawMessage{0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x22, 0x3a, 0x20, 0x34, 0x33, 0x32, 0x35, 0x33, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x20, 0x31, 0x35, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x4e, 0x4f, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x42, 0x6f, 0x74, 0x6d, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x6c, 0x6f, 0x77, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x61, 0x72, 0x62, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x63, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x64, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x77, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x63, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6a, 0x70, 0x65, 0x67, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6a, 0x73, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x6d, 0x6c, 0x73, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x64, 0x6d, 0x6c, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x77, 0x73, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63, 0x2a, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x31, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x41, 0x41, 0x41, 0x41, 0x5f, 0x38, 0x31, 0x32, 0x33, 0x30, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x3a, 0x20, 0x31, 0xa, 0x7d, 0xa}, TargetID: 3008967}, + appsec.UpdateMatchTargetRequest{ConfigID: 43253, ConfigVersion: 15, JsonPayloadRaw: json.RawMessage{0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x22, 0x3a, 0x20, 0x34, 0x33, 0x32, 0x35, 0x33, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x20, 0x31, 0x35, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x4e, 0x4f, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x42, 0x6f, 0x74, 0x6d, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x6c, 0x6f, 0x77, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x61, 0x72, 0x62, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x63, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x64, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x77, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x63, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6a, 0x70, 0x65, 0x67, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6a, 0x73, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x6d, 0x6c, 0x73, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x64, 0x6d, 0x6c, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x77, 0x73, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63, 0x2a, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x31, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x41, 0x41, 0x41, 0x41, 0x5f, 0x38, 0x31, 0x32, 0x33, 0x30, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x3a, 0x20, 0x31, 0xa, 0x7d, 0xa}, TargetID: 3008967}, ).Return(&cu, nil) client.On("RemoveMatchTarget", @@ -59,14 +59,14 @@ func TestAccAkamaiMatchTarget_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResMatchTarget/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_match_target.test", "id", "3008967"), //3008967 + resource.TestCheckResourceAttr("akamai_appsec_match_target.test", "id", "43253:15:3008967"), //3008967 ), ExpectNonEmptyPlan: true, }, { Config: loadFixtureString("testdata/TestResMatchTarget/update_by_id.tf"), Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_match_target.test", "id", "3008967"), + resource.TestCheckResourceAttr("akamai_appsec_match_target.test", "id", "43253:15:3008967"), //resource.TestCheckResourceAttr("akamai_appsec_match_target.test", "is_negative_file_extension_match", "false"), ), ExpectNonEmptyPlan: true, diff --git a/pkg/providers/appsec/resource_akamai_appsec_rate_policy.go b/pkg/providers/appsec/resource_akamai_appsec_rate_policy.go index 00d3cf448..4f586aec8 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rate_policy.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rate_policy.go @@ -264,6 +264,17 @@ func resourceRatePolicyRead(ctx context.Context, d *schema.ResourceData, m inter return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("config_id", getRatePolicy.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getRatePolicy.ConfigVersion); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("rate_policy_id", ratepolicy.ID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } d.SetId(fmt.Sprintf("%d:%d:%d", getRatePolicy.ConfigID, getRatePolicy.ConfigVersion, ratepolicy.ID)) return nil diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go index ee019be0c..576004438 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go @@ -82,7 +82,7 @@ func resourceReputationProfileCreate(ctx context.Context, d *schema.ResourceData return diag.FromErr(errc) } - d.SetId(strconv.Itoa(postresp.ID)) + d.SetId(fmt.Sprintf("%d:%d:%d", createReputationProfile.ConfigID, createReputationProfile.ConfigVersion, postresp.ID)) return resourceReputationProfileRead(ctx, d, m) } diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index ce69cf8c9..1d51fbae6 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -109,8 +109,7 @@ func RenderTemplates(ots map[string]*OutputTemplate, key string, str interface{} } func InitTemplates(otm map[string]*OutputTemplate) { - otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Cookies|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}}|{{.CustomHeaders.Type}} {{.CustomHeaders.Values}}|{{.StandardHeaders.Type}} {{.StandardHeaders.Values}}"} - otm["advancedSettingsPolicyLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsPolicyLoggingDS", TableTitle: "Allow Sampling|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.CustomHeaders}}|{{.StandardHeaders}}"} + otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Cookies|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}} {{.Cookies.Values}}|{{.CustomHeaders.Type}} {{.CustomHeaders.Values}}|{{.StandardHeaders.Type}} {{.StandardHeaders.Values}}"} otm["advancedSettingsPrefetchDS"] = &OutputTemplate{TemplateName: "advancedSettingsPrefetchDS", TableTitle: "Enable App Layer|All Extension|Enable Rate Controls|Extensions", TemplateType: "TABULAR", TemplateString: "{{.EnableAppLayer}}|{{.AllExtensions}}|{{.EnableRateControls}}|{{range $index, $element := .Extensions}}{{.}} {{end}}"} //Extensions From e173c9d6cea6f1ffca20b9db7407324b75798472 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 22 Jan 2021 13:45:17 -0600 Subject: [PATCH 059/215] Correct hostname coverage API output --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 1d51fbae6..c9e86ed89 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -111,7 +111,7 @@ func RenderTemplates(ots map[string]*OutputTemplate, key string, str interface{} func InitTemplates(otm map[string]*OutputTemplate) { otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Cookies|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}} {{.Cookies.Values}}|{{.CustomHeaders.Type}} {{.CustomHeaders.Values}}|{{.StandardHeaders.Type}} {{.StandardHeaders.Values}}"} otm["advancedSettingsPrefetchDS"] = &OutputTemplate{TemplateName: "advancedSettingsPrefetchDS", TableTitle: "Enable App Layer|All Extension|Enable Rate Controls|Extensions", TemplateType: "TABULAR", TemplateString: "{{.EnableAppLayer}}|{{.AllExtensions}}|{{.EnableRateControls}}|{{range $index, $element := .Extensions}}{{.}} {{end}}"} - + otm["apiHostnameCoverageMatchTargetsDS"] = &OutputTemplate{TemplateName: "apiHostnameCoverageMatchTargetsDS", TableTitle: "Hostnames|Target ID|Type", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .MatchTargets.WebsiteTargets}}{{if $index}},{{end}}{{.Hostnames}}|{{.TargetID}}|{{.Type}}{{end}}"} //Extensions otm["apiEndpointsDS"] = &OutputTemplate{TemplateName: "apiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} otm["policyApiEndpointsDS"] = &OutputTemplate{TemplateName: "policyApiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} From fa556c69f48c4fc06d99f1aa89cb227f03175f7f Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 22 Jan 2021 14:42:05 -0600 Subject: [PATCH 060/215] Add support for hostname to hostname_coverage --- .../data_akamai_appsec_api_hostname_coverage.go | 11 +++++++++++ .../data_akamai_appsec_api_hostname_coverage_test.go | 2 +- .../testdata/TestDSApiHostnameCoverage/match_by_id.tf | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go index 04427376e..6d40b5e82 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go @@ -3,6 +3,7 @@ package appsec import ( "context" "encoding/json" + "errors" "fmt" "strconv" @@ -18,6 +19,10 @@ func dataSourceApiHostnameCoverage() *schema.Resource { return &schema.Resource{ ReadContext: dataSourceApiHostnameCoverageRead, Schema: map[string]*schema.Schema{ + "hostname": { + Type: schema.TypeString, + Required: true, + }, "json": { Type: schema.TypeString, Computed: true, @@ -38,6 +43,12 @@ func dataSourceApiHostnameCoverageRead(ctx context.Context, d *schema.ResourceDa getApiHostnameCoverage := appsec.GetApiHostnameCoverageRequest{} + hostname, err := tools.GetStringValue("hostname", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiHostnameCoverage.Hostname = hostname + apihostnamecoverage, err := client.GetApiHostnameCoverage(ctx, getApiHostnameCoverage) if err != nil { logger.Errorf("calling 'getApiHostnameCoverage': %s", err.Error()) diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go index c7e36c9c6..780f56023 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go @@ -19,7 +19,7 @@ func TestAccAkamaiApiHostnameCoverage_data_basic(t *testing.T) { client.On("GetApiHostnameCoverage", mock.Anything, // ctx is irrelevant for this test - appsec.GetApiHostnameCoverageRequest{}, + appsec.GetApiHostnameCoverageRequest{ConfigID: 0, Version: 0, Hostname: "example.com"}, ).Return(&cv, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf index c7065b8f1..1e50f628e 100644 --- a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf @@ -3,5 +3,6 @@ provider "akamai" { } data "akamai_appsec_hostname_coverage" "test" { + hostname = "example.com" } From b0f506753738f8c6f18d19f85a37f15a88ed597a Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Sun, 24 Jan 2021 20:26:48 -0600 Subject: [PATCH 061/215] Add support for selective custom rules --- .../appsec/data_akamai_appsec_custom_rules.go | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pkg/providers/appsec/data_akamai_appsec_custom_rules.go b/pkg/providers/appsec/data_akamai_appsec_custom_rules.go index 8c6cb2504..1d3bc6adb 100644 --- a/pkg/providers/appsec/data_akamai_appsec_custom_rules.go +++ b/pkg/providers/appsec/data_akamai_appsec_custom_rules.go @@ -2,6 +2,7 @@ package appsec import ( "context" + "encoding/json" "errors" "fmt" "strconv" @@ -21,6 +22,14 @@ func dataSourceCustomRules() *schema.Resource { Type: schema.TypeInt, Required: true, }, + "custom_rule_id": { + Type: schema.TypeInt, + Optional: true, + }, + "json": { + Type: schema.TypeString, + Computed: true, + }, "output_text": { Type: schema.TypeString, Computed: true, @@ -43,6 +52,12 @@ func dataSourceCustomRulesRead(ctx context.Context, d *schema.ResourceData, m in } getCustomRules.ConfigID = configid + customzruleid, err := tools.GetIntValue("custom_rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getCustomRules.ID = customzruleid + customrules, err := client.GetCustomRules(ctx, getCustomRules) if err != nil { logger.Errorf("calling 'getCustomRules': %s", err.Error()) @@ -59,6 +74,15 @@ func dataSourceCustomRulesRead(ctx context.Context, d *schema.ResourceData, m in } } + jsonBody, err := json.Marshal(customrules) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("json", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(strconv.Itoa(getCustomRules.ConfigID)) return nil From be476a85f217a87e751ce0defd7735e3d4021fb4 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Mon, 25 Jan 2021 15:54:13 -0500 Subject: [PATCH 062/215] Make security_policy_name a required parameter --- docs/resources/appsec_security_policy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/appsec_security_policy.md b/docs/resources/appsec_security_policy.md index 24da2b31d..e76e626bf 100644 --- a/docs/resources/appsec_security_policy.md +++ b/docs/resources/appsec_security_policy.md @@ -45,7 +45,7 @@ The following arguments are supported: * `version` - (Required) The version number of the configuration to use. -* `security_policy_name` - (Optional) The name of the new security policy. If not supplied, the name will be autogenerated. +* `security_policy_name` - (Required) The name of the new security policy. * `security_policy_prefix' - (Optional) The four-character alphanumeric string prefix for the policyId. If not provided, the prefix is autogenerated. From f5c88cdc27de14e025a6f329e0db37eaeddbaa28 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Mon, 25 Jan 2021 16:37:48 -0500 Subject: [PATCH 063/215] Add json and custom_rule_id to custom_rules markdown --- docs/data-sources/appsec_custom_rules.md | 31 ++++++++++++++++++------ 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/docs/data-sources/appsec_custom_rules.md b/docs/data-sources/appsec_custom_rules.md index e7f023874..09e7ed906 100644 --- a/docs/data-sources/appsec_custom_rules.md +++ b/docs/data-sources/appsec_custom_rules.md @@ -16,31 +16,48 @@ Basic usage: ```hcl provider "akamai" { - appsec_section = "default" + edgerc = "~/.edgerc" } +// USE CASE: user wants to see the custom rules associated with a given security configuration data "akamai_appsec_configuration" "configuration" { - name = "Akamai Tools" + name = var.security_configuration } - data "akamai_appsec_custom_rules" "custom_rules" { config_id = data.akamai_appsec_configuration.configuration.config_id } - -output "custom_rules_list" { +output "custom_rules_output_text" { value = data.akamai_appsec_custom_rules.custom_rules.output_text } +output "custom_rules_json" { + value = data.akamai_appsec_custom_rules.custom_rules.json +} +output "custom_rules_config_id" { + value = data.akamai_appsec_custom_rules.custom_rules.config_id +} +// USE CASE: user wants to see a specific custom rule +data "akamai_appsec_custom_rules" "specific_custom_rule" { + config_id = data.akamai_appsec_configuration.configuration.config_id + custom_rule_id = var.custom_rule_id +} +output "specific_custom_rule_json" { + value = data.akamai_appsec_custom_rules.specific_custom_rule.json +} ``` ## Argument Reference -The following argument is supported: +The following arguments are supported: * `config_id` - (Required) The ID of the security configuration to use. +* `custom_rule_id` - (Optional) The ID of a specific custom rule to use. If not supplied, information about all custom rules associated with the given security configuration will be returned. + ## Attributes Reference In addition to the argument above, the following attribute is exported: -* `output_text` - A tabular display showing the ID and name of the custom rules defined for the security configuration. +* `output_text` - A tabular display showing the ID and name of the custom rule(s). + +* `json` - A JSON-formatted display of the custom rule information. From cc1b70b9f4733fbe2fa89989de06c2967adb76b8 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Mon, 25 Jan 2021 17:43:46 -0500 Subject: [PATCH 064/215] Change security_policy_prefix from Optional to Required --- docs/resources/appsec_security_policy.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/resources/appsec_security_policy.md b/docs/resources/appsec_security_policy.md index e76e626bf..48a463834 100644 --- a/docs/resources/appsec_security_policy.md +++ b/docs/resources/appsec_security_policy.md @@ -47,9 +47,9 @@ The following arguments are supported: * `security_policy_name` - (Required) The name of the new security policy. -* `security_policy_prefix' - (Optional) The four-character alphanumeric string prefix for the policyId. If not provided, the prefix is autogenerated. +* `security_policy_prefix' - (Required) The four-character alphanumeric string prefix for the policy ID. -* `default_settings` - (Optional) Whether the new policy should use the default settings. +* `default_settings` - (Optional) Whether the new policy should use the default settings. If not supplied, defaults to true. ## Attributes Reference From c5002fee6601ea292fe497a14bac0a878fdb543b Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Mon, 25 Jan 2021 19:57:03 -0600 Subject: [PATCH 065/215] Add support for selectable hosts by contract and group id --- ...data_akamai_appsec_selectable_hostnames.go | 46 ++++++++++++++++--- 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_selectable_hostnames.go b/pkg/providers/appsec/data_akamai_appsec_selectable_hostnames.go index 12dc4824b..e187269ce 100644 --- a/pkg/providers/appsec/data_akamai_appsec_selectable_hostnames.go +++ b/pkg/providers/appsec/data_akamai_appsec_selectable_hostnames.go @@ -3,6 +3,7 @@ package appsec import ( "context" "encoding/json" + "errors" "fmt" "strconv" @@ -18,12 +19,24 @@ func dataSourceSelectableHostnames() *schema.Resource { ReadContext: dataSourceSelectableHostnamesRead, Schema: map[string]*schema.Schema{ "config_id": { - Type: schema.TypeInt, - Required: true, + Type: schema.TypeInt, + Optional: true, + ConflictsWith: []string{"contractid", "groupid"}, }, "version": { - Type: schema.TypeInt, - Required: true, + Type: schema.TypeInt, + Optional: true, + ConflictsWith: []string{"contractid", "groupid"}, + }, + "contractid": { + Type: schema.TypeString, + Optional: true, + ConflictsWith: []string{"config_id", "version"}, + }, + "groupid": { + Type: schema.TypeInt, + Optional: true, + ConflictsWith: []string{"config_id", "version"}, }, "active_in_staging": { Type: schema.TypeBool, @@ -60,8 +73,29 @@ func dataSourceSelectableHostnamesRead(ctx context.Context, d *schema.ResourceDa getSelectableHostnames := appsec.GetSelectableHostnamesRequest{} - getSelectableHostnames.ConfigID = d.Get("config_id").(int) - getSelectableHostnames.Version = d.Get("version").(int) + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSelectableHostnames.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSelectableHostnames.Version = version + + contract, err := tools.GetStringValue("contractid", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSelectableHostnames.ContractID = contract + + group, err := tools.GetIntValue("groupid", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSelectableHostnames.GroupID = group selectablehostnames, err := client.GetSelectableHostnames(ctx, getSelectableHostnames) if err != nil { From 12c250df479f3ce393ed7db959dc0448162dc4ec Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Tue, 26 Jan 2021 09:26:11 -0500 Subject: [PATCH 066/215] Mark some security policy fields Required --- .../appsec/resource_akamai_appsec_security_policy.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_security_policy.go b/pkg/providers/appsec/resource_akamai_appsec_security_policy.go index fd45079d0..096f97719 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_security_policy.go +++ b/pkg/providers/appsec/resource_akamai_appsec_security_policy.go @@ -37,17 +37,17 @@ func resourceSecurityPolicy() *schema.Resource { }, "security_policy_name": { Type: schema.TypeString, - Optional: true, + Required: true, + }, + "security_policy_prefix": { + Type: schema.TypeString, + Required: true, }, "default_settings": { Type: schema.TypeBool, Optional: true, Default: true, }, - "security_policy_prefix": { - Type: schema.TypeString, - Optional: true, - }, "security_policy_id": &schema.Schema{ Type: schema.TypeString, Computed: true, From ee33777a508a2d431c7f52642062429aee409cd7 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Tue, 26 Jan 2021 11:33:30 -0500 Subject: [PATCH 067/215] Remove individual .md files for protections data sources --- docs/data-sources/appsec_waf_protections.md | 86 --------------------- docs/data-sources/waf_protection.md | 57 -------------- 2 files changed, 143 deletions(-) delete mode 100644 docs/data-sources/appsec_waf_protections.md delete mode 100644 docs/data-sources/waf_protection.md diff --git a/docs/data-sources/appsec_waf_protections.md b/docs/data-sources/appsec_waf_protections.md deleted file mode 100644 index 31256bd18..000000000 --- a/docs/data-sources/appsec_waf_protections.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: "akamai" -page_title: "Akamai: Policy Protections" -subcategory: "Application Security" -description: |- - Policy Protections ---- - -# akamai_appsec_waf_protections - -Use the `akamai_appsec_waf_protections` data source to retrieve the protections in place for a given security configuration version and security policy. - -## Example Usage - -Basic usage: - -```hcl -provider "akamai" { - appsec_section = "default" -} - -// USE CASE: user wants to view all security policy protections -data "akamai_appsec_configuration" "configuration" { - name = var.security_configuration -} -data "akamai_appsec_security_policy_protections" "protections" { - config_id = data.akamai_appsec_configuration.configuration.config_id - version = data.akamai_appsec_configuration.configuration.latest_version - security_policy_id = var.security_policy_id -} -output "protections_json" { - value = data.akamai_appsec_security_policy_protections.protections.json -} -output "protections_applyApiConstraints" { - value = data.akamai_appsec_security_policy_protections.protections.apply_api_constraints -} -output "protections_applyApplicationLayerControls" { - value = data.akamai_appsec_security_policy_protections.protections.apply_application_layer_controls -} -output "protections_applyBotmanControls" { - value = data.akamai_appsec_security_policy_protections.protections.apply_botman_controls -} -output "protections_applyNetworkLayerControls" { - value = data.akamai_appsec_security_policy_protections.protections.apply_network_layer_controls -} -output "protections_applyRateControls" { - value = data.akamai_appsec_security_policy_protections.protections.apply_rate_controls -} -output "protections_applyReputationControls" { - value = data.akamai_appsec_security_policy_protections.protections.apply_reputation_controls -} -output "protections_applySlowPostControls" { - value = data.akamai_appsec_security_policy_protections.protections.apply_slow_post_controls -} -``` - -## Argument Reference - -The following arguments are supported: - -* `config_id` - (Required) The ID of the security configuration to use. - -* `version` - (Required) The version number of the security configuration to use. - -* `security_policy_id` - (Required) The ID of the security policy to use. - -## Attributes Reference - -In addition to the arguments above, the following attributes are exported: - -* `json` - a JSON-formatted list of the protections - -* `apply_api_constraints` - true if api constraints are applied, otherwise false - -* `apply_application_layer_controls` - true if application layer controls are applied, otherwise false - -* `apply_botman_controls` - true if botman controls are applied, otherwise false - -* `apply_network_layer_controls` - true if network layer controls are applied, otherwise false - -* `apply_rate_controls` - true if rate controls are applied, otherwise false - -* `apply_reputation_controls` - true if reputation controls are applied, otherwise false - -* `apply_slow_post_controls` - true if slow post controls are applied, otherwise false - diff --git a/docs/data-sources/waf_protection.md b/docs/data-sources/waf_protection.md deleted file mode 100644 index 8b32ce3ec..000000000 --- a/docs/data-sources/waf_protection.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: "akamai" -page_title: "Akamai: WAF Protection" -subcategory: "Application Security" -description: |- - WAF Protection ---- - -# akamai_appsec_waf_protection - -Use the `akamai_appsec_waf_protection` data source to retrieve the current protection settings for a given security configuration version and policy - - -## Example Usage - -Basic usage: - -```hcl -provider "akamai" { - appsec_section = "default" -} -data "akamai_appsec_configuration" "configuration" { - name = var.security_configuration -} -data "akamai_appsec_waf_protection" "waf_protection" { - config_id = data.akamai_appsec_configuration.configuration.config_id - version = data.akamai_appsec_configuration.configuration.latest_version - policy_id = var.policy_id -} -output "output_text" { - value = data.akamai_appsec_waf_protection.waf_protection.output_text -} -``` - -## Argument Reference - -The following arguments are supported: - -* `config_id` - (Required) The ID of the security configuration to use. - -* `version` - (Required) The version number of the security configuration to use. - -* `policy_id` - (Required) The ID of the security policy to use - -## Attributes Reference - -In addition to the arguments above, the following attributes are exported: - -* `output_text` - A tabular display showing the enabled status (true or false) of the following protection features: - * applyApiConstraints - * applyApplicationLayerControls - * applyBotmanControls - * applyNetworkLayerControls - * applyRateControls - * applyReputationControls - * applySlowPostControls - From a639b5a860d46da75bc7faf41135c73ccd379f0c Mon Sep 17 00:00:00 2001 From: Elisa Sawyer Date: Tue, 26 Jan 2021 09:15:48 -0800 Subject: [PATCH 068/215] doc edits to appsec getting started guide --- docs/guides/get_started_appsec.md | 129 +++++++++++++++++++----------- 1 file changed, 82 insertions(+), 47 deletions(-) diff --git a/docs/guides/get_started_appsec.md b/docs/guides/get_started_appsec.md index 9836583ef..2bf3e6e6d 100644 --- a/docs/guides/get_started_appsec.md +++ b/docs/guides/get_started_appsec.md @@ -2,41 +2,41 @@ layout: "akamai" page_title: "Akamai: Get Started with Application Security" description: |- - Get Started with Akamai Application Security using Terraform + Application Security in Akamai provider for Terraform --- -# Get Started with Application Security +# Application Security in Akamai provider for Terraform -The Akamai Provider for Terraform provides you the ability to automate the creation, deployment, and management of security configurations, custom rules, match targets and other application security resources. +Application Security (appsec) in the Akamai Terraform provider (provider) enables application +security configurations including the following: +* custom rules. +* match targets. +* other application security resources that operate within the Cloud. -To get more information about Application Security, see the [API documentation](https://developer.akamai.com/api/cloud_security/application_security/v1.html) - -## Configure the Terraform Provider - -Set up your .edgerc credential files as described in [Get Started with Akamai APIs](https://developer.akamai.com/api/getting-started), and include read-write permissions for the Application Security API. - -1. Create a new folder called `terraform` -1. Inside the new folder, create a new file called `akamai.tf`. -1. Add the provider configuration to your `akamai.tf` file: - -```hcl -provider "akamai" { - edgerc = "~/.edgerc" - config_section = "appsec" -} -``` +This Guide is for developers who: +* are interested in implementing or updating an integration of Akamai functionality with Terraform. +* already have some familiarity with Akamai. +* understand how to create and edit the 'akamai.tf' file [see](get_started_akamai.md). + +For details about Akamai's application security, see the [API documentation](https://developer.akamai.com/api/cloud_security/application_security/v1.html) ## Prerequisites -To manage Application Security resources, you need to obtain at a minimum the following information: +To manage Application Security resources, you need to obtain information regarding your +existing security implementation, including the following information: * **Configuration ID**: The ID of the specific security configuration under which the resources are defined. -For certain resources, you will also need other information, such as the version number of the security configuration. The process of obtaining this information is described below. +In many cases, you need additional information, which often includes the +version number of the security configuration (see below). -## Retrieving Security Configuration Information +### Retrieve existing security configuration information -You can obtain the name and ID of the existing security configurations using the [`akamai_appsec_configuration`](../data-sources/appsec_configuration.md) data source. This data source can be used with no additional parameters to output information about all security configurations associated with your account. Add the following to your `akamai.tf` file: +You can obtain the name and ID of the existing security configurations by using the +[`akamai_appsec_configuration`](../data-sources/appsec_configuration.md) data source. +Using it without parameters outputs information about all security configurations associated with your account. + +Add the following to your `akamai.tf` file: ```hcl data "akamai_appsec_configuration" "configurations" { @@ -47,13 +47,30 @@ output "configuration_list" { } ``` -Once you have saved the file, switch to the terminal and initialize Terraform using the command: +Save the resulting text file, and then use terminal to initialize Terraform with the command: ```bash $ terraform init ``` -This command will install the latest version of the Akamai provider, as well as any other providers necessary. To update the Akamai provider version after a new release, simply run `terraform init` again. +This installs the latest version of the Akamai provider, along with any other providers necessary. + +When you need to obtain an update of Akamai provider, run `terraform init` again. + +## Configure the Provider + +Set up your .edgerc credential files as described in [Get Started with Akamai APIs](https://developer.akamai.com/api/getting-started), and include read-write permissions for the Application Security API. + +1. Create a new folder called `terraform` +1. Inside the new folder, create a new file called `akamai.tf`. +1. Add the provider configuration to your `akamai.tf` file: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" + config_section = "appsec" +} +``` ## Test Your Configuration @@ -63,19 +80,26 @@ To test your configuration, use `terraform plan`: $ terraform plan ``` -This command will make Terraform create a plan for the work it will do based on the configuration file. This will not actually make any changes and is safe to run as many times as you like. +This command causes Terraform to create a plan for the work it will do, based on the configuration file. This does *not* actually make any changes and is safe to run as many times as you like. -## Apply Changes +## Apply changes -To actually display the configuration information, or to create or modify resources as described further in this guide, we need to instruct Terraform to `apply` the changes outlined in the plan. To do this, in the terminal, run the command: +To display existing configuration information, or to create or modify resources as described in this guide, tell Terraform to `apply` the changes outlined in the plan by running the command: ```bash $ terraform apply ``` -Once this command has been executed, Terraform will display to the terminal window a formatted list of all existing security configurations under your account, including for each its name and ID (`config_id`), the number of its most recently created version, and the number of the version currently active in staging and production, if applicable. +Terraform responds with a formatted list of all existing security configurations in your account, along with names and IDs (`config_id`), the most recently created version, and the version currently active in staging and production, if applicable. + +When you have identified the desired security configuration by name, you can load that specific configuration into Terraform's state. + +To load a specific configuration: +1. Identify the desired security configuration by name, +1. Edit your `akamai.tf` file to add the desired `name` parameter to the `akamai_appsec_configuration` data block. +1. Change the `output` block so that it gives just the `config_id` attribute of the configuration. -When you have identified the desired security configuration by name, you can load that specific configuration into Terraform's state. To do this, edit your `akamai.tf` file to add the `name` parameter to the `akamai_appsec_configuration` data block using the desired configuration name as its value, and change the `output` block so that it gives just the `config_id` attribute of the configuration. After these changes, the portion of your file below the initial `provider` block will look like this: +After these changes, the section of your file below the initial `provider` block looks like the following example: ```hcl data "akamai_appsec_configuration" "configuration" { @@ -87,20 +111,22 @@ output "ID" { } ``` -If you run `terraform apply` on this file, you should see the `config_id` value of the specific configuration displayed on your terminal. +After running `terraform apply` on this file, the terminal displays `config_id` with the configuration value. -## Displaying Information About a Specific Configuration +## Specify configuration to display -The provider's [`akamai_appsec_export_configuration`](../data-sources/appsec_export_configuration.md) data source can diplay complete information about a specific configuration, including attributes such as custom rules, selected hostnames, etc. To show these two types of data for the most recent version of your selected configuration, add the following blocks to your `akamai.tf` file: +The provider's [`akamai_appsec_export_configuration`](../data-sources/appsec_export_configuration.md) data source can display complete information about any configuration that you specify, including attributes like custom rules, and selected hostnames. + +To show custom rule and selected hostname data for the your most recent configuration, add the following blocks to your `akamai.tf` file: ```hcl data "akamai_appsec_export_configuration" "export" { config_id = data.akamai_appsec_configuration.configuration.config_id version = data.akamai_appsec_configuration.configuration.latest_version search = [ - "customRules", - "selectedHosts" - ] + "customRules", + "selectedHosts" + ] } output "exported_configuration_text" { @@ -108,7 +134,10 @@ output "exported_configuration_text" { } ``` -Note that you can specify a version of the configuration other than the most recent version. See the [`akamai_configuration_version`](../data-sources/appsec_configuration_version.md) data source to list the available versions. Also, you can specify other kinds of data to be exported besides `customRules` and `selectedHosts`, using any of these search fields: +NOTE: You can specify any available version of the configuration. +See the [`akamai_configuration_version`](../data-sources/appsec_configuration_version.md) +data source to list the available versions. You can also specify other kinds of data for export +using any of the following search fields: * customRules * matchTargets @@ -121,9 +150,12 @@ Note that you can specify a version of the configuration other than the most rec Save the file and run `terraform apply` to see a formatted display of the selected data. -## Adding a Hostname to the `selectedHosts` List +## Add a hostname to the `selectedHosts` list -You can modify the list of hosts protected by a given security configuration using the [`akamai_appsec_selected_hostnames`](../data-sources/appsec_selected_hostnames.md) resource. Add the following resource block to your `akamai.tf` file, replacing `example.com` with a hostname from the list reported in the `data_akamai_appsec_export_configuration` data source example above: +You can modify the list of hosts protected by a specific security configuration using +the [`akamai_appsec_selected_hostnames`](../data-sources/appsec_selected_hostnames.md) resource. +Add the following resource block to your `akamai.tf` file, replacing `example.com` with a hostname +from the list reported in the `data_akamai_appsec_export_configuration` data source example above: ```hcl resource "akamai_appsec_selected_hostnames" "selected_hostnames_append" { @@ -138,13 +170,17 @@ output "selected_hostnames_appended" { } ``` -Once you save the file and run `terraform apply`, Terraform will update the list of selected hosts and output the new list as the value `selected_hostnames_appended`. +When you save the file and run `terraform apply`, Terraform updates the list of selected hosts and outputs the new list as values for `selected_hostnames_appended`. + +NOTE: You cannot modify a security configuration version that is currently active in staging or production, so the resource block above must specify an inactive version. -Note that you cannot modify a security configuration version that is currently active in staging or production, so the resource block above must specify an inactive version. Once you have completed any changes you want to make to a security configuration version, you can activate it in staging. +After completing your changes to a security configuration version, you can activate it in staging. -## Activating a Security Configuration Version +## Activate a configuration version -You can activate a specific version of a security configuration using the [`akamai_appsec_activations`](../resources/appsec_activations.md) resource. Add the following resource block to your `akamai.tf` file, replacing the `version` value with the number of a currently inactive version, such as the one you modified using the `akamai_appsec_selected_hostnames` resource above. +To activate a specific configuration version, use the [`akamai_appsec_activations`](../resources/appsec_activations.md) resource. + +Add the following resource block to your `akamai.tf` file, replacing the `version` value with the number of a currently inactive version, perhaps the one you modified using the `akamai_appsec_selected_hostnames` resource above. ```hcl resource "akamai_appsec_activations" "activation" { @@ -156,12 +192,12 @@ resource "akamai_appsec_activations" "activation" { } ``` -Once you save the file and run `terraform apply`, Terraform will activate the security configuration version in staging. When the activation is complete, an email will be sent to any addresses specified in the `notification_emails` list. +After you save the file and run `terraform apply`, Terraform activates the configuration version in staging. Upon completion of the activation, emails are sent to the addresses specified in the `notification_emails` list. -## Beta Features +## Beta features -Note that the following data sources and resources are currently in Beta, and their behavior or documentation may change in a future release: +NOTE: The following data sources and resources are currently in Beta, and their behavior or documentation might change in a future release: ### Data Sources * akamai_appsec_eval @@ -208,4 +244,3 @@ Note that the following data sources and resources are currently in Beta, and th * akamai_appsec_waf_mode * akamai_appsec_waf_protection * akamai_appsec_attack_group_condition_exception - From 6fae4ae1110e1ec907155fb76c47e3b88de5bc07 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Tue, 26 Jan 2021 13:10:10 -0600 Subject: [PATCH 069/215] Remove hostname arguement from datasource --- .../data_akamai_appsec_api_hostname_coverage.go | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go index 6d40b5e82..8ed7bf1d9 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go @@ -18,11 +18,6 @@ import ( func dataSourceApiHostnameCoverage() *schema.Resource { return &schema.Resource{ ReadContext: dataSourceApiHostnameCoverageRead, - Schema: map[string]*schema.Schema{ - "hostname": { - Type: schema.TypeString, - Required: true, - }, "json": { Type: schema.TypeString, Computed: true, @@ -43,12 +38,6 @@ func dataSourceApiHostnameCoverageRead(ctx context.Context, d *schema.ResourceDa getApiHostnameCoverage := appsec.GetApiHostnameCoverageRequest{} - hostname, err := tools.GetStringValue("hostname", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getApiHostnameCoverage.Hostname = hostname - apihostnamecoverage, err := client.GetApiHostnameCoverage(ctx, getApiHostnameCoverage) if err != nil { logger.Errorf("calling 'getApiHostnameCoverage': %s", err.Error()) From 75ff600ed7a943ba14dd15fcc9327459bf8cf0d4 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Tue, 26 Jan 2021 13:22:30 -0600 Subject: [PATCH 070/215] Fix typo --- .../appsec/data_akamai_appsec_api_hostname_coverage.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go index 8ed7bf1d9..04427376e 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go @@ -3,7 +3,6 @@ package appsec import ( "context" "encoding/json" - "errors" "fmt" "strconv" @@ -18,6 +17,7 @@ import ( func dataSourceApiHostnameCoverage() *schema.Resource { return &schema.Resource{ ReadContext: dataSourceApiHostnameCoverageRead, + Schema: map[string]*schema.Schema{ "json": { Type: schema.TypeString, Computed: true, From 228c51cd9e9f48f52039612b2e8cf41cee3843ec Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Wed, 27 Jan 2021 12:27:11 -0500 Subject: [PATCH 071/215] If removing all constraints, just set this protection to false --- ...e_akamai_appsec_api_request_constraints.go | 55 +++++++++++++------ 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go index 2a455b864..e6a820036 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go @@ -117,6 +117,7 @@ func resourceApiRequestConstraintsDelete(ctx context.Context, d *schema.Resource client := inst.Client(meta) logger := meta.Log("APPSEC", "resourceApiRequestConstraintsRemove") + getPolicyProtections := appsec.GetPolicyProtectionsRequest{} removeApiRequestConstraints := appsec.RemoveApiRequestConstraintsRequest{} removePolicyProtections := appsec.RemovePolicyProtectionsRequest{} @@ -124,43 +125,63 @@ func resourceApiRequestConstraintsDelete(ctx context.Context, d *schema.Resource if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } - removeApiRequestConstraints.ConfigID = configid - removePolicyProtections.ConfigID = configid version, err := tools.GetIntValue("version", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } - removeApiRequestConstraints.Version = version - removePolicyProtections.Version = version policyid, err := tools.GetStringValue("security_policy_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } + + getPolicyProtections.ConfigID = configid + removeApiRequestConstraints.ConfigID = configid + removePolicyProtections.ConfigID = configid + + getPolicyProtections.Version = version + removeApiRequestConstraints.Version = version + removePolicyProtections.Version = version + + getPolicyProtections.PolicyID = policyid removeApiRequestConstraints.PolicyID = policyid removePolicyProtections.PolicyID = policyid + policyprotections, err := client.GetPolicyProtections(ctx, getPolicyProtections) + if err != nil { + logger.Errorf("calling 'getPolicyProtections': %s", err.Error()) + return diag.FromErr(err) + } + apiEndpointID, err := tools.GetIntValue("api_endpoint_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } removeApiRequestConstraints.ApiID = apiEndpointID - if removeApiRequestConstraints.ApiID != 0 { - removeApiRequestConstraints.Action = "none" - } - _, erru := client.RemoveApiRequestConstraints(ctx, removeApiRequestConstraints) - if erru != nil { - logger.Errorf("calling 'removeApiRequestConstraints': %s", erru.Error()) - return diag.FromErr(erru) - } if removeApiRequestConstraints.ApiID == 0 { - removePolicyProtections.ApplyAPIConstraints = false - _, errd := client.RemovePolicyProtections(ctx, removePolicyProtections) - if errd != nil { - logger.Errorf("calling 'removePolicyProtections': %s", errd.Error()) - return diag.FromErr(errd) + if policyprotections.ApplyAPIConstraints == true { + removePolicyProtections.ApplyAPIConstraints = false + removePolicyProtections.ApplyApplicationLayerControls = policyprotections.ApplyApplicationLayerControls + removePolicyProtections.ApplyBotmanControls = policyprotections.ApplyBotmanControls + removePolicyProtections.ApplyNetworkLayerControls = policyprotections.ApplyNetworkLayerControls + removePolicyProtections.ApplyRateControls = policyprotections.ApplyRateControls + removePolicyProtections.ApplyReputationControls = policyprotections.ApplyReputationControls + removePolicyProtections.ApplySlowPostControls = policyprotections.ApplySlowPostControls + + _, errd := client.RemovePolicyProtections(ctx, removePolicyProtections) + if errd != nil { + logger.Errorf("calling 'removePolicyProtections': %s", errd.Error()) + return diag.FromErr(errd) + } + } + } else { + removeApiRequestConstraints.Action = "none" + _, erru := client.RemoveApiRequestConstraints(ctx, removeApiRequestConstraints) + if erru != nil { + logger.Errorf("calling 'removeApiRequestConstraints': %s", erru.Error()) + return diag.FromErr(erru) } } From 7a1d18795dea38c4dc2daacf5ba32f195fbac4ce Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 27 Jan 2021 11:50:42 -0600 Subject: [PATCH 072/215] Add security policy rename and configuration rename --- .../data_akamai_appsec_contracts_groups.go | 5 +- pkg/providers/appsec/provider.go | 2 + ...urce_akamai_appsec_configuration_rename.go | 153 +++++++++++++++ ...akamai_appsec_configuration_rename_test.go | 67 +++++++ ...ce_akamai_appsec_security_policy_rename.go | 178 ++++++++++++++++++ ...amai_appsec_security_policy_rename_test.go | 60 ++++++ pkg/providers/appsec/templates.go | 2 + .../Configuration.json | 54 ++++++ .../ConfigurationCreate.json | 6 + .../ConfigurationUpdate.json | 5 + .../TestResConfigurationRename/match_by_id.tf | 10 + .../update_by_id.tf | 10 + .../SecurityPolicies.json | 20 ++ .../SecurityPolicy.json | 15 ++ .../SecurityPolicyCreate.json | 16 ++ .../SecurityPolicyUpdate.json | 16 ++ .../match_by_id.tf | 12 ++ .../update_by_id.tf | 11 ++ 18 files changed, 639 insertions(+), 3 deletions(-) create mode 100644 pkg/providers/appsec/resource_akamai_appsec_configuration_rename.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_configuration_rename_test.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_security_policy_rename.go create mode 100644 pkg/providers/appsec/resource_akamai_appsec_security_policy_rename_test.go create mode 100644 pkg/providers/appsec/testdata/TestResConfigurationRename/Configuration.json create mode 100644 pkg/providers/appsec/testdata/TestResConfigurationRename/ConfigurationCreate.json create mode 100644 pkg/providers/appsec/testdata/TestResConfigurationRename/ConfigurationUpdate.json create mode 100644 pkg/providers/appsec/testdata/TestResConfigurationRename/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResConfigurationRename/update_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicies.json create mode 100644 pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicy.json create mode 100644 pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicyCreate.json create mode 100644 pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicyUpdate.json create mode 100644 pkg/providers/appsec/testdata/TestResSecurityPolicyRename/match_by_id.tf create mode 100644 pkg/providers/appsec/testdata/TestResSecurityPolicyRename/update_by_id.tf diff --git a/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go index 6986d1de0..ee7ed4ca6 100644 --- a/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go +++ b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go @@ -5,7 +5,6 @@ import ( "encoding/json" "errors" "fmt" - "strconv" v2 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -41,7 +40,7 @@ func dataSourceContractsGroups() *schema.Resource { Computed: true, }, "default_groupid": { - Type: schema.TypeString, + Type: schema.TypeInt, Computed: true, }, }, @@ -96,7 +95,7 @@ func dataSourceContractsGroupsRead(ctx context.Context, d *schema.ResourceData, if err := d.Set("default_contractid", contract); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - if err := d.Set("default_groupid", strconv.Itoa(group)); err != nil { + if err := d.Set("default_groupid", group); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } } diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index 108a2c7bd..415fa3c7f 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -115,6 +115,7 @@ func Provider() *schema.Provider { "akamai_appsec_bypass_network_lists": resourceBypassNetworkLists(), "akamai_appsec_configuration": resourceConfiguration(), "akamai_appsec_configuration_clone": resourceConfigurationClone(), + "akamai_appsec_configuration_rename": resourceConfigurationRename(), "akamai_appsec_configuration_version_clone": resourceConfigurationVersionClone(), "akamai_appsec_selected_hostnames": resourceSelectedHostname(), "akamai_appsec_security_policy_clone": resourceSecurityPolicyClone(), @@ -143,6 +144,7 @@ func Provider() *schema.Provider { "akamai_appsec_reputation_profile_action": resourceReputationProfileAction(), "akamai_appsec_rule_upgrade": resourceRuleUpgrade(), "akamai_appsec_security_policy": resourceSecurityPolicy(), + "akamai_appsec_security_policy_rename": resourceSecurityPolicyRename(), "akamai_appsec_siem_settings": resourceSiemSettings(), "akamai_appsec_slow_post": resourceSlowPostProtectionSetting(), "akamai_appsec_slowpost_protection": resourceSlowPostProtection(), diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_rename.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_rename.go new file mode 100644 index 000000000..747393c83 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_rename.go @@ -0,0 +1,153 @@ +package appsec + +import ( + "context" + "errors" + "strconv" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceConfigurationRename() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceConfigurationRenameUpdate, + ReadContext: resourceConfigurationRenameRead, + UpdateContext: resourceConfigurationRenameUpdate, + DeleteContext: resourceConfigurationRenameDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Required: true, + }, + "description": { + Type: schema.TypeString, + Required: true, + }, + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + }, + } +} + +func resourceConfigurationRenameUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceConfigurationRenameUpdate") + + updateConfiguration := appsec.UpdateConfigurationRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateConfiguration.ConfigID = configid + + name, err := tools.GetStringValue("name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateConfiguration.Name = name + + description, err := tools.GetStringValue("description", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateConfiguration.Description = description + + _, erru := client.UpdateConfiguration(ctx, updateConfiguration) + if erru != nil { + logger.Errorf("calling 'updateConfiguration': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceConfigurationRenameRead(ctx, d, m) +} + +func resourceConfigurationRenameDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceConfigurationRenameRemove") + + removeConfiguration := appsec.RemoveConfigurationRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeConfiguration.ConfigID = configid + + _, errd := client.RemoveConfiguration(ctx, removeConfiguration) + if errd != nil { + logger.Errorf("calling 'removeConfiguration': %s", errd.Error()) + return diag.FromErr(errd) + } + + d.SetId("") + + return nil +} + +func resourceConfigurationRenameRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceConfigurationRenameRead") + + getConfiguration := appsec.GetConfigurationsRequest{} + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getConfiguration.ConfigID = configid + + configName, err := tools.GetStringValue("name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getConfiguration.Name = configName + + configuration, err := client.GetConfigurations(ctx, getConfiguration) + if err != nil { + logger.Errorf("calling 'getConfiguration': %s", err.Error()) + return diag.FromErr(err) + } + + var configlist string + var configidfound int + configlist = configlist + " ConfigID Name VersionList" + "\n" + + for _, configval := range configuration.Configurations { + + if configval.ID == configid { + d.Set("config_id", configval.ID) + d.Set("latest_version", configval.LatestVersion) + d.Set("staging_version", configval.StagingVersion) + d.Set("production_version", configval.ProductionVersion) + configidfound = configval.ID + } + } + + ots := OutputTemplates{} + InitTemplates(ots) + + outputtext, err := RenderTemplates(ots, "configuration", configuration) + if err == nil { + d.Set("output_text", outputtext) + } + + d.SetId(strconv.Itoa(configidfound)) + + return nil +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_rename_test.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_rename_test.go new file mode 100644 index 000000000..b18c34bc1 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_rename_test.go @@ -0,0 +1,67 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiConfigurationRename_res_basic(t *testing.T) { + t.Run("match by Configuration ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateConfigurationResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResConfigurationRename/ConfigurationUpdate.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetConfigurationsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResConfigurationRename/Configuration.json")) + json.Unmarshal([]byte(expectJS), &cr) + + crd := appsec.RemoveConfigurationResponse{} + expectJSD := compactJSON(loadFixtureBytes("testdata/TestResConfigurationRename/Configuration.json")) + json.Unmarshal([]byte(expectJSD), &crd) + + client.On("GetConfigurations", + mock.Anything, // ctx is irrelevant for this test + appsec.GetConfigurationsRequest{ConfigID: 432531, Name: "Akamai Tools New"}, + ).Return(&cr, nil) + + client.On("UpdateConfiguration", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateConfigurationRequest{ConfigID: 432531, Name: "Akamai Tools New", Description: "TF Tools"}, + ).Return(&cu, nil) + + client.On("RemoveConfiguration", + mock.Anything, // ctx is irrelevant for this test + appsec.RemoveConfigurationRequest{ConfigID: 432531}, + ).Return(&crd, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResConfigurationRename/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_configuration_rename.test", "id", "432531"), + ), + }, + { + Config: loadFixtureString("testdata/TestResConfigurationRename/update_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_configuration_rename.test", "id", "432531"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_security_policy_rename.go b/pkg/providers/appsec/resource_akamai_appsec_security_policy_rename.go new file mode 100644 index 000000000..ef2a70ef0 --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_security_policy_rename.go @@ -0,0 +1,178 @@ +package appsec + +import ( + "context" + "errors" + "fmt" + "strconv" + "strings" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" + "github.com/akamai/terraform-provider-akamai/v2/pkg/tools" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +// appsec v1 +// +// https://developer.akamai.com/api/cloud_security/application_security/v1.html +func resourceSecurityPolicyRename() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceSecurityPolicyRenameUpdate, + ReadContext: resourceSecurityPolicyRenameRead, + UpdateContext: resourceSecurityPolicyRenameUpdate, + DeleteContext: resourceSecurityPolicyRenameDelete, + + Schema: map[string]*schema.Schema{ + "config_id": { + Type: schema.TypeInt, + Required: true, + }, + "version": { + Type: schema.TypeInt, + Required: true, + }, + "security_policy_name": { + Type: schema.TypeString, + Required: true, + }, + "security_policy_id": { + Type: schema.TypeString, + Required: true, + }, + }, + } +} + +func resourceSecurityPolicyRenameUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceSecurityPolicyUpdate") + + updateSecurityPolicy := appsec.UpdateSecurityPolicyRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSecurityPolicy.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSecurityPolicy.Version = version + + policyid := s[2] + + updateSecurityPolicy.PolicyID = policyid + + policyname, err := tools.GetStringValue("security_policy_name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSecurityPolicy.PolicyName = policyname + + } else { + + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSecurityPolicy.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSecurityPolicy.Version = version + + securitypolicyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + + updateSecurityPolicy.PolicyID = securitypolicyid + + policyname, err := tools.GetStringValue("security_policy_name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSecurityPolicy.PolicyName = policyname + } + _, erru := client.UpdateSecurityPolicy(ctx, updateSecurityPolicy) + if erru != nil { + logger.Errorf("calling 'updateSecurityPolicy': %s", erru.Error()) + return diag.FromErr(erru) + } + + return resourceSecurityPolicyRenameRead(ctx, d, m) +} + +func resourceSecurityPolicyRenameDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + return schema.NoopContext(nil, d, m) +} + +func resourceSecurityPolicyRenameRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + meta := akamai.Meta(m) + client := inst.Client(meta) + logger := meta.Log("APPSEC", "resourceSecurityPolicyRead") + + getSecurityPolicy := appsec.GetSecurityPolicyRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getSecurityPolicy.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getSecurityPolicy.Version = version + + policyid := s[2] + + getSecurityPolicy.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSecurityPolicy.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSecurityPolicy.Version = version + + securitypolicyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + + getSecurityPolicy.PolicyID = securitypolicyid + + } + securitypolicy, err := client.GetSecurityPolicy(ctx, getSecurityPolicy) + if err != nil { + logger.Errorf("calling 'getSecurityPolicy': %s", err.Error()) + return diag.FromErr(err) + } + + /*if err := d.Set("security_policy_name", securitypolicy.PolicyName); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + }*/ + + d.SetId(fmt.Sprintf("%d:%d:%s", getSecurityPolicy.ConfigID, getSecurityPolicy.Version, securitypolicy.PolicyID)) + + return nil +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_security_policy_rename_test.go b/pkg/providers/appsec/resource_akamai_appsec_security_policy_rename_test.go new file mode 100644 index 000000000..15bb5c90e --- /dev/null +++ b/pkg/providers/appsec/resource_akamai_appsec_security_policy_rename_test.go @@ -0,0 +1,60 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiSecurityPolicyRename_res_basic(t *testing.T) { + t.Run("match by SecurityPolicy ID", func(t *testing.T) { + client := &mockappsec{} + + cu := appsec.UpdateSecurityPolicyResponse{} + expectJSU := compactJSON(loadFixtureBytes("testdata/TestResSecurityPolicyRename/SecurityPolicyUpdate.json")) + json.Unmarshal([]byte(expectJSU), &cu) + + cr := appsec.GetSecurityPolicyResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestResSecurityPolicyRename/SecurityPolicy.json")) + json.Unmarshal([]byte(expectJS), &cr) + + client.On("GetSecurityPolicy", + mock.Anything, // ctx is irrelevant for this test + appsec.GetSecurityPolicyRequest{ConfigID: 43253, Version: 7, PolicyID: "PLE_114049"}, + ).Return(&cr, nil) + + client.On("UpdateSecurityPolicy", + mock.Anything, // ctx is irrelevant for this test + appsec.UpdateSecurityPolicyRequest{ConfigID: 43253, Version: 7, PolicyID: "PLE_114049", PolicyName: "Cloned Test for Launchpad 15", DefaultSettings: false, PolicyPrefix: ""}, + ).Return(&cu, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestResSecurityPolicyRename/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_security_policy_rename.test", "id", "43253:7:PLE_114049"), + ), + ExpectNonEmptyPlan: true, + }, + { + Config: loadFixtureString("testdata/TestResSecurityPolicyRename/update_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_appsec_security_policy_rename.test", "id", "43253:7:PLE_114049"), + ), + //ExpectNonEmptyPlan: true, + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index c9e86ed89..53ae8424b 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -112,6 +112,8 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["advancedSettingsLoggingDS"] = &OutputTemplate{TemplateName: "advancedSettingsLoggingDS", TableTitle: "Allow Sampling|Cookies|Custom Headers|Standard Headers", TemplateType: "TABULAR", TemplateString: "{{.AllowSampling}}|{{.Cookies.Type}} {{.Cookies.Values}}|{{.CustomHeaders.Type}} {{.CustomHeaders.Values}}|{{.StandardHeaders.Type}} {{.StandardHeaders.Values}}"} otm["advancedSettingsPrefetchDS"] = &OutputTemplate{TemplateName: "advancedSettingsPrefetchDS", TableTitle: "Enable App Layer|All Extension|Enable Rate Controls|Extensions", TemplateType: "TABULAR", TemplateString: "{{.EnableAppLayer}}|{{.AllExtensions}}|{{.EnableRateControls}}|{{range $index, $element := .Extensions}}{{.}} {{end}}"} otm["apiHostnameCoverageMatchTargetsDS"] = &OutputTemplate{TemplateName: "apiHostnameCoverageMatchTargetsDS", TableTitle: "Hostnames|Target ID|Type", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .MatchTargets.WebsiteTargets}}{{if $index}},{{end}}{{.Hostnames}}|{{.TargetID}}|{{.Type}}{{end}}"} + otm["apiHostnameCoverageoverLappingDS"] = &OutputTemplate{TemplateName: "apiHostnameCoverageoverLappingDS", TableTitle: "ID|Name|Version|Contract ID|Contract Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .OverLappingList}}{{if $index}},{{end}}{{.ConfigID}}|{{.ConfigName}}|{{.ConfigVersion}}|{{.ContractID}}|{{.ContractName}}{{end}}"} + //Extensions otm["apiEndpointsDS"] = &OutputTemplate{TemplateName: "apiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} otm["policyApiEndpointsDS"] = &OutputTemplate{TemplateName: "policyApiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} diff --git a/pkg/providers/appsec/testdata/TestResConfigurationRename/Configuration.json b/pkg/providers/appsec/testdata/TestResConfigurationRename/Configuration.json new file mode 100644 index 000000000..645741f1e --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResConfigurationRename/Configuration.json @@ -0,0 +1,54 @@ + + { + "configurations": [ + { + "description": "Akamai Tools", + "fileType": "RBAC", + "id": 43253, + "latestVersion": 23, + "name": "Akamai Tools", + "targetProduct": "KSD" + }, + { + "description": "Akamai Tools", + "fileType": "RBAC", + "id": 432531, + "latestVersion": 23, + "name": "Akamai Tools New", + "targetProduct": "KSD" + }, + { + "fileType": "RBAC", + "id": 39085, + "latestVersion": 35, + "name": "Example for EDGE", + "targetProduct": "KSD" + }, + { + "description": "Restrictions for WT events", + "fileType": "RBAC", + "id": 24728, + "latestVersion": 1, + "name": "WorldTour", + "targetProduct": "KSD" + }, + { + "fileType": "WAF", + "id": 3644, + "latestVersion": 13, + "name": "WAF Security File", + "productionHostnames": [ + "*.bendell.ca", + "bendell.ca", + "www.biscuit.org.uk", + "*.colinbendell.com", + "www.colinbendell.com", + "www.slackware.com", + "arm.slackware.com" + ], + "productionVersion": 12, + "stagingVersion": 12, + "targetProduct": "KSD" + } + ] + } diff --git a/pkg/providers/appsec/testdata/TestResConfigurationRename/ConfigurationCreate.json b/pkg/providers/appsec/testdata/TestResConfigurationRename/ConfigurationCreate.json new file mode 100644 index 000000000..2eb98aae2 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResConfigurationRename/ConfigurationCreate.json @@ -0,0 +1,6 @@ +{ + "configId": 432531, + "version": 1, + "description": "description1", + "name": "Akamai Tools New" +} \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResConfigurationRename/ConfigurationUpdate.json b/pkg/providers/appsec/testdata/TestResConfigurationRename/ConfigurationUpdate.json new file mode 100644 index 000000000..33c339d6c --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResConfigurationRename/ConfigurationUpdate.json @@ -0,0 +1,5 @@ + + { + "description": "Akamai Tools", + "name": "Akamai Tools New" + } \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResConfigurationRename/match_by_id.tf b/pkg/providers/appsec/testdata/TestResConfigurationRename/match_by_id.tf new file mode 100644 index 000000000..55248b4ec --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResConfigurationRename/match_by_id.tf @@ -0,0 +1,10 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +resource "akamai_appsec_configuration_rename" "test" { + name = "Akamai Tools New" + description = "TF Tools" + config_id = 432531 +} + diff --git a/pkg/providers/appsec/testdata/TestResConfigurationRename/update_by_id.tf b/pkg/providers/appsec/testdata/TestResConfigurationRename/update_by_id.tf new file mode 100644 index 000000000..55248b4ec --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResConfigurationRename/update_by_id.tf @@ -0,0 +1,10 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +resource "akamai_appsec_configuration_rename" "test" { + name = "Akamai Tools New" + description = "TF Tools" + config_id = 432531 +} + diff --git a/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicies.json b/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicies.json new file mode 100644 index 000000000..01536813e --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicies.json @@ -0,0 +1,20 @@ +[ + { + "configId": 43253, + "policies": [ + { + "policyId": "AAAA_81230", + "policyName": "akamaitools" + }, + { + "policyId": "PLE_114049", + "policyName": "PLE Cloned Test for Launchpad 21" + }, + { + "policyId": "PLD_113982", + "policyName": "PLD Cloned Test for Launchpad 21" + } + ], + "version": 15 + } +] \ No newline at end of file diff --git a/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicy.json b/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicy.json new file mode 100644 index 000000000..9253cdbe0 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicy.json @@ -0,0 +1,15 @@ +{ + "configId": 43253, + "version": 7, + "policyId": "PLE_114049", + "policyName": "PLE Cloned Test for Launchpad 151", + "policySecurityControls": { + "applyApiConstraints": true, + "applyApplicationLayerControls": true, + "applyBotmanControls": true, + "applyNetworkLayerControls": true, + "applyRateControls": true, + "applyReputationControls": true, + "applySlowPostControls": false + } +} diff --git a/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicyCreate.json b/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicyCreate.json new file mode 100644 index 000000000..ce4b0218b --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicyCreate.json @@ -0,0 +1,16 @@ +{ + "configId": 43253, + "version": 7, + "policyId": "PLE_114049", + "policyName": "PLE Cloned Test for Launchpad 15", + "policyPrefix": "PL", + "policySecurityControls": { + "applyApiConstraints": true, + "applyApplicationLayerControls": true, + "applyBotmanControls": true, + "applyNetworkLayerControls": true, + "applyRateControls": true, + "applyReputationControls": true, + "applySlowPostControls": false + } +} diff --git a/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicyUpdate.json b/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicyUpdate.json new file mode 100644 index 000000000..d93595947 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/SecurityPolicyUpdate.json @@ -0,0 +1,16 @@ +{ + "configId": 43253, + "version": 7, + "policyId": "PLE_114049", + "policyName": "Cloned Test for Launchpad 15", + "policyPrefix": "PL", + "policySecurityControls": { + "applyApiConstraints": true, + "applyApplicationLayerControls": true, + "applyBotmanControls": true, + "applyNetworkLayerControls": true, + "applyRateControls": true, + "applyReputationControls": true, + "applySlowPostControls": false + } +} diff --git a/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/match_by_id.tf b/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/match_by_id.tf new file mode 100644 index 000000000..ed3c1cadb --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/match_by_id.tf @@ -0,0 +1,12 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + + +resource "akamai_appsec_security_policy_rename" "test" { + config_id = 43253 + version = 7 + security_policy_name = "Cloned Test for Launchpad 15" + security_policy_id = "PLE_114049" + } + diff --git a/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/update_by_id.tf b/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/update_by_id.tf new file mode 100644 index 000000000..940fb13a8 --- /dev/null +++ b/pkg/providers/appsec/testdata/TestResSecurityPolicyRename/update_by_id.tf @@ -0,0 +1,11 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +resource "akamai_appsec_security_policy_rename" "test" { + config_id = 43253 + version = 7 + security_policy_name = "Cloned Test for Launchpad 15" + security_policy_id = "PLE_114049" + } + From b0bc63121c0c2649ef755aa5dc72eec844a31993 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 27 Jan 2021 15:00:24 -0600 Subject: [PATCH 073/215] Set destroy on configuration_rename to No-op --- ...urce_akamai_appsec_configuration_rename.go | 22 +------------------ 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_rename.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_rename.go index 747393c83..34434fcfc 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_configuration_rename.go +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_rename.go @@ -76,27 +76,7 @@ func resourceConfigurationRenameUpdate(ctx context.Context, d *schema.ResourceDa } func resourceConfigurationRenameDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceConfigurationRenameRemove") - - removeConfiguration := appsec.RemoveConfigurationRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeConfiguration.ConfigID = configid - - _, errd := client.RemoveConfiguration(ctx, removeConfiguration) - if errd != nil { - logger.Errorf("calling 'removeConfiguration': %s", errd.Error()) - return diag.FromErr(errd) - } - - d.SetId("") - - return nil + return schema.NoopContext(nil, d, m) } func resourceConfigurationRenameRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { From 2e031bfe430fa6ba9728b8bd05aa8f20f581a3db Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Wed, 27 Jan 2021 16:38:38 -0500 Subject: [PATCH 074/215] Add mock call to GetPolicyProtections --- ...esource_akamai_appsec_api_request_constraints_test.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go index 62d677b72..173321930 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go @@ -25,6 +25,10 @@ func TestAccAkamaiApiRequestConstraints_res_basic(t *testing.T) { expectJSD := compactJSON(loadFixtureBytes("testdata/TestResApiRequestConstraints/ApiRequestConstraints.json")) json.Unmarshal([]byte(expectJSD), &crd) + crp := appsec.GetPolicyProtectionsResponse{} + expectJSP := compactJSON(loadFixtureBytes("testdata/TestDSPolicyProtections/PolicyProtections.json")) + json.Unmarshal([]byte(expectJSP), &crp) + client.On("GetApiRequestConstraints", mock.Anything, // ctx is irrelevant for this test appsec.GetApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, @@ -35,6 +39,11 @@ func TestAccAkamaiApiRequestConstraints_res_basic(t *testing.T) { appsec.UpdateApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ApiID: 1, Action: "alert"}, ).Return(&cu, nil) + client.On("GetPolicyProtections", + mock.Anything, // ctx is irrelevant for this test + appsec.GetPolicyProtectionsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&crp, nil) + client.On("RemoveApiRequestConstraints", mock.Anything, // ctx is irrelevant for this test appsec.RemoveApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ApiID: 1, Action: "none"}, From 01d174d194b4e8a7faa3141839468f1f1ee1b9f7 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Thu, 28 Jan 2021 08:31:43 -0500 Subject: [PATCH 075/215] Test workflow with one small typo correction. --- docs/guides/get_started_dns_zone.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/get_started_dns_zone.md b/docs/guides/get_started_dns_zone.md index 7e69c60db..2ca22e408 100644 --- a/docs/guides/get_started_dns_zone.md +++ b/docs/guides/get_started_dns_zone.md @@ -18,7 +18,7 @@ To get more information about Edge DNS, see: ## Configure the Terraform Provider -Set up your credential files as described in [Get Started with Akamai APIs](https://developer.akamai.com/api/getting-started), and include authorization for the GTM Config API +Set up your credential files as described in [Get Started with Akamai APIs](https://developer.akamai.com/api/getting-started), and include authorization for the GTM Config API. Next, we need to configure the provider with our credentials. This is done using a provider configuration block. From eef31c7cf2300deebd1e25d281def50bce3accf1 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 28 Jan 2021 08:22:57 -0600 Subject: [PATCH 076/215] Add support for import feature on all resources --- ...kamai_appsec_api_hostname_coverage_test.go | 2 +- .../data_akamai_appsec_siem_definitions.go | 6 +- ...kamai_appsec_advanced_settings_prefetch.go | 129 +++++++--- ...ource_akamai_appsec_attack_group_action.go | 208 +++++++++++----- ..._akamai_appsec_attack_group_action_test.go | 3 +- ...urce_akamai_appsec_bypass_network_lists.go | 129 +++++++--- ...akamai_appsec_bypass_network_lists_test.go | 2 +- ...akamai_appsec_configuration_rename_test.go | 9 - .../resource_akamai_appsec_custom_deny.go | 148 +++++++---- ...resource_akamai_appsec_custom_deny_test.go | 4 +- ...source_akamai_appsec_custom_rule_action.go | 229 +++++++++++------ ...e_akamai_appsec_custom_rule_action_test.go | 2 +- .../appsec/resource_akamai_appsec_eval.go | 169 +++++++++---- .../resource_akamai_appsec_eval_host.go | 129 +++++++--- .../resource_akamai_appsec_eval_host_test.go | 2 +- ...esource_akamai_appsec_eval_protect_host.go | 90 +++++-- ...ce_akamai_appsec_eval_protect_host_test.go | 2 +- ...resource_akamai_appsec_eval_rule_action.go | 208 +++++++++++----- ...rce_akamai_appsec_eval_rule_action_test.go | 2 +- ...ai_appsec_eval_rule_condition_exception.go | 214 +++++++++++----- .../appsec/resource_akamai_appsec_ip_geo.go | 159 ++++++++---- .../resource_akamai_appsec_penalty_box.go | 63 +++-- ...source_akamai_appsec_rate_policy_action.go | 205 +++++++++++----- .../resource_akamai_appsec_rate_protection.go | 158 ++++++++---- ...ource_akamai_appsec_reputation_analysis.go | 180 +++++++++----- ..._akamai_appsec_reputation_analysis_test.go | 4 +- ...akamai_appsec_reputation_profile_action.go | 232 ++++++++++++------ ...i_appsec_reputation_profile_action_test.go | 2 +- ...rce_akamai_appsec_reputation_protection.go | 158 ++++++++---- .../resource_akamai_appsec_rule_action.go | 204 ++++++++++----- ...resource_akamai_appsec_rule_action_test.go | 2 +- ..._akamai_appsec_rule_condition_exception.go | 205 +++++++++++----- ...ai_appsec_rule_condition_exception_test.go | 2 +- .../resource_akamai_appsec_security_policy.go | 9 +- ...amai_appsec_security_policy_protections.go | 167 +++++++++---- ...esource_akamai_appsec_selected_hostname.go | 38 ++- .../resource_akamai_appsec_siem_settings.go | 128 +++++++--- ...source_akamai_appsec_siem_settings_test.go | 2 +- ...mai_appsec_slow_post_protection_setting.go | 161 ++++++++---- ...ource_akamai_appsec_slowpost_protection.go | 159 ++++++++---- ..._akamai_appsec_slowpost_protection_test.go | 2 +- .../resource_akamai_appsec_version_notes.go | 90 +++++-- ...source_akamai_appsec_version_notes_test.go | 2 +- .../appsec/resource_akamai_appsec_waf_mode.go | 117 ++++++--- .../resource_akamai_appsec_waf_mode_test.go | 2 +- .../resource_akamai_appsec_waf_protection.go | 63 +++-- ...ource_akamai_appsec_waf_protection_test.go | 2 +- .../TestDSApiHostnameCoverage/match_by_id.tf | 2 +- 48 files changed, 2954 insertions(+), 1251 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go index 780f56023..4e56c0f20 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_test.go @@ -19,7 +19,7 @@ func TestAccAkamaiApiHostnameCoverage_data_basic(t *testing.T) { client.On("GetApiHostnameCoverage", mock.Anything, // ctx is irrelevant for this test - appsec.GetApiHostnameCoverageRequest{ConfigID: 0, Version: 0, Hostname: "example.com"}, + appsec.GetApiHostnameCoverageRequest{ConfigID: 0, Version: 0}, ).Return(&cv, nil) useClient(client, func() { diff --git a/pkg/providers/appsec/data_akamai_appsec_siem_definitions.go b/pkg/providers/appsec/data_akamai_appsec_siem_definitions.go index 96cb68d3a..28ddb2cba 100644 --- a/pkg/providers/appsec/data_akamai_appsec_siem_definitions.go +++ b/pkg/providers/appsec/data_akamai_appsec_siem_definitions.go @@ -43,11 +43,11 @@ func dataSourceSiemDefinitionsRead(ctx context.Context, d *schema.ResourceData, getSiemDefinitions := appsec.GetSiemDefinitionsRequest{} - siem_definition_name, err := tools.GetStringValue("siem_definition_name", d) + siemDdefinitionName, err := tools.GetStringValue("siem_definition_name", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } - getSiemDefinitions.SiemDefinitionName = siem_definition_name + getSiemDefinitions.SiemDefinitionName = siemDdefinitionName siemdefinitions, err := client.GetSiemDefinitions(ctx, getSiemDefinitions) if err != nil { @@ -71,8 +71,6 @@ func dataSourceSiemDefinitionsRead(ctx context.Context, d *schema.ResourceData, if err := d.Set("json", string(jsonBody)); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - //d.Set("enabled", GetSlowPostProtection.ApplySlowPostControls) - //d.SetId(strconv.Itoa(getRateProtection.ConfigID)) if len(siemdefinitions.SiemDefinitions) > 0 { d.SetId(strconv.Itoa(siemdefinitions.SiemDefinitions[0].ID)) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go index 0bd1509d9..ff82bd781 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go @@ -3,7 +3,9 @@ package appsec import ( "context" "errors" + "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -67,19 +69,34 @@ func resourceAdvancedSettingsPrefetchRead(ctx context.Context, d *schema.Resourc logger := meta.Log("APPSEC", "resourceAdvancedSettingsPrefetchRead") getAdvancedSettingsPrefetch := appsec.GetAdvancedSettingsPrefetchRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAdvancedSettingsPrefetch.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getAdvancedSettingsPrefetch.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getAdvancedSettingsPrefetch.Version = version + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsPrefetch.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAdvancedSettingsPrefetch.Version = version } - getAdvancedSettingsPrefetch.Version = version - advancedsettingsprefetch, err := client.GetAdvancedSettingsPrefetch(ctx, getAdvancedSettingsPrefetch) if err != nil { logger.Errorf("calling 'getAdvancedSettingsPrefetch': %s", err.Error()) @@ -94,7 +111,15 @@ func resourceAdvancedSettingsPrefetchRead(ctx context.Context, d *schema.Resourc d.Set("output_text", outputtext) } - d.SetId(strconv.Itoa(getAdvancedSettingsPrefetch.ConfigID)) + if err := d.Set("config_id", getAdvancedSettingsPrefetch.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getAdvancedSettingsPrefetch.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d", getAdvancedSettingsPrefetch.ConfigID, getAdvancedSettingsPrefetch.Version)) return nil } @@ -106,19 +131,34 @@ func resourceAdvancedSettingsPrefetchDelete(ctx context.Context, d *schema.Resou logger := meta.Log("APPSEC", "resourceAdvancedSettingsPrefetchRemove") updateAdvancedSettingsPrefetch := appsec.UpdateAdvancedSettingsPrefetchRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateAdvancedSettingsPrefetch.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateAdvancedSettingsPrefetch.Version = version + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPrefetch.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPrefetch.Version = version } - updateAdvancedSettingsPrefetch.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAdvancedSettingsPrefetch.Version = version - updateAdvancedSettingsPrefetch.EnableAppLayer = false updateAdvancedSettingsPrefetch.EnableRateControls = false @@ -139,19 +179,34 @@ func resourceAdvancedSettingsPrefetchUpdate(ctx context.Context, d *schema.Resou logger := meta.Log("APPSEC", "resourceAdvancedSettingsPrefetchUpdate") updateAdvancedSettingsPrefetch := appsec.UpdateAdvancedSettingsPrefetchRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateAdvancedSettingsPrefetch.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateAdvancedSettingsPrefetch.Version = version + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPrefetch.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAdvancedSettingsPrefetch.Version = version } - updateAdvancedSettingsPrefetch.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAdvancedSettingsPrefetch.Version = version - enableAppLayer, err := tools.GetBoolValue("enable_app_layer", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_attack_group_action.go b/pkg/providers/appsec/resource_akamai_appsec_attack_group_action.go index 849c8aafb..f32916abc 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_attack_group_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_attack_group_action.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -63,31 +64,54 @@ func resourceAttackGroupActionRead(ctx context.Context, d *schema.ResourceData, logger := meta.Log("APPSEC", "resourceAttackGroupActionRead") getAttackGroupAction := appsec.GetAttackGroupActionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAttackGroupAction.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getAttackGroupAction.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAttackGroupAction.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getAttackGroupAction.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAttackGroupAction.PolicyID = policyid + policyid := s[2] - attackgroup, err := tools.GetStringValue("attack_group", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAttackGroupAction.Group = attackgroup + getAttackGroupAction.PolicyID = policyid + + attackgroup := s[3] + + getAttackGroupAction.Group = attackgroup + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAttackGroupAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAttackGroupAction.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAttackGroupAction.PolicyID = policyid + + attackgroup, err := tools.GetStringValue("attack_group", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAttackGroupAction.Group = attackgroup + } attackgroupaction, err := client.GetAttackGroupAction(ctx, getAttackGroupAction) if err != nil { logger.Errorf("calling 'getAttackGroupAction': %s", err.Error()) @@ -104,7 +128,23 @@ func resourceAttackGroupActionRead(ctx context.Context, d *schema.ResourceData, } } - d.SetId(strconv.Itoa(getAttackGroupAction.ConfigID)) + if err := d.Set("config_id", getAttackGroupAction.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getAttackGroupAction.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getAttackGroupAction.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("attack_group", getAttackGroupAction.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s:%s", getAttackGroupAction.ConfigID, getAttackGroupAction.Version, getAttackGroupAction.PolicyID, getAttackGroupAction.Group)) return nil } @@ -116,31 +156,54 @@ func resourceAttackGroupActionDelete(ctx context.Context, d *schema.ResourceData logger := meta.Log("APPSEC", "resourceAttackGroupActionRemove") removeAttackGroupAction := appsec.UpdateAttackGroupActionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeAttackGroupAction.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeAttackGroupAction.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeAttackGroupAction.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeAttackGroupAction.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeAttackGroupAction.PolicyID = policyid + policyid := s[2] - attackgroup, err := tools.GetStringValue("attack_group", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeAttackGroupAction.Group = attackgroup + removeAttackGroupAction.PolicyID = policyid + + attackgroup := s[3] + + removeAttackGroupAction.Group = attackgroup + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeAttackGroupAction.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeAttackGroupAction.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeAttackGroupAction.PolicyID = policyid + + attackgroup, err := tools.GetStringValue("attack_group", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeAttackGroupAction.Group = attackgroup + } removeAttackGroupAction.Action = "none" _, erru := client.UpdateAttackGroupAction(ctx, removeAttackGroupAction) @@ -159,31 +222,54 @@ func resourceAttackGroupActionUpdate(ctx context.Context, d *schema.ResourceData logger := meta.Log("APPSEC", "resourceAttackGroupActionUpdate") updateAttackGroupAction := appsec.UpdateAttackGroupActionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAttackGroupAction.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateAttackGroupAction.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAttackGroupAction.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateAttackGroupAction.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAttackGroupAction.PolicyID = policyid + policyid := s[2] - attackgroup, err := tools.GetStringValue("attack_group", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAttackGroupAction.Group = attackgroup + updateAttackGroupAction.PolicyID = policyid + attackgroup := s[3] + + updateAttackGroupAction.Group = attackgroup + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAttackGroupAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAttackGroupAction.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAttackGroupAction.PolicyID = policyid + + attackgroup, err := tools.GetStringValue("attack_group", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAttackGroupAction.Group = attackgroup + } attackgroupaction, err := tools.GetStringValue("attack_group_action", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_attack_group_action_test.go b/pkg/providers/appsec/resource_akamai_appsec_attack_group_action_test.go index cc1786937..2baf7df9b 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_attack_group_action_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_attack_group_action_test.go @@ -39,8 +39,9 @@ func TestAccAkamaiAttackGroupAction_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResAttackGroupAction/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_attack_group_action.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_attack_group_action.test", "id", "43253:7:AAAA_81230:SQL"), ), + ExpectNonEmptyPlan: true, }, }, }) diff --git a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go index 01a8affc1..2e279da96 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go +++ b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists.go @@ -3,7 +3,9 @@ package appsec import ( "context" "errors" + "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -54,19 +56,34 @@ func resourceBypassNetworkListsRead(ctx context.Context, d *schema.ResourceData, logger := meta.Log("APPSEC", "resourceBypassNetworkListsRead") getBypassNetworkLists := appsec.GetBypassNetworkListsRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getBypassNetworkLists.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getBypassNetworkLists.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getBypassNetworkLists.Version = version + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getBypassNetworkLists.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getBypassNetworkLists.Version = version } - getBypassNetworkLists.Version = version - bypassnetworklists, err := client.GetBypassNetworkLists(ctx, getBypassNetworkLists) if err != nil { logger.Errorf("calling 'getBypassNetworkLists': %s", err.Error()) @@ -81,7 +98,15 @@ func resourceBypassNetworkListsRead(ctx context.Context, d *schema.ResourceData, d.Set("output_text", outputtext) } - d.SetId(strconv.Itoa(getBypassNetworkLists.ConfigID)) + if err := d.Set("config_id", getBypassNetworkLists.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getBypassNetworkLists.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d", getBypassNetworkLists.ConfigID, getBypassNetworkLists.Version)) return nil } @@ -93,19 +118,34 @@ func resourceBypassNetworkListsDelete(ctx context.Context, d *schema.ResourceDat logger := meta.Log("APPSEC", "resourceBypassNetworkListsRemove") removeBypassNetworkLists := appsec.RemoveBypassNetworkListsRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeBypassNetworkLists.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeBypassNetworkLists.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeBypassNetworkLists.Version = version + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeBypassNetworkLists.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeBypassNetworkLists.Version = version } - removeBypassNetworkLists.Version = version - hn := make([]string, 0, 1) removeBypassNetworkLists.NetworkLists = hn @@ -125,19 +165,34 @@ func resourceBypassNetworkListsUpdate(ctx context.Context, d *schema.ResourceDat logger := meta.Log("APPSEC", "resourceBypassNetworkListsUpdate") updateBypassNetworkLists := appsec.UpdateBypassNetworkListsRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateBypassNetworkLists.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateBypassNetworkLists.Version = version + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateBypassNetworkLists.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateBypassNetworkLists.Version = version } - updateBypassNetworkLists.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateBypassNetworkLists.Version = version - netlist := d.Get("bypass_network_list").([]interface{}) nru := make([]string, 0, len(netlist)) diff --git a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go index 7a2a63d91..cee6183f6 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_bypass_network_lists_test.go @@ -48,7 +48,7 @@ func TestAccAkamaiBypassNetworkLists_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResBypassNetworkLists/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_bypass_network_lists.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_bypass_network_lists.test", "id", "43253:7"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_configuration_rename_test.go b/pkg/providers/appsec/resource_akamai_appsec_configuration_rename_test.go index b18c34bc1..62f441cf1 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_configuration_rename_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_configuration_rename_test.go @@ -21,10 +21,6 @@ func TestAccAkamaiConfigurationRename_res_basic(t *testing.T) { expectJS := compactJSON(loadFixtureBytes("testdata/TestResConfigurationRename/Configuration.json")) json.Unmarshal([]byte(expectJS), &cr) - crd := appsec.RemoveConfigurationResponse{} - expectJSD := compactJSON(loadFixtureBytes("testdata/TestResConfigurationRename/Configuration.json")) - json.Unmarshal([]byte(expectJSD), &crd) - client.On("GetConfigurations", mock.Anything, // ctx is irrelevant for this test appsec.GetConfigurationsRequest{ConfigID: 432531, Name: "Akamai Tools New"}, @@ -35,11 +31,6 @@ func TestAccAkamaiConfigurationRename_res_basic(t *testing.T) { appsec.UpdateConfigurationRequest{ConfigID: 432531, Name: "Akamai Tools New", Description: "TF Tools"}, ).Return(&cu, nil) - client.On("RemoveConfiguration", - mock.Anything, // ctx is irrelevant for this test - appsec.RemoveConfigurationRequest{ConfigID: 432531}, - ).Return(&crd, nil) - useClient(client, func() { resource.Test(t, resource.TestCase{ IsUnitTest: true, diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go b/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go index accddab22..c50c2f360 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go @@ -5,6 +5,8 @@ import ( "encoding/json" "errors" "fmt" + "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -81,7 +83,7 @@ func resourceCustomDenyCreate(ctx context.Context, d *schema.ResourceData, m int return diag.FromErr(errc) } - d.SetId(string(postresp.ID)) + d.SetId(fmt.Sprintf("%d:%d:%s", createCustomDeny.ConfigID, createCustomDeny.Version, postresp.ID)) return resourceCustomDenyRead(ctx, d, m) } @@ -99,20 +101,38 @@ func resourceCustomDenyUpdate(ctx context.Context, d *schema.ResourceData, m int updateCustomDeny.JsonPayloadRaw = rawJSON - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateCustomDeny.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateCustomDeny.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateCustomDeny.Version = version + + updateCustomDeny.ID = s[2] + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateCustomDeny.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateCustomDeny.Version = version + + updateCustomDeny.ID = d.Id() } - updateCustomDeny.Version = version - - updateCustomDeny.ID = d.Id() - _, erru := client.UpdateCustomDeny(ctx, updateCustomDeny) if erru != nil { logger.Errorf("calling 'updateCustomDeny': %s", erru.Error()) @@ -128,21 +148,38 @@ func resourceCustomDenyDelete(ctx context.Context, d *schema.ResourceData, m int logger := meta.Log("APPSEC", "resourceCustomDenyRemove") removeCustomDeny := appsec.RemoveCustomDenyRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeCustomDeny.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeCustomDeny.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeCustomDeny.Version = version + + removeCustomDeny.ID = s[2] + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeCustomDeny.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeCustomDeny.Version = version + + removeCustomDeny.ID = d.Id() } - removeCustomDeny.Version = version - - removeCustomDeny.ID = d.Id() - _, errd := client.RemoveCustomDeny(ctx, removeCustomDeny) if errd != nil { logger.Errorf("calling 'removeCustomDeny': %s", errd.Error()) @@ -160,21 +197,38 @@ func resourceCustomDenyRead(ctx context.Context, d *schema.ResourceData, m inter logger := meta.Log("APPSEC", "resourceCustomDenyRead") getCustomDeny := appsec.GetCustomDenyRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getCustomDeny.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getCustomDeny.Version = version + + getCustomDeny.ID = s[2] + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getCustomDeny.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getCustomDeny.Version = version + + getCustomDeny.ID = d.Id() } - getCustomDeny.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getCustomDeny.Version = version - - getCustomDeny.ID = d.Id() - customdeny, err := client.GetCustomDeny(ctx, getCustomDeny) if err != nil { logger.Errorf("calling 'getCustomDeny': %s", err.Error()) @@ -193,7 +247,15 @@ func resourceCustomDenyRead(ctx context.Context, d *schema.ResourceData, m inter return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(string(customdeny.ID)) + if err := d.Set("config_id", getCustomDeny.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getCustomDeny.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s", getCustomDeny.ConfigID, getCustomDeny.Version, customdeny.ID)) return nil } diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go b/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go index 7b53dfdf4..96767ec7f 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go @@ -57,13 +57,13 @@ func TestAccAkamaiCustomDeny_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResCustomDeny/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_custom_deny.test", "id", "deny_custom_622918"), + resource.TestCheckResourceAttr("akamai_appsec_custom_deny.test", "id", "43253:7:deny_custom_622918"), ), }, { Config: loadFixtureString("testdata/TestResCustomDeny/update_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_custom_deny.test", "id", "deny_custom_622918"), + resource.TestCheckResourceAttr("akamai_appsec_custom_deny.test", "id", "43253:7:deny_custom_622918"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go index 46a40a6f6..c4e4cc9fa 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -57,43 +58,79 @@ func resourceCustomRuleActionRead(ctx context.Context, d *schema.ResourceData, m logger := meta.Log("APPSEC", "resourceCustomRuleActionRead") getCustomRuleAction := appsec.GetCustomRuleActionRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getCustomRuleAction.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getCustomRuleAction.Version = version + + policyid := s[2] + getCustomRuleAction.PolicyID = policyid + + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + getCustomRuleAction.RuleID = ruleid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getCustomRuleAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getCustomRuleAction.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getCustomRuleAction.PolicyID = policyid + + ruleid, err := tools.GetIntValue("custom_rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getCustomRuleAction.RuleID = ruleid } - getCustomRuleAction.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { + customruleaction, err := client.GetCustomRuleAction(ctx, getCustomRuleAction) + if err != nil { + logger.Errorf("calling 'getCustomRuleAction': %s", err.Error()) return diag.FromErr(err) } - getCustomRuleAction.Version = version + logger.Warnf("calling 'getCustomRuleAction': %s", customruleaction) - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if err := d.Set("custom_rule_id", getCustomRuleAction.RuleID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - getCustomRuleAction.PolicyID = policyid - ruleid, err := tools.GetIntValue("custom_rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if err := d.Set("config_id", getCustomRuleAction.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - getCustomRuleAction.RuleID = ruleid - customruleaction, err := client.GetCustomRuleAction(ctx, getCustomRuleAction) - if err != nil { - logger.Errorf("calling 'getCustomRuleAction': %s", err.Error()) - return diag.FromErr(err) + if err := d.Set("version", getCustomRuleAction.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - logger.Warnf("calling 'getCustomRuleAction': %s", customruleaction) - if err := d.Set("custom_rule_id", ruleid); err != nil { + if err := d.Set("security_policy_id", getCustomRuleAction.PolicyID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(ruleid)) + d.SetId(fmt.Sprintf("%d:%d:%s:%d", getCustomRuleAction.ConfigID, getCustomRuleAction.Version, getCustomRuleAction.PolicyID, getCustomRuleAction.RuleID)) return nil } @@ -104,31 +141,55 @@ func resourceCustomRuleActionDelete(ctx context.Context, d *schema.ResourceData, logger := meta.Log("APPSEC", "resourceCustomRuleActionRemove") updateCustomRuleAction := appsec.UpdateCustomRuleActionRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateCustomRuleAction.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateCustomRuleAction.Version = version + + policyid := s[2] + updateCustomRuleAction.PolicyID = policyid + + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateCustomRuleAction.RuleID = ruleid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateCustomRuleAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateCustomRuleAction.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateCustomRuleAction.PolicyID = policyid + + ruleid, err := tools.GetIntValue("custom_rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateCustomRuleAction.RuleID = ruleid } - updateCustomRuleAction.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateCustomRuleAction.Version = version - - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateCustomRuleAction.PolicyID = policyid - - ruleid, err := tools.GetIntValue("custom_rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateCustomRuleAction.RuleID = ruleid - updateCustomRuleAction.Action = "none" _, errd := client.UpdateCustomRuleAction(ctx, updateCustomRuleAction) @@ -148,31 +209,55 @@ func resourceCustomRuleActionUpdate(ctx context.Context, d *schema.ResourceData, logger := meta.Log("APPSEC", "resourceCustomRuleActionUpdate") updateCustomRuleAction := appsec.UpdateCustomRuleActionRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateCustomRuleAction.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateCustomRuleAction.Version = version + + policyid := s[2] + updateCustomRuleAction.PolicyID = policyid + + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateCustomRuleAction.RuleID = ruleid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateCustomRuleAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateCustomRuleAction.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateCustomRuleAction.PolicyID = policyid + + ruleid, err := tools.GetIntValue("custom_rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateCustomRuleAction.RuleID = ruleid } - updateCustomRuleAction.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateCustomRuleAction.Version = version - - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateCustomRuleAction.PolicyID = policyid - - ruleid, err := tools.GetIntValue("custom_rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateCustomRuleAction.RuleID = ruleid - customruleaction, err := tools.GetStringValue("custom_rule_action", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action_test.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action_test.go index 349ffb01f..8eb9020b8 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action_test.go @@ -39,7 +39,7 @@ func TestAccAkamaiCustomRuleAction_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResCustomRuleAction/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_custom_rule_action.test", "id", "60036362"), + resource.TestCheckResourceAttr("akamai_appsec_custom_rule_action.test", "id", "43253:7:AAAA_81230:60036362"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval.go b/pkg/providers/appsec/resource_akamai_appsec_eval.go index 96096bc31..6639a1080 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -81,31 +82,49 @@ func resourceEvalRead(ctx context.Context, d *schema.ResourceData, m interface{} logger := meta.Log("APPSEC", "resourceEvalRead") getEval := appsec.GetEvalRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEval.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getEval.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEval.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getEval.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEval.PolicyID = policyid + policyid := s[2] + getEval.PolicyID = policyid - evaloperation, err := tools.GetStringValue("eval_operation", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEval.Eval = evaloperation + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEval.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEval.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEval.PolicyID = policyid + + evaloperation, err := tools.GetStringValue("eval_operation", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEval.Eval = evaloperation + } eval, err := client.GetEval(ctx, getEval) if err != nil { logger.Errorf("calling 'getEval': %s", err.Error()) @@ -138,7 +157,19 @@ func resourceEvalRead(ctx context.Context, d *schema.ResourceData, m interface{} return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(getEval.ConfigID)) + if err := d.Set("config_id", getEval.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getEval.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getEval.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s", getEval.ConfigID, getEval.Version, getEval.PolicyID)) return nil } @@ -150,25 +181,43 @@ func resourceEvalDelete(ctx context.Context, d *schema.ResourceData, m interface logger := meta.Log("APPSEC", "resourceEvalDelete") removeEval := appsec.RemoveEvalRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeEval.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeEval.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeEval.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeEval.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeEval.PolicyID = policyid + policyid := s[2] + removeEval.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEval.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEval.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEval.PolicyID = policyid + } removeEval.Eval = "STOP" _, erru := client.RemoveEval(ctx, removeEval) @@ -187,25 +236,43 @@ func resourceEvalUpdate(ctx context.Context, d *schema.ResourceData, m interface logger := meta.Log("APPSEC", "resourceEvalUpdate") updateEval := appsec.UpdateEvalRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateEval.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateEval.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateEval.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateEval.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateEval.PolicyID = policyid + policyid := s[2] + updateEval.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEval.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEval.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEval.PolicyID = policyid + } evaloperation, err := tools.GetStringValue("eval_operation", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_host.go b/pkg/providers/appsec/resource_akamai_appsec_eval_host.go index bb6701c62..1354f951b 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_host.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_host.go @@ -3,7 +3,9 @@ package appsec import ( "context" "errors" + "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -54,19 +56,34 @@ func resourceEvalHostRead(ctx context.Context, d *schema.ResourceData, m interfa logger := meta.Log("APPSEC", "resourceEvalHostRead") getEvalHost := appsec.GetEvalHostRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEvalHost.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getEvalHost.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getEvalHost.Version = version + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalHost.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalHost.Version = version } - getEvalHost.Version = version - evalhost, err := client.GetEvalHost(ctx, getEvalHost) if err != nil { logger.Errorf("calling 'getEvalHost': %s", err.Error()) @@ -81,7 +98,15 @@ func resourceEvalHostRead(ctx context.Context, d *schema.ResourceData, m interfa d.Set("output_text", outputtext) } - d.SetId(strconv.Itoa(getEvalHost.ConfigID)) + if err := d.Set("config_id", getEvalHost.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getEvalHost.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d", getEvalHost.ConfigID, getEvalHost.Version)) return nil } @@ -93,19 +118,34 @@ func resourceEvalHostDelete(ctx context.Context, d *schema.ResourceData, m inter logger := meta.Log("APPSEC", "resourceEvalHostRemove") removeEvalHost := appsec.RemoveEvalHostRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeEvalHost.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeEvalHost.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeEvalHost.Version = version + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEvalHost.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEvalHost.Version = version } - removeEvalHost.Version = version - hn := make([]string, 0, 1) removeEvalHost.Hostnames = hn @@ -125,19 +165,34 @@ func resourceEvalHostUpdate(ctx context.Context, d *schema.ResourceData, m inter logger := meta.Log("APPSEC", "resourceEvalHostUpdate") updateEvalHost := appsec.UpdateEvalHostRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateEvalHost.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateEvalHost.Version = version + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalHost.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalHost.Version = version } - updateEvalHost.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateEvalHost.Version = version - hostnames := d.Get("hostnames").([]interface{}) hn := make([]string, 0, len(hostnames)) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go index afe4023ec..62efd1956 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_host_test.go @@ -48,7 +48,7 @@ func TestAccAkamaiEvalHost_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResEvalHost/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_eval_hostnames.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_eval_hostnames.test", "id", "43253:7"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host.go b/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host.go index ccab73d5b..a5ef6d941 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host.go @@ -3,7 +3,9 @@ package appsec import ( "context" "errors" + "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -54,19 +56,34 @@ func resourceEvalProtectHostRead(ctx context.Context, d *schema.ResourceData, m logger := meta.Log("APPSEC", "resourceEvalProtectHostRead") getEvalProtectHost := appsec.GetEvalProtectHostRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEvalProtectHost.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getEvalProtectHost.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getEvalProtectHost.Version = version + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalProtectHost.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalProtectHost.Version = version } - getEvalProtectHost.Version = version - evalprotecthost, err := client.GetEvalProtectHost(ctx, getEvalProtectHost) if err != nil { logger.Errorf("calling 'getEvalProtectHost': %s", err.Error()) @@ -81,7 +98,15 @@ func resourceEvalProtectHostRead(ctx context.Context, d *schema.ResourceData, m d.Set("output_text", outputtext) } - d.SetId(strconv.Itoa(getEvalProtectHost.ConfigID)) + if err := d.Set("config_id", getEvalProtectHost.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getEvalProtectHost.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d", getEvalProtectHost.ConfigID, getEvalProtectHost.Version)) return nil } @@ -97,19 +122,34 @@ func resourceEvalProtectHostUpdate(ctx context.Context, d *schema.ResourceData, logger := meta.Log("APPSEC", "resourceEvalProtectHostUpdate") updateEvalProtectHost := appsec.UpdateEvalProtectHostRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateEvalProtectHost.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateEvalProtectHost.Version = version + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalProtectHost.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalProtectHost.Version = version } - updateEvalProtectHost.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateEvalProtectHost.Version = version - hostnames := d.Get("hostnames").([]interface{}) hn := make([]string, 0, len(hostnames)) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host_test.go index ad76e5e4c..1cb13757b 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_protect_host_test.go @@ -39,7 +39,7 @@ func TestAccAkamaiEvalProtectHost_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResEvalProtectHost/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_eval_protect_host.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_eval_protect_host.test", "id", "43253:7"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action.go index b0d78ffb8..916716253 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -62,31 +63,54 @@ func resourceEvalRuleActionRead(ctx context.Context, d *schema.ResourceData, m i logger := meta.Log("APPSEC", "resourceEvalRuleActionRead") getEvalRuleAction := appsec.GetEvalRuleActionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEvalRuleAction.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getEvalRuleAction.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEvalRuleAction.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getEvalRuleAction.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEvalRuleAction.PolicyID = policyid + policyid := s[2] + getEvalRuleAction.PolicyID = policyid - ruleid, err := tools.GetIntValue("rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEvalRuleAction.RuleID = ruleid + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + getEvalRuleAction.RuleID = ruleid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalRuleAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalRuleAction.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalRuleAction.PolicyID = policyid + + ruleid, err := tools.GetIntValue("rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalRuleAction.RuleID = ruleid + } evalruleaction, err := client.GetEvalRuleAction(ctx, getEvalRuleAction) if err != nil { logger.Warnf("calling 'getEvalRuleAction': %s", err.Error()) @@ -102,7 +126,23 @@ func resourceEvalRuleActionRead(ctx context.Context, d *schema.ResourceData, m i } } - d.SetId(strconv.Itoa(getEvalRuleAction.ConfigID)) + if err := d.Set("rule_id", getEvalRuleAction.RuleID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("config_id", getEvalRuleAction.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getEvalRuleAction.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getEvalRuleAction.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s:%d", getEvalRuleAction.ConfigID, getEvalRuleAction.Version, getEvalRuleAction.PolicyID, getEvalRuleAction.RuleID)) return nil } @@ -114,31 +154,54 @@ func resourceEvalRuleActionDelete(ctx context.Context, d *schema.ResourceData, m logger := meta.Log("APPSEC", "resourceEvalRuleActionRemove") removeEvalRuleAction := appsec.UpdateEvalRuleActionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeEvalRuleAction.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeEvalRuleAction.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeEvalRuleAction.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeEvalRuleAction.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeEvalRuleAction.PolicyID = policyid + policyid := s[2] + removeEvalRuleAction.PolicyID = policyid - ruleid, err := tools.GetIntValue("rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeEvalRuleAction.RuleID = ruleid + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeEvalRuleAction.RuleID = ruleid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEvalRuleAction.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEvalRuleAction.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEvalRuleAction.PolicyID = policyid + + ruleid, err := tools.GetIntValue("rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEvalRuleAction.RuleID = ruleid + } removeEvalRuleAction.Action = "none" _, erru := client.UpdateEvalRuleAction(ctx, removeEvalRuleAction) @@ -155,31 +218,54 @@ func resourceEvalRuleActionUpdate(ctx context.Context, d *schema.ResourceData, m logger := meta.Log("APPSEC", "resourceEvalRuleActionUpdate") updateEvalRuleAction := appsec.UpdateEvalRuleActionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateEvalRuleAction.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateEvalRuleAction.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateEvalRuleAction.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateEvalRuleAction.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateEvalRuleAction.PolicyID = policyid + policyid := s[2] + updateEvalRuleAction.PolicyID = policyid - ruleid, err := tools.GetIntValue("rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateEvalRuleAction.RuleID = ruleid + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateEvalRuleAction.RuleID = ruleid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalRuleAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalRuleAction.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalRuleAction.PolicyID = policyid + + ruleid, err := tools.GetIntValue("rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalRuleAction.RuleID = ruleid + } ruleaction, err := tools.GetStringValue("rule_action", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action_test.go index 26a3fbb3f..0c82ab76c 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action_test.go @@ -39,7 +39,7 @@ func TestAccAkamaiEvalRuleAction_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResEvalRuleAction/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_eval_rule_action.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_eval_rule_action.test", "id", "43253:7:AAAA_81230:699989"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go index 014625e89..bbdf0b95e 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -65,31 +66,54 @@ func resourceEvalRuleConditionExceptionRead(ctx context.Context, d *schema.Resou logger := meta.Log("APPSEC", "resourceEvalRuleConditionExceptionRead") getEvalRuleConditionException := appsec.GetEvalRuleConditionExceptionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEvalRuleConditionException.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getEvalRuleConditionException.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEvalRuleConditionException.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getEvalRuleConditionException.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEvalRuleConditionException.PolicyID = policyid + policyid := s[2] + getEvalRuleConditionException.PolicyID = policyid - ruleid, err := tools.GetIntValue("rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getEvalRuleConditionException.RuleID = ruleid + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + getEvalRuleConditionException.RuleID = ruleid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalRuleConditionException.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalRuleConditionException.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalRuleConditionException.PolicyID = policyid + + ruleid, err := tools.GetIntValue("rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getEvalRuleConditionException.RuleID = ruleid + } evalruleconditionexception, err := client.GetEvalRuleConditionException(ctx, getEvalRuleConditionException) if err != nil { logger.Warnf("calling 'getEvalRuleConditionException': %s", err.Error()) @@ -106,6 +130,30 @@ func resourceEvalRuleConditionExceptionRead(ctx context.Context, d *schema.Resou } } + if err == nil { + if err := d.Set("output_text", outputtext); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + } + + if err := d.Set("rule_id", getEvalRuleConditionException.RuleID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("config_id", getEvalRuleConditionException.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getEvalRuleConditionException.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getEvalRuleConditionException.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s:%d", getEvalRuleConditionException.ConfigID, getEvalRuleConditionException.Version, getEvalRuleConditionException.PolicyID, getEvalRuleConditionException.RuleID)) + d.SetId(strconv.Itoa(getEvalRuleConditionException.ConfigID)) return nil @@ -118,31 +166,54 @@ func resourceEvalRuleConditionExceptionDelete(ctx context.Context, d *schema.Res logger := meta.Log("APPSEC", "resourceEvalRuleConditionExceptionRemove") removeEvalRuleConditionException := appsec.RemoveEvalRuleConditionExceptionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeEvalRuleConditionException.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeEvalRuleConditionException.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeEvalRuleConditionException.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeEvalRuleConditionException.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeEvalRuleConditionException.PolicyID = policyid + policyid := s[2] + removeEvalRuleConditionException.PolicyID = policyid - ruleid, err := tools.GetIntValue("rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeEvalRuleConditionException.RuleID = ruleid + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeEvalRuleConditionException.RuleID = ruleid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEvalRuleConditionException.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEvalRuleConditionException.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEvalRuleConditionException.PolicyID = policyid + + ruleid, err := tools.GetIntValue("rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeEvalRuleConditionException.RuleID = ruleid + } logger.Errorf("calling 'RemoveEvalRuleConditionException': %v", removeEvalRuleConditionException) _, errd := client.RemoveEvalRuleConditionException(ctx, removeEvalRuleConditionException) @@ -168,31 +239,54 @@ func resourceEvalRuleConditionExceptionUpdate(ctx context.Context, d *schema.Res jsonPayloadRaw := []byte(jsonpostpayload.(string)) rawJSON := (json.RawMessage)(jsonPayloadRaw) updateEvalRuleConditionException.JsonPayloadRaw = rawJSON + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateEvalRuleConditionException.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateEvalRuleConditionException.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateEvalRuleConditionException.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateEvalRuleConditionException.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateEvalRuleConditionException.PolicyID = policyid + policyid := s[2] + updateEvalRuleConditionException.PolicyID = policyid - ruleid, err := tools.GetIntValue("rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateEvalRuleConditionException.RuleID = ruleid + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateEvalRuleConditionException.RuleID = ruleid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalRuleConditionException.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalRuleConditionException.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalRuleConditionException.PolicyID = policyid + + ruleid, err := tools.GetIntValue("rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateEvalRuleConditionException.RuleID = ruleid + } _, erru := client.UpdateEvalRuleConditionException(ctx, updateEvalRuleConditionException) if erru != nil { logger.Warnf("calling 'updateEvalRuleConditionException': %s", erru.Error()) diff --git a/pkg/providers/appsec/resource_akamai_appsec_ip_geo.go b/pkg/providers/appsec/resource_akamai_appsec_ip_geo.go index 405563f1d..3a2d16083 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_ip_geo.go +++ b/pkg/providers/appsec/resource_akamai_appsec_ip_geo.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -77,25 +78,43 @@ func resourceIPGeoRead(ctx context.Context, d *schema.ResourceData, m interface{ logger := meta.Log("APPSEC", "resourceIPGeoRead") getIPGeo := appsec.GetIPGeoRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getIPGeo.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getIPGeo.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getIPGeo.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getIPGeo.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getIPGeo.PolicyID = policyid + policyid := s[2] + getIPGeo.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getIPGeo.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getIPGeo.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getIPGeo.PolicyID = policyid + } ipgeo, err := client.GetIPGeo(ctx, getIPGeo) if err != nil { logger.Errorf("calling 'getIPGeo': %s", err.Error()) @@ -112,7 +131,19 @@ func resourceIPGeoRead(ctx context.Context, d *schema.ResourceData, m interface{ } } - d.SetId(strconv.Itoa(getIPGeo.ConfigID)) + if err := d.Set("config_id", getIPGeo.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getIPGeo.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getIPGeo.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s", getIPGeo.ConfigID, getIPGeo.Version, getIPGeo.PolicyID)) return nil } @@ -124,25 +155,43 @@ func resourceIPGeoDelete(ctx context.Context, d *schema.ResourceData, m interfac logger := meta.Log("APPSEC", "resourceIPGeoDelete") updatePolicyProtections := appsec.UpdateNetworkLayerProtectionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updatePolicyProtections.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updatePolicyProtections.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updatePolicyProtections.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updatePolicyProtections.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updatePolicyProtections.PolicyID = policyid + policyid := s[2] + updatePolicyProtections.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updatePolicyProtections.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updatePolicyProtections.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updatePolicyProtections.PolicyID = policyid + } updatePolicyProtections.ApplyNetworkLayerControls = false logger.Errorf("calling 'resourceIPGeoDelete': %v", updatePolicyProtections) @@ -161,25 +210,43 @@ func resourceIPGeoUpdate(ctx context.Context, d *schema.ResourceData, m interfac logger := meta.Log("APPSEC", "resourceIPGeoUpdate") updateIPGeo := appsec.UpdateIPGeoRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateIPGeo.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateIPGeo.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateIPGeo.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateIPGeo.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateIPGeo.PolicyID = policyid + policyid := s[2] + updateIPGeo.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateIPGeo.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateIPGeo.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateIPGeo.PolicyID = policyid + } mode, err := tools.GetStringValue("mode", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_penalty_box.go b/pkg/providers/appsec/resource_akamai_appsec_penalty_box.go index 0a72f81dc..92523ce78 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_penalty_box.go +++ b/pkg/providers/appsec/resource_akamai_appsec_penalty_box.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -67,25 +68,43 @@ func resourcePenaltyBoxRead(ctx context.Context, d *schema.ResourceData, m inter logger := meta.Log("APPSEC", "resourcePenaltyBoxRead") getPenaltyBox := appsec.GetPenaltyBoxRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getPenaltyBox.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getPenaltyBox.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getPenaltyBox.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getPenaltyBox.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getPenaltyBox.PolicyID = policyid + policyid := s[2] + getPenaltyBox.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getPenaltyBox.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getPenaltyBox.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getPenaltyBox.PolicyID = policyid + } penaltybox, err := client.GetPenaltyBox(ctx, getPenaltyBox) if err != nil { logger.Errorf("calling 'getPenaltyBox': %s", err.Error()) @@ -102,7 +121,19 @@ func resourcePenaltyBoxRead(ctx context.Context, d *schema.ResourceData, m inter } } - d.SetId(strconv.Itoa(getPenaltyBox.ConfigID)) + if err := d.Set("config_id", getPenaltyBox.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getPenaltyBox.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getPenaltyBox.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s", getPenaltyBox.ConfigID, getPenaltyBox.Version, getPenaltyBox.PolicyID)) return nil } diff --git a/pkg/providers/appsec/resource_akamai_appsec_rate_policy_action.go b/pkg/providers/appsec/resource_akamai_appsec_rate_policy_action.go index 3da8ea4d2..98ea1b054 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rate_policy_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rate_policy_action.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -62,31 +63,54 @@ func resourceRatePolicyActionRead(ctx context.Context, d *schema.ResourceData, m logger := meta.Log("APPSEC", "resourceRatePolicyActionRead") getRatePolicyAction := appsec.GetRatePolicyActionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRatePolicyAction.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRatePolicyAction.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRatePolicyAction.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRatePolicyAction.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRatePolicyAction.PolicyID = policyid + policyid := s[2] + getRatePolicyAction.PolicyID = policyid - ratepolicyid, err := tools.GetIntValue("rate_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRatePolicyAction.ID = ratepolicyid + ratepolicyid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRatePolicyAction.ID = ratepolicyid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRatePolicyAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRatePolicyAction.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRatePolicyAction.PolicyID = policyid + ratepolicyid, err := tools.GetIntValue("rate_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRatePolicyAction.ID = ratepolicyid + } ratepolicyaction, err := client.GetRatePolicyAction(ctx, getRatePolicyAction) if err != nil { logger.Errorf("calling 'getRatePolicyAction': %s", err.Error()) @@ -106,7 +130,20 @@ func resourceRatePolicyActionRead(ctx context.Context, d *schema.ResourceData, m return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(configval.ID)) + if err := d.Set("config_id", getRatePolicyAction.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getRatePolicyAction.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getRatePolicyAction.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s:%d", getRatePolicyAction.ConfigID, getRatePolicyAction.Version, getRatePolicyAction.PolicyID, getRatePolicyAction.ID)) + } } @@ -119,31 +156,54 @@ func resourceRatePolicyActionDelete(ctx context.Context, d *schema.ResourceData, logger := meta.Log("APPSEC", "resourceRatePolicyActionRemove") updateRatePolicyAction := appsec.UpdateRatePolicyActionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRatePolicyAction.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRatePolicyAction.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRatePolicyAction.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRatePolicyAction.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRatePolicyAction.PolicyID = policyid + policyid := s[2] + updateRatePolicyAction.PolicyID = policyid - ratepolicyid, err := tools.GetIntValue("rate_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRatePolicyAction.RatePolicyID = ratepolicyid + ratepolicyid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRatePolicyAction.RatePolicyID = ratepolicyid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRatePolicyAction.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRatePolicyAction.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRatePolicyAction.PolicyID = policyid + + ratepolicyid, err := tools.GetIntValue("rate_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRatePolicyAction.RatePolicyID = ratepolicyid + } updateRatePolicyAction.Ipv4Action = "none" updateRatePolicyAction.Ipv6Action = "none" @@ -164,31 +224,54 @@ func resourceRatePolicyActionUpdate(ctx context.Context, d *schema.ResourceData, logger := meta.Log("APPSEC", "resourceRatePolicyActionUpdate") updateRatePolicyAction := appsec.UpdateRatePolicyActionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRatePolicyAction.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRatePolicyAction.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRatePolicyAction.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRatePolicyAction.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRatePolicyAction.PolicyID = policyid + policyid := s[2] + updateRatePolicyAction.PolicyID = policyid - ratepolicyid, err := tools.GetIntValue("rate_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRatePolicyAction.RatePolicyID = ratepolicyid + ratepolicyid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRatePolicyAction.RatePolicyID = ratepolicyid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRatePolicyAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRatePolicyAction.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRatePolicyAction.PolicyID = policyid + + ratepolicyid, err := tools.GetIntValue("rate_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRatePolicyAction.RatePolicyID = ratepolicyid + } ipv4action, err := tools.GetStringValue("ipv4_action", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_rate_protection.go b/pkg/providers/appsec/resource_akamai_appsec_rate_protection.go index 152bfd900..680dca745 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rate_protection.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rate_protection.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -57,25 +58,43 @@ func resourceRateProtectionRead(ctx context.Context, d *schema.ResourceData, m i logger := meta.Log("APPSEC", "resourceRateProtectionRead") getRateProtection := appsec.GetRateProtectionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRateProtection.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRateProtection.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRateProtection.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRateProtection.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRateProtection.PolicyID = policyid + policyid := s[2] + getRateProtection.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRateProtection.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRateProtection.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRateProtection.PolicyID = policyid + } rateprotection, err := client.GetRateProtection(ctx, getRateProtection) if err != nil { logger.Errorf("calling 'getRateProtection': %s", err.Error()) @@ -96,7 +115,18 @@ func resourceRateProtectionRead(ctx context.Context, d *schema.ResourceData, m i return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(getRateProtection.ConfigID)) + if err := d.Set("config_id", getRateProtection.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getRateProtection.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getRateProtection.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%s", getRateProtection.ConfigID, getRateProtection.Version, getRateProtection.PolicyID)) return nil } @@ -108,25 +138,43 @@ func resourceRateProtectionDelete(ctx context.Context, d *schema.ResourceData, m logger := meta.Log("APPSEC", "resourceRateProtectionRemove") removeRateProtection := appsec.UpdateRateProtectionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeRateProtection.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeRateProtection.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeRateProtection.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeRateProtection.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeRateProtection.PolicyID = policyid + policyid := s[2] + removeRateProtection.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeRateProtection.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeRateProtection.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeRateProtection.PolicyID = policyid + } removeRateProtection.ApplyRateControls = false _, errd := client.UpdateRateProtection(ctx, removeRateProtection) @@ -144,25 +192,43 @@ func resourceRateProtectionUpdate(ctx context.Context, d *schema.ResourceData, m logger := meta.Log("APPSEC", "resourceRateProtectionUpdate") updateRateProtection := appsec.UpdateRateProtectionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRateProtection.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRateProtection.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRateProtection.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRateProtection.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRateProtection.PolicyID = policyid + policyid := s[2] + updateRateProtection.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRateProtection.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRateProtection.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRateProtection.PolicyID = policyid + } applyratecontrols, err := tools.GetBoolValue("enabled", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go index 15849506c..3bada4796 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go @@ -3,7 +3,9 @@ package appsec import ( "context" "errors" + "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -56,25 +58,43 @@ func resourceReputationAnalysisUpdate(ctx context.Context, d *schema.ResourceDat logger := meta.Log("APPSEC", "resourceReputationAnalysisUpdate") updateReputationAnalysis := appsec.UpdateReputationAnalysisRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateReputationAnalysis.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateReputationAnalysis.Version = version - - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateReputationAnalysis.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateReputationAnalysis.Version = version + + policyid := s[2] + updateReputationAnalysis.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationAnalysis.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationAnalysis.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationAnalysis.PolicyID = policyid } - updateReputationAnalysis.PolicyID = policyid - forwardToHttpHeader, err := tools.GetBoolValue("forward_to_http_header", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) @@ -92,7 +112,8 @@ func resourceReputationAnalysisUpdate(ctx context.Context, d *schema.ResourceDat logger.Errorf("calling 'updateReputationAnalysis': %s", erru.Error()) return diag.FromErr(erru) } - d.SetId(strconv.Itoa(updateReputationAnalysis.ConfigID)) + + d.SetId(fmt.Sprintf("%d:%d:%s", updateReputationAnalysis.ConfigID, updateReputationAnalysis.Version, updateReputationAnalysis.PolicyID)) return resourceReputationAnalysisRead(ctx, d, m) } @@ -103,25 +124,43 @@ func resourceReputationAnalysisDelete(ctx context.Context, d *schema.ResourceDat logger := meta.Log("APPSEC", "resourceReputationAnalysisRemove") RemoveReputationAnalysis := appsec.RemoveReputationAnalysisRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - RemoveReputationAnalysis.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + RemoveReputationAnalysis.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + RemoveReputationAnalysis.Version = version + + policyid := s[2] + RemoveReputationAnalysis.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + RemoveReputationAnalysis.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + RemoveReputationAnalysis.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + RemoveReputationAnalysis.PolicyID = policyid } - RemoveReputationAnalysis.Version = version - - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - RemoveReputationAnalysis.PolicyID = policyid - RemoveReputationAnalysis.ForwardToHTTPHeader = false RemoveReputationAnalysis.ForwardSharedIPToHTTPHeaderAndSIEM = false @@ -145,32 +184,61 @@ func resourceReputationAnalysisRead(ctx context.Context, d *schema.ResourceData, logger := meta.Log("APPSEC", "resourceReputationAnalysisRead") getReputationAnalysis := appsec.GetReputationAnalysisRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getReputationAnalysis.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getReputationAnalysis.Version = version + + policyid := s[2] + getReputationAnalysis.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationAnalysis.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationAnalysis.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationAnalysis.PolicyID = policyid + } + _, errg := client.GetReputationAnalysis(ctx, getReputationAnalysis) + if errg != nil { + logger.Errorf("calling 'getReputationAnalysis': %s", errg.Error()) + return diag.FromErr(errg) } - getReputationAnalysis.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if err := d.Set("config_id", getReputationAnalysis.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - getReputationAnalysis.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if err := d.Set("version", getReputationAnalysis.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - getReputationAnalysis.PolicyID = policyid - getresp, errg := client.GetReputationAnalysis(ctx, getReputationAnalysis) - if errg != nil { - logger.Errorf("calling 'getReputationAnalysis': %s", errg.Error()) - return diag.FromErr(errg) + if err := d.Set("security_policy_id", getReputationAnalysis.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - logger.Errorf("calling 'getReputationAnalysis': %v", getresp) - d.SetId(strconv.Itoa(getReputationAnalysis.ConfigID)) + d.SetId(fmt.Sprintf("%d:%d:%s", getReputationAnalysis.ConfigID, getReputationAnalysis.Version, getReputationAnalysis.PolicyID)) return nil } diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go index a1e915ea8..ec4cac6bb 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go @@ -48,13 +48,13 @@ func TestAccAkamaiReputationAnalysis_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResReputationAnalysis/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_reputation_analysis.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_reputation_analysis.test", "id", "43253:12:AAAA_81230"), ), }, { Config: loadFixtureString("testdata/TestResReputationAnalysis/update_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_reputation_analysis.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_reputation_analysis.test", "id", "43253:12:AAAA_81230"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_profile_action.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_profile_action.go index ea6bd1efc..341c116ec 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_profile_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_profile_action.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -58,42 +59,78 @@ func resourceReputationProfileActionRead(ctx context.Context, d *schema.Resource logger := meta.Log("APPSEC", "resourceReputationProfileActionRead") getReputationProfileAction := appsec.GetReputationProfileActionRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getReputationProfileAction.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getReputationProfileAction.Version = version + + policyid := s[2] + getReputationProfileAction.PolicyID = policyid + + reputationprofileid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + getReputationProfileAction.ReputationProfileID = reputationprofileid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationProfileAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationProfileAction.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationProfileAction.PolicyID = policyid + + reputationprofileid, err := tools.GetIntValue("reputation_profile_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationProfileAction.ReputationProfileID = reputationprofileid } - getReputationProfileAction.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + resp, errr := client.GetReputationProfileAction(ctx, getReputationProfileAction) + if errr != nil { + logger.Errorf("calling 'getReputationProfileAction': %s", errr.Error()) + return diag.FromErr(errr) } - getReputationProfileAction.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if err := d.Set("action", resp.Action); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - getReputationProfileAction.PolicyID = policyid - reputationprofileid, err := tools.GetIntValue("reputation_profile_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if err := d.Set("config_id", getReputationProfileAction.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - getReputationProfileAction.ReputationProfileID = reputationprofileid - resp, errr := client.GetReputationProfileAction(ctx, getReputationProfileAction) - if errr != nil { - logger.Errorf("calling 'getReputationProfileAction': %s", errr.Error()) - return diag.FromErr(errr) + if err := d.Set("version", getReputationProfileAction.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - if err := d.Set("action", resp.Action); err != nil { + if err := d.Set("security_policy_id", getReputationProfileAction.PolicyID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(getReputationProfileAction.ConfigID)) + d.SetId(fmt.Sprintf("%d:%d:%s:%d", getReputationProfileAction.ConfigID, getReputationProfileAction.Version, getReputationProfileAction.PolicyID, getReputationProfileAction.ReputationProfileID)) return nil } @@ -104,31 +141,55 @@ func resourceReputationProfileActionDelete(ctx context.Context, d *schema.Resour logger := meta.Log("APPSEC", "resourceReputationProfileActionRemove") removeReputationProfileAction := appsec.UpdateReputationProfileActionRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeReputationProfileAction.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeReputationProfileAction.Version = version - - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeReputationProfileAction.PolicyID = policyid - - reputationprofileid, err := tools.GetIntValue("reputation_profile_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeReputationProfileAction.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeReputationProfileAction.Version = version + + policyid := s[2] + removeReputationProfileAction.PolicyID = policyid + + reputationprofileid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeReputationProfileAction.ReputationProfileID = reputationprofileid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeReputationProfileAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeReputationProfileAction.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeReputationProfileAction.PolicyID = policyid + + reputationprofileid, err := tools.GetIntValue("reputation_profile_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeReputationProfileAction.ReputationProfileID = reputationprofileid } - removeReputationProfileAction.ReputationProfileID = reputationprofileid - removeReputationProfileAction.Action = "none" _, errd := client.UpdateReputationProfileAction(ctx, removeReputationProfileAction) @@ -148,31 +209,55 @@ func resourceReputationProfileActionUpdate(ctx context.Context, d *schema.Resour logger := meta.Log("APPSEC", "resourceReputationProfileActionUpdate") updateReputationProfileAction := appsec.UpdateReputationProfileActionRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateReputationProfileAction.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateReputationProfileAction.Version = version + + policyid := s[2] + updateReputationProfileAction.PolicyID = policyid + + reputationprofileid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateReputationProfileAction.ReputationProfileID = reputationprofileid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationProfileAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationProfileAction.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationProfileAction.PolicyID = policyid + + reputationprofileid, err := tools.GetIntValue("reputation_profile_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationProfileAction.ReputationProfileID = reputationprofileid } - updateReputationProfileAction.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateReputationProfileAction.Version = version - - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateReputationProfileAction.PolicyID = policyid - - reputationprofileid, err := tools.GetIntValue("reputation_profile_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateReputationProfileAction.ReputationProfileID = reputationprofileid - action, err := tools.GetStringValue("action", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) @@ -184,6 +269,7 @@ func resourceReputationProfileActionUpdate(ctx context.Context, d *schema.Resour logger.Errorf("calling 'updateReputationProfileAction': %s", erru.Error()) return diag.FromErr(erru) } - d.SetId(strconv.Itoa(reputationprofileid)) + d.SetId(fmt.Sprintf("%d:%d:%s:%d", updateReputationProfileAction.ConfigID, updateReputationProfileAction.Version, updateReputationProfileAction.PolicyID, updateReputationProfileAction.ReputationProfileID)) + return resourceReputationProfileActionRead(ctx, d, m) } diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_profile_action_test.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_profile_action_test.go index e8146a5be..f19d81ddf 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_profile_action_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_profile_action_test.go @@ -48,7 +48,7 @@ func TestAccAkamaiReputationProfileAction_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResReputationProfileAction/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_reputation_profile_action.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_reputation_profile_action.test", "id", "43253:7:AAAA_81230:1685099"), ), ExpectNonEmptyPlan: true, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_protection.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_protection.go index 6606fa67c..ccac392e5 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_protection.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_protection.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -57,25 +58,43 @@ func resourceReputationProtectionRead(ctx context.Context, d *schema.ResourceDat logger := meta.Log("APPSEC", "resourceReputationProtectionRead") getReputationProtection := appsec.GetReputationProtectionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getReputationProtection.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getReputationProtection.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getReputationProtection.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getReputationProtection.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getReputationProtection.PolicyID = policyid + policyid := s[2] + getReputationProtection.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationProtection.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationProtection.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getReputationProtection.PolicyID = policyid + } reputationprotection, err := client.GetReputationProtection(ctx, getReputationProtection) if err != nil { logger.Errorf("calling 'getReputationProtection': %s", err.Error()) @@ -96,7 +115,18 @@ func resourceReputationProtectionRead(ctx context.Context, d *schema.ResourceDat return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(getReputationProtection.ConfigID)) + if err := d.Set("config_id", getReputationProtection.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getReputationProtection.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getReputationProtection.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%s", getReputationProtection.ConfigID, getReputationProtection.Version, getReputationProtection.PolicyID)) return nil } @@ -108,25 +138,43 @@ func resourceReputationProtectionDelete(ctx context.Context, d *schema.ResourceD logger := meta.Log("APPSEC", "resourceReputationProtectionRemove") removeReputationProtection := appsec.UpdateReputationProtectionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeReputationProtection.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeReputationProtection.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeReputationProtection.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeReputationProtection.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeReputationProtection.PolicyID = policyid + policyid := s[2] + removeReputationProtection.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeReputationProtection.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeReputationProtection.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeReputationProtection.PolicyID = policyid + } removeReputationProtection.ApplyReputationControls = false _, errd := client.UpdateReputationProtection(ctx, removeReputationProtection) @@ -145,25 +193,43 @@ func resourceReputationProtectionUpdate(ctx context.Context, d *schema.ResourceD logger := meta.Log("APPSEC", "resourceReputationProtectionUpdate") updateReputationProtection := appsec.UpdateReputationProtectionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateReputationProtection.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateReputationProtection.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateReputationProtection.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateReputationProtection.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateReputationProtection.PolicyID = policyid + policyid := s[2] + updateReputationProtection.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationProtection.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationProtection.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateReputationProtection.PolicyID = policyid + } applyreputationcontrols, err := tools.GetBoolValue("enabled", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_rule_action.go b/pkg/providers/appsec/resource_akamai_appsec_rule_action.go index 7add8387a..a8b092fd7 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rule_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rule_action.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -62,31 +63,54 @@ func resourceRuleActionRead(ctx context.Context, d *schema.ResourceData, m inter logger := meta.Log("APPSEC", "resourceRuleActionRead") getRuleAction := appsec.GetRuleActionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRuleAction.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRuleAction.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRuleAction.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRuleAction.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRuleAction.PolicyID = policyid + policyid := s[2] + getRuleAction.PolicyID = policyid - ruleid, err := tools.GetIntValue("rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRuleAction.RuleID = ruleid + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRuleAction.RuleID = ruleid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRuleAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRuleAction.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRuleAction.PolicyID = policyid + + ruleid, err := tools.GetIntValue("rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRuleAction.RuleID = ruleid + } ruleaction, err := client.GetRuleAction(ctx, getRuleAction) if err != nil { logger.Errorf("calling 'getRuleAction': %s", err.Error()) @@ -103,7 +127,19 @@ func resourceRuleActionRead(ctx context.Context, d *schema.ResourceData, m inter } } - d.SetId(strconv.Itoa(getRuleAction.ConfigID)) + if err := d.Set("config_id", getRuleAction.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getRuleAction.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getRuleAction.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s:%d", getRuleAction.ConfigID, getRuleAction.Version, getRuleAction.PolicyID, getRuleAction.RuleID)) return nil } @@ -115,31 +151,54 @@ func resourceRuleActionDelete(ctx context.Context, d *schema.ResourceData, m int logger := meta.Log("APPSEC", "resourceRuleActionRemove") updateRuleAction := appsec.UpdateRuleActionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRuleAction.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRuleAction.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRuleAction.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRuleAction.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRuleAction.PolicyID = policyid + policyid := s[2] + updateRuleAction.PolicyID = policyid - ruleid, err := tools.GetIntValue("rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRuleAction.RuleID = ruleid + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRuleAction.RuleID = ruleid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRuleAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRuleAction.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRuleAction.PolicyID = policyid + ruleid, err := tools.GetIntValue("rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRuleAction.RuleID = ruleid + } updateRuleAction.Action = "none" _, erru := client.UpdateRuleAction(ctx, updateRuleAction) @@ -158,31 +217,54 @@ func resourceRuleActionUpdate(ctx context.Context, d *schema.ResourceData, m int logger := meta.Log("APPSEC", "resourceRuleActionUpdate") updateRuleAction := appsec.UpdateRuleActionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRuleAction.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRuleAction.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRuleAction.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRuleAction.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRuleAction.PolicyID = policyid + policyid := s[2] + updateRuleAction.PolicyID = policyid - ruleid, err := tools.GetIntValue("rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRuleAction.RuleID = ruleid + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRuleAction.RuleID = ruleid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRuleAction.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRuleAction.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRuleAction.PolicyID = policyid + + ruleid, err := tools.GetIntValue("rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRuleAction.RuleID = ruleid + } ruleaction, err := tools.GetStringValue("rule_action", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_rule_action_test.go b/pkg/providers/appsec/resource_akamai_appsec_rule_action_test.go index 1e5b12fb5..f8a9c5809 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rule_action_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rule_action_test.go @@ -39,7 +39,7 @@ func TestAccAkamaiRuleAction_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResRuleAction/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_rule_action.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_rule_action.test", "id", "43253:7:AAAA_81230:699989"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go index dc4cfce3d..8aa77c6d6 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -65,31 +66,54 @@ func resourceRuleConditionExceptionRead(ctx context.Context, d *schema.ResourceD logger := meta.Log("APPSEC", "resourceRuleConditionExceptionRead") getRuleConditionException := appsec.GetRuleConditionExceptionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRuleConditionException.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRuleConditionException.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRuleConditionException.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRuleConditionException.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRuleConditionException.PolicyID = policyid + policyid := s[2] + getRuleConditionException.PolicyID = policyid - ruleid, err := tools.GetIntValue("rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getRuleConditionException.RuleID = ruleid + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + getRuleConditionException.RuleID = ruleid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRuleConditionException.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRuleConditionException.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRuleConditionException.PolicyID = policyid + ruleid, err := tools.GetIntValue("rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getRuleConditionException.RuleID = ruleid + } ruleconditionexception, err := client.GetRuleConditionException(ctx, getRuleConditionException) if err != nil { logger.Errorf("calling 'getRuleConditionException': %s", err.Error()) @@ -116,7 +140,19 @@ func resourceRuleConditionExceptionRead(ctx context.Context, d *schema.ResourceD return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(getRuleConditionException.ConfigID)) + if err := d.Set("config_id", getRuleConditionException.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getRuleConditionException.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getRuleConditionException.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s:%d", getRuleConditionException.ConfigID, getRuleConditionException.Version, getRuleConditionException.PolicyID, getRuleConditionException.RuleID)) return nil } @@ -128,33 +164,55 @@ func resourceRuleConditionExceptionDelete(ctx context.Context, d *schema.Resourc logger := meta.Log("APPSEC", "resourceRuleConditionExceptionRemove") removeRuleConditionException := appsec.RemoveRuleConditionExceptionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeRuleConditionException.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeRuleConditionException.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeRuleConditionException.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeRuleConditionException.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeRuleConditionException.PolicyID = policyid + policyid := s[2] + removeRuleConditionException.PolicyID = policyid - ruleid, err := tools.GetIntValue("rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeRuleConditionException.RuleID = ruleid + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeRuleConditionException.RuleID = ruleid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeRuleConditionException.ConfigID = configid - logger.Errorf("calling 'RemoveRuleConditionException': %v", removeRuleConditionException) + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeRuleConditionException.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeRuleConditionException.PolicyID = policyid + + ruleid, err := tools.GetIntValue("rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeRuleConditionException.RuleID = ruleid + } _, errd := client.RemoveRuleConditionException(ctx, removeRuleConditionException) if errd != nil { logger.Errorf("calling 'RemoveRuleConditionException': %s", errd.Error()) @@ -178,31 +236,54 @@ func resourceRuleConditionExceptionUpdate(ctx context.Context, d *schema.Resourc jsonPayloadRaw := []byte(jsonpostpayload.(string)) rawJSON := (json.RawMessage)(jsonPayloadRaw) updateRuleConditionException.JsonPayloadRaw = rawJSON + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRuleConditionException.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRuleConditionException.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRuleConditionException.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRuleConditionException.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateRuleConditionException.PolicyID = policyid + policyid := s[2] + updateRuleConditionException.PolicyID = policyid - ruleid, err := tools.GetIntValue("rule_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + ruleid, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateRuleConditionException.RuleID = ruleid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRuleConditionException.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRuleConditionException.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRuleConditionException.PolicyID = policyid + + ruleid, err := tools.GetIntValue("rule_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateRuleConditionException.RuleID = ruleid } - updateRuleConditionException.RuleID = ruleid - logger.Errorf("calling 'updateRuleConditionException': %s", updateRuleConditionException) _, erru := client.UpdateRuleConditionException(ctx, updateRuleConditionException) if erru != nil { logger.Errorf("calling 'updateRuleConditionException': %s", erru.Error()) diff --git a/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception_test.go b/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception_test.go index 345eec4d7..f9937b984 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception_test.go @@ -48,7 +48,7 @@ func TestAccAkamaiRuleConditionException_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResRuleConditionException/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_rule_condition_exception.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_rule_condition_exception.test", "id", "43253:7:AAAA_81230:12345"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_security_policy.go b/pkg/providers/appsec/resource_akamai_appsec_security_policy.go index fd45079d0..52a150611 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_security_policy.go +++ b/pkg/providers/appsec/resource_akamai_appsec_security_policy.go @@ -108,7 +108,6 @@ func resourceSecurityPolicyCreate(ctx context.Context, d *schema.ResourceData, m return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(spcr.PolicyID) d.SetId(fmt.Sprintf("%d:%d:%s", createSecurityPolicy.ConfigID, createSecurityPolicy.Version, spcr.PolicyID)) return resourceSecurityPolicyRead(ctx, d, m) @@ -292,6 +291,14 @@ func resourceSecurityPolicyRead(ctx context.Context, d *schema.ResourceData, m i return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("config_id", getSecurityPolicy.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getSecurityPolicy.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%s", getSecurityPolicy.ConfigID, getSecurityPolicy.Version, securitypolicy.PolicyID)) return nil diff --git a/pkg/providers/appsec/resource_akamai_appsec_security_policy_protections.go b/pkg/providers/appsec/resource_akamai_appsec_security_policy_protections.go index ad5a148d0..692c62b02 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_security_policy_protections.go +++ b/pkg/providers/appsec/resource_akamai_appsec_security_policy_protections.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -81,25 +82,43 @@ func resourcePolicyProtectionsRead(ctx context.Context, d *schema.ResourceData, logger := meta.Log("APPSEC", "resourcePolicyProtectionsRead") getPolicyProtections := appsec.GetPolicyProtectionsRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getPolicyProtections.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getPolicyProtections.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getPolicyProtections.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getPolicyProtections.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getPolicyProtections.PolicyID = policyid + policyid := s[2] + getPolicyProtections.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getPolicyProtections.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getPolicyProtections.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getPolicyProtections.PolicyID = policyid + } policyprotections, err := client.GetPolicyProtections(ctx, getPolicyProtections) if err != nil { logger.Errorf("calling 'getPolicyProtections': %s", err.Error()) @@ -116,7 +135,19 @@ func resourcePolicyProtectionsRead(ctx context.Context, d *schema.ResourceData, } } - d.SetId(strconv.Itoa(getPolicyProtections.ConfigID)) + if err := d.Set("config_id", getPolicyProtections.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getPolicyProtections.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getPolicyProtections.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s", getPolicyProtections.ConfigID, getPolicyProtections.Version, getPolicyProtections.PolicyID)) return nil } @@ -129,27 +160,49 @@ func resourcePolicyProtectionsDelete(ctx context.Context, d *schema.ResourceData updatePolicyProtections := appsec.UpdatePolicyProtectionsRequest{} removePolicyProtections := appsec.RemovePolicyProtectionsRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updatePolicyProtections.ConfigID = configid - removePolicyProtections.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updatePolicyProtections.ConfigID = configid + removePolicyProtections.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updatePolicyProtections.Version = version - removePolicyProtections.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updatePolicyProtections.Version = version + removePolicyProtections.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + policyid := s[2] + updatePolicyProtections.PolicyID = policyid + removePolicyProtections.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updatePolicyProtections.ConfigID = configid + removePolicyProtections.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updatePolicyProtections.Version = version + removePolicyProtections.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updatePolicyProtections.PolicyID = policyid + removePolicyProtections.PolicyID = policyid } - updatePolicyProtections.PolicyID = policyid - removePolicyProtections.PolicyID = policyid //TODO remove once API fixed in Jan updatePolicyProtections.ApplyApplicationLayerControls = true @@ -201,25 +254,43 @@ func resourcePolicyProtectionsUpdate(ctx context.Context, d *schema.ResourceData logger := meta.Log("APPSEC", "resourcePolicyProtectionsUpdate") updatePolicyProtections := appsec.UpdatePolicyProtectionsRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updatePolicyProtections.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updatePolicyProtections.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updatePolicyProtections.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updatePolicyProtections.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updatePolicyProtections.PolicyID = policyid + policyid := s[2] + updatePolicyProtections.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updatePolicyProtections.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updatePolicyProtections.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updatePolicyProtections.PolicyID = policyid + } applyapplicationlayercontrols, err := tools.GetBoolValue("apply_application_layer_controls", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_selected_hostname.go b/pkg/providers/appsec/resource_akamai_appsec_selected_hostname.go index 3c5e7ac56..40783d3f9 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_selected_hostname.go +++ b/pkg/providers/appsec/resource_akamai_appsec_selected_hostname.go @@ -129,19 +129,33 @@ func resourceSelectedHostnameUpdate(ctx context.Context, d *schema.ResourceData, logger := meta.Log("APPSEC", "resourceSelectedHostnameUpdate") updateSelectedHostname := appsec.UpdateSelectedHostnameRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSelectedHostname.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSelectedHostname.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSelectedHostname.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSelectedHostname.Version = version + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSelectedHostname.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSelectedHostname.Version = version + } mode := d.Get("mode").(string) hn := appsec.GetSelectedHostnamesRequest{} @@ -155,8 +169,8 @@ func resourceSelectedHostnameUpdate(ctx context.Context, d *schema.ResourceData, } getSelectedHostnames := appsec.GetSelectedHostnamesRequest{} - getSelectedHostnames.ConfigID = configid - getSelectedHostnames.Version = version + getSelectedHostnames.ConfigID = updateSelectedHostname.ConfigID + getSelectedHostnames.Version = updateSelectedHostname.Version selectedhostnames, err := client.GetSelectedHostnames(ctx, getSelectedHostnames) if err != nil { diff --git a/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go b/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go index 8e145b912..60420e7c0 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go +++ b/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go @@ -3,7 +3,9 @@ package appsec import ( "context" "errors" + "fmt" "strconv" + "strings" v2 "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -69,19 +71,33 @@ func resourceSiemSettingsRead(ctx context.Context, d *schema.ResourceData, m int logger := meta.Log("APPSEC", "resourceSiemSettingsRead") getSiemSettings := v2.GetSiemSettingsRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getSiemSettings.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getSiemSettings.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getSiemSettings.Version = version + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSiemSettings.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSiemSettings.Version = version } - getSiemSettings.Version = version - siemsettings, err := client.GetSiemSettings(ctx, getSiemSettings) if err != nil { logger.Errorf("calling 'getSiemSettings': %s", err.Error()) @@ -95,8 +111,16 @@ func resourceSiemSettingsRead(ctx context.Context, d *schema.ResourceData, m int if err == nil { d.Set("output_text", outputtext) } - //d.Set("enabled", siemsettings.ApplySlowPostControls) - d.SetId(strconv.Itoa(getSiemSettings.ConfigID)) + + if err := d.Set("config_id", getSiemSettings.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getSiemSettings.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d", getSiemSettings.ConfigID, getSiemSettings.Version)) return nil } @@ -108,19 +132,33 @@ func resourceSiemSettingsDelete(ctx context.Context, d *schema.ResourceData, m i logger := meta.Log("APPSEC", "resourceSiemSettingsUpdate") removeSiemSettings := v2.RemoveSiemSettingsRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeSiemSettings.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeSiemSettings.Version = version + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeSiemSettings.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeSiemSettings.Version = version } - removeSiemSettings.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeSiemSettings.Version = version - removeSiemSettings.EnableSiem = false siemID, err := tools.GetIntValue("siem_id", d) @@ -145,19 +183,33 @@ func resourceSiemSettingsUpdate(ctx context.Context, d *schema.ResourceData, m i logger := meta.Log("APPSEC", "resourceSiemSettingsUpdate") updateSiemSettings := v2.UpdateSiemSettingsRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSiemSettings.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSiemSettings.Version = version + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSiemSettings.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSiemSettings.Version = version } - updateSiemSettings.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSiemSettings.Version = version - enableSiem, err := tools.GetBoolValue("enable_siem", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go b/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go index 2b47d00c3..ad8341798 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go @@ -48,7 +48,7 @@ func TestAccAkamaiSiemSettings_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResSiemSettings/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_siem_settings.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_siem_settings.test", "id", "43253:7"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_slow_post_protection_setting.go b/pkg/providers/appsec/resource_akamai_appsec_slow_post_protection_setting.go index 4abec0104..53db9db57 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_slow_post_protection_setting.go +++ b/pkg/providers/appsec/resource_akamai_appsec_slow_post_protection_setting.go @@ -3,7 +3,9 @@ package appsec import ( "context" "errors" + "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -68,32 +70,62 @@ func resourceSlowPostProtectionSettingRead(ctx context.Context, d *schema.Resour logger := meta.Log("APPSEC", "resourceSlowPostProtectionSettingRead") getSlowPostProtectionSetting := appsec.GetSlowPostProtectionSettingRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getSlowPostProtectionSetting.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getSlowPostProtectionSetting.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getSlowPostProtectionSetting.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getSlowPostProtectionSetting.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getSlowPostProtectionSetting.PolicyID = policyid + policyid := s[2] + getSlowPostProtectionSetting.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSlowPostProtectionSetting.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSlowPostProtectionSetting.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSlowPostProtectionSetting.PolicyID = policyid + } _, errg := client.GetSlowPostProtectionSetting(ctx, getSlowPostProtectionSetting) if errg != nil { logger.Errorf("calling 'getSlowPostProtectionSetting': %s", errg.Error()) return diag.FromErr(errg) } - d.SetId(strconv.Itoa(getSlowPostProtectionSetting.ConfigID)) + if err := d.Set("config_id", getSlowPostProtectionSetting.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getSlowPostProtectionSetting.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getSlowPostProtectionSetting.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s", getSlowPostProtectionSetting.ConfigID, getSlowPostProtectionSetting.Version, getSlowPostProtectionSetting.PolicyID)) return nil } @@ -105,28 +137,45 @@ func resourceSlowPostProtectionSettingDelete(ctx context.Context, d *schema.Reso logger := meta.Log("APPSEC", "resourceSlowPostProtectionSettingDelete") updateSlowPostProtection := appsec.UpdateSlowPostProtectionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSlowPostProtection.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSlowPostProtection.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSlowPostProtection.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSlowPostProtection.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSlowPostProtection.PolicyID = policyid + policyid := s[2] + updateSlowPostProtection.PolicyID = policyid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSlowPostProtection.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSlowPostProtection.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSlowPostProtection.PolicyID = policyid + } updateSlowPostProtection.ApplySlowPostControls = false - logger.Errorf("calling 'updateSlowPostProtection': %v", updateSlowPostProtection) _, erru := client.UpdateSlowPostProtection(ctx, updateSlowPostProtection) if erru != nil { logger.Errorf("calling 'updateSlowPostProtection': %s", erru.Error()) @@ -142,25 +191,43 @@ func resourceSlowPostProtectionSettingUpdate(ctx context.Context, d *schema.Reso logger := meta.Log("APPSEC", "resourceSlowPostProtectionSettingUpdate") updateSlowPostProtectionSetting := appsec.UpdateSlowPostProtectionSettingRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSlowPostProtectionSetting.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSlowPostProtectionSetting.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSlowPostProtectionSetting.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSlowPostProtectionSetting.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSlowPostProtectionSetting.PolicyID = policyid + policyid := s[2] + updateSlowPostProtectionSetting.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSlowPostProtectionSetting.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSlowPostProtectionSetting.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSlowPostProtectionSetting.PolicyID = policyid + } slowrateaction, err := tools.GetStringValue("slow_rate_action", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_slowpost_protection.go b/pkg/providers/appsec/resource_akamai_appsec_slowpost_protection.go index 58d1ddf6c..1962306d8 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_slowpost_protection.go +++ b/pkg/providers/appsec/resource_akamai_appsec_slowpost_protection.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -57,25 +58,43 @@ func resourceSlowPostProtectionRead(ctx context.Context, d *schema.ResourceData, logger := meta.Log("APPSEC", "resourceSlowPostProtectionRead") getSlowPostProtection := appsec.GetSlowPostProtectionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getSlowPostProtection.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getSlowPostProtection.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getSlowPostProtection.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getSlowPostProtection.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getSlowPostProtection.PolicyID = policyid + policyid := s[2] + getSlowPostProtection.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSlowPostProtection.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSlowPostProtection.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getSlowPostProtection.PolicyID = policyid + } slowpostprotection, err := client.GetSlowPostProtection(ctx, getSlowPostProtection) if err != nil { logger.Errorf("calling 'getSlowPostProtection': %s", err.Error()) @@ -96,7 +115,19 @@ func resourceSlowPostProtectionRead(ctx context.Context, d *schema.ResourceData, return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(getSlowPostProtection.ConfigID)) + if err := d.Set("config_id", getSlowPostProtection.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getSlowPostProtection.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getSlowPostProtection.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s", getSlowPostProtection.ConfigID, getSlowPostProtection.Version, getSlowPostProtection.PolicyID)) return nil } @@ -108,25 +139,43 @@ func resourceSlowPostProtectionDelete(ctx context.Context, d *schema.ResourceDat logger := meta.Log("APPSEC", "resourceSlowPostProtectionRemove") removeSlowPostProtection := appsec.UpdateSlowPostProtectionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeSlowPostProtection.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeSlowPostProtection.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeSlowPostProtection.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeSlowPostProtection.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeSlowPostProtection.PolicyID = policyid + policyid := s[2] + removeSlowPostProtection.PolicyID = policyid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeSlowPostProtection.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeSlowPostProtection.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeSlowPostProtection.PolicyID = policyid + } removeSlowPostProtection.ApplySlowPostControls = false _, errd := client.UpdateSlowPostProtection(ctx, removeSlowPostProtection) @@ -144,25 +193,43 @@ func resourceSlowPostProtectionUpdate(ctx context.Context, d *schema.ResourceDat logger := meta.Log("APPSEC", "resourceSlowPostProtectionUpdate") updateSlowPostProtection := appsec.UpdateSlowPostProtectionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSlowPostProtection.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSlowPostProtection.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSlowPostProtection.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateSlowPostProtection.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSlowPostProtection.PolicyID = policyid + policyid := s[2] + updateSlowPostProtection.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSlowPostProtection.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSlowPostProtection.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateSlowPostProtection.PolicyID = policyid + } applyslowpostcontrols, err := tools.GetBoolValue("enabled", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_slowpost_protection_test.go b/pkg/providers/appsec/resource_akamai_appsec_slowpost_protection_test.go index 7c0b59248..f108fd55a 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_slowpost_protection_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_slowpost_protection_test.go @@ -39,7 +39,7 @@ func TestAccAkamaiSlowPostProtection_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResSlowPostProtection/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_slowpost_protection.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_slowpost_protection.test", "id", "43253:7:AAAA_81230"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_version_notes.go b/pkg/providers/appsec/resource_akamai_appsec_version_notes.go index f8fe8eda3..1761d1094 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_version_notes.go +++ b/pkg/providers/appsec/resource_akamai_appsec_version_notes.go @@ -3,7 +3,9 @@ package appsec import ( "context" "errors" + "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -52,19 +54,34 @@ func resourceVersionNotesRead(ctx context.Context, d *schema.ResourceData, m int logger := meta.Log("APPSEC", "resourceVersionNotesRead") getVersionNotes := appsec.GetVersionNotesRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getVersionNotes.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getVersionNotes.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getVersionNotes.Version = version + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getVersionNotes.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getVersionNotes.Version = version } - getVersionNotes.Version = version - versionnotes, err := client.GetVersionNotes(ctx, getVersionNotes) if err != nil { logger.Errorf("calling 'getVersionNotes': %s", err.Error()) @@ -79,7 +96,15 @@ func resourceVersionNotesRead(ctx context.Context, d *schema.ResourceData, m int d.Set("output_text", outputtext) } - d.SetId(strconv.Itoa(getVersionNotes.ConfigID)) + if err := d.Set("config_id", getVersionNotes.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getVersionNotes.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d", getVersionNotes.ConfigID, getVersionNotes.Version)) return nil } @@ -95,19 +120,34 @@ func resourceVersionNotesUpdate(ctx context.Context, d *schema.ResourceData, m i logger := meta.Log("APPSEC", "resourceVersionNotesUpdate") updateVersionNotes := appsec.UpdateVersionNotesRequest{} - - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") + + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateVersionNotes.ConfigID = configid + + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateVersionNotes.Version = version + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateVersionNotes.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateVersionNotes.Version = version } - updateVersionNotes.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateVersionNotes.Version = version - notes, err := tools.GetStringValue("version_notes", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_version_notes_test.go b/pkg/providers/appsec/resource_akamai_appsec_version_notes_test.go index df316cc3a..5f17cb325 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_version_notes_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_version_notes_test.go @@ -39,7 +39,7 @@ func TestAccAkamaiVersionNotes_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResVersionNotes/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_version_notes.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_version_notes.test", "id", "43253:7"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_waf_mode.go b/pkg/providers/appsec/resource_akamai_appsec_waf_mode.go index 74c6ec4fe..6880e1bdc 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_waf_mode.go +++ b/pkg/providers/appsec/resource_akamai_appsec_waf_mode.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -78,25 +79,43 @@ func resourceWAFModeRead(ctx context.Context, d *schema.ResourceData, m interfac logger := meta.Log("APPSEC", "resourceWAFModeRead") getWAFMode := appsec.GetWAFModeRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getWAFMode.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getWAFMode.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getWAFMode.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getWAFMode.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getWAFMode.PolicyID = policyid + policyid := s[2] + getWAFMode.PolicyID = policyid + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getWAFMode.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getWAFMode.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getWAFMode.PolicyID = policyid + } wafmode, err := client.GetWAFMode(ctx, getWAFMode) if err != nil { logger.Errorf("calling 'getWAFMode': %s", err.Error()) @@ -130,7 +149,19 @@ func resourceWAFModeRead(ctx context.Context, d *schema.ResourceData, m interfac return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - d.SetId(strconv.Itoa(getWAFMode.ConfigID)) + if err := d.Set("config_id", getWAFMode.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getWAFMode.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getWAFMode.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s", getWAFMode.ConfigID, getWAFMode.Version, getWAFMode.PolicyID)) return nil } @@ -146,25 +177,43 @@ func resourceWAFModeUpdate(ctx context.Context, d *schema.ResourceData, m interf logger := meta.Log("APPSEC", "resourceWAFModeUpdate") updateWAFMode := appsec.UpdateWAFModeRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateWAFMode.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateWAFMode.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateWAFMode.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateWAFMode.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateWAFMode.PolicyID = policyid + policyid := s[2] + updateWAFMode.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateWAFMode.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateWAFMode.Version = version + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateWAFMode.PolicyID = policyid + } mode, err := tools.GetStringValue("mode", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) @@ -173,9 +222,9 @@ func resourceWAFModeUpdate(ctx context.Context, d *schema.ResourceData, m interf //if current mode = one to updare skip this call getWAFMode := appsec.GetWAFModeRequest{} - getWAFMode.ConfigID = configid - getWAFMode.Version = version - getWAFMode.PolicyID = policyid + getWAFMode.ConfigID = updateWAFMode.ConfigID + getWAFMode.Version = updateWAFMode.Version + getWAFMode.PolicyID = updateWAFMode.PolicyID wafmode, err := client.GetWAFMode(ctx, getWAFMode) if err != nil { diff --git a/pkg/providers/appsec/resource_akamai_appsec_waf_mode_test.go b/pkg/providers/appsec/resource_akamai_appsec_waf_mode_test.go index 4a718abfd..993da78f5 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_waf_mode_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_waf_mode_test.go @@ -39,7 +39,7 @@ func TestAccAkamaiWAFMode_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResWAFMode/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_waf_mode.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_waf_mode.test", "id", "43253:7:AAAA_81230"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_waf_protection.go b/pkg/providers/appsec/resource_akamai_appsec_waf_protection.go index 83e225cb0..f254d0112 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_waf_protection.go +++ b/pkg/providers/appsec/resource_akamai_appsec_waf_protection.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -57,25 +58,43 @@ func resourceWAFProtectionRead(ctx context.Context, d *schema.ResourceData, m in logger := meta.Log("APPSEC", "resourceWAFProtectionRead") getWAFProtection := appsec.GetWAFProtectionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getWAFProtection.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getWAFProtection.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getWAFProtection.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getWAFProtection.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getWAFProtection.PolicyID = policyid + policyid := s[2] + getWAFProtection.PolicyID = policyid + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getWAFProtection.ConfigID = configid + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getWAFProtection.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getWAFProtection.PolicyID = policyid + } wafprotection, err := client.GetWAFProtection(ctx, getWAFProtection) if err != nil { logger.Errorf("calling 'getWAFProtection': %s", err.Error()) @@ -92,7 +111,19 @@ func resourceWAFProtectionRead(ctx context.Context, d *schema.ResourceData, m in } } - d.SetId(strconv.Itoa(getWAFProtection.ConfigID)) + if err := d.Set("config_id", getWAFProtection.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getWAFProtection.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getWAFProtection.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s", getWAFProtection.ConfigID, getWAFProtection.Version, getWAFProtection.PolicyID)) return nil } diff --git a/pkg/providers/appsec/resource_akamai_appsec_waf_protection_test.go b/pkg/providers/appsec/resource_akamai_appsec_waf_protection_test.go index d36c9a615..6d6f0f9d7 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_waf_protection_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_waf_protection_test.go @@ -39,7 +39,7 @@ func TestAccAkamaiWAFProtection_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResWAFProtection/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_waf_protection.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_waf_protection.test", "id", "43253:7:AAAA_81230"), ), }, }, diff --git a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf index 1e50f628e..a4c34fd01 100644 --- a/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSApiHostnameCoverage/match_by_id.tf @@ -3,6 +3,6 @@ provider "akamai" { } data "akamai_appsec_hostname_coverage" "test" { - hostname = "example.com" + } From cd6301c94ce27d2e8cb1406ce1a798e8cf4a0f59 Mon Sep 17 00:00:00 2001 From: Rob Rodriguez Date: Thu, 28 Jan 2021 07:37:51 -0800 Subject: [PATCH 077/215] adding log format --- pkg/akamai/log.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pkg/akamai/log.go b/pkg/akamai/log.go index 8c7188f1b..33b9f5837 100644 --- a/pkg/akamai/log.go +++ b/pkg/akamai/log.go @@ -2,6 +2,7 @@ package akamai import ( "context" + "os" "strings" "github.com/apex/log" @@ -16,6 +17,19 @@ type ( } ) +// 2020/12/02 11:51:03 +const ( + DefaultTimestampFormat = "2006/01/02 03:04:05" +) + +func init() { + if fmt, ok := os.LookupEnv("AKAMAI_TS_FORMAT"); ok { + hclog.DefaultOptions.TimeFormat = fmt + } else { + hclog.DefaultOptions.TimeFormat = DefaultTimestampFormat + } +} + // LogFromHCLog returns a new log.Interface from an hclog.Logger func LogFromHCLog(l hclog.Logger) log.Interface { const ( From 33f95bd461877de1dc6fc0195ee0c475aeb64826 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Thu, 28 Jan 2021 11:24:24 -0500 Subject: [PATCH 078/215] Add contract and group ID parameters --- .../appsec_selectable_hostnames.md | 38 ++++++++++++++++--- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/docs/data-sources/appsec_selectable_hostnames.md b/docs/data-sources/appsec_selectable_hostnames.md index 536a6442e..68e6d5136 100644 --- a/docs/data-sources/appsec_selectable_hostnames.md +++ b/docs/data-sources/appsec_selectable_hostnames.md @@ -8,7 +8,7 @@ description: |- # akamai_appsec_selectable_hostnames -Use the `akamai_appsec_selectable_hostnames` data source to retrieve the list of hostnames that may be protected under a given security configuration version. +Use the `akamai_appsec_selectable_hostnames` data source to retrieve the list of hostnames that may be protected under a given security configuration version. You can use specify the list to be retrieved either by supplying the name and version of a security configuration, or by supplying a group ID and contract ID. ## Example Usage @@ -16,13 +16,14 @@ Basic usage: ```hcl provider "akamai" { - appsec_section = "default" + edgerc = "~/.edgerc" } +// USE CASE: user wants to view the list of hosts available to be added to the list of those protected +// under a given security configuration and version data "akamai_appsec_configuration" "configuration" { - name = "Akamai Tools" + name = var.security_configuration } - data "akamai_appsec_selectable_hostnames" "selectable_hostnames" { config_id = data.akamai_appsec_configuration.configuration.config_id version = data.akamai_appsec_configuration.configuration.latest_version @@ -32,23 +33,48 @@ output "selectable_hostnames" { value = data.akamai_appsec_selectable_hostnames.selectable_hostnames.hostnames } +// USE CASE: user wants to view the same list of unprotected hostnames, in JSON form output "selectable_hostnames_json" { value = data.akamai_appsec_selectable_hostnames.selectable_hostnames.hostnames_json } +// USE CASE: user wants to view the same list of unprotected hostnames, in tabular form output "selectable_hostnames_output_text" { value = data.akamai_appsec_selectable_hostnames.selectable_hostnames.output_text } +//USE CASE: user wants to view the list of hosts available to create a new config under a given contractid and groupid +data "akamai_appsec_selectable_hostnames" "selectable_hostnames_for_create_configuration" { + contractid = var.contractid + groupid = var.groupid +} + +output "selectable_hostnames_for_create_configuration" { + value = data.akamai_appsec_selectable_hostnames.selectable_hostnames_for_create_configuration.hostnames +} + +// USE CASE: user wants to view the same list of available hostnames, in JSON form +output "selectable_hostnames_for_create_configuration_json" { + value = data.akamai_appsec_selectable_hostnames.selectable_hostnames_for_create_configuration.hostnames_json +} + +// USE CASE: user wants to view the same list of available hostnames, in tabular form +output "selectable_hostnames_for_create_configuration_output_text" { + value = data.akamai_appsec_selectable_hostnames.selectable_hostnames_for_create_configuration.output_text +} ``` ## Argument Reference The following arguments are supported: -* `config_id` - (Required) The ID of the security configuration to use. +* `config_id` - (Optional) The ID of the security configuration to use. + +* `version` - (Optional) The version number of the security configuration to use. + +* `contractid` - (Optional) The ID of the contract to use. -* `version` - (Required) The version number of the security configuration to use. +* `groupid` - (Optional) The ID of the group to use. ## Attributes Reference From b7530a4c3bdc2d5752ad843b381ef6acb880a384 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Thu, 28 Jan 2021 11:28:40 -0500 Subject: [PATCH 079/215] Fix typo --- docs/data-sources/appsec_selectable_hostnames.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data-sources/appsec_selectable_hostnames.md b/docs/data-sources/appsec_selectable_hostnames.md index 68e6d5136..9b104ab3b 100644 --- a/docs/data-sources/appsec_selectable_hostnames.md +++ b/docs/data-sources/appsec_selectable_hostnames.md @@ -8,7 +8,7 @@ description: |- # akamai_appsec_selectable_hostnames -Use the `akamai_appsec_selectable_hostnames` data source to retrieve the list of hostnames that may be protected under a given security configuration version. You can use specify the list to be retrieved either by supplying the name and version of a security configuration, or by supplying a group ID and contract ID. +Use the `akamai_appsec_selectable_hostnames` data source to retrieve the list of hostnames that may be protected under a given security configuration version. You can specify the list to be retrieved either by supplying the name and version of a security configuration, or by supplying a group ID and contract ID. ## Example Usage From 105790ac1091c59964a3f354873c4a2181a996ef Mon Sep 17 00:00:00 2001 From: Elisa Sawyer Date: Thu, 28 Jan 2021 16:33:56 +0000 Subject: [PATCH 080/215] Update docs/guides/get_started_appsec.md --- docs/guides/get_started_appsec.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/get_started_appsec.md b/docs/guides/get_started_appsec.md index 2bf3e6e6d..da08f5fcc 100644 --- a/docs/guides/get_started_appsec.md +++ b/docs/guides/get_started_appsec.md @@ -96,7 +96,7 @@ When you have identified the desired security configuration by name, you can loa To load a specific configuration: 1. Identify the desired security configuration by name, -1. Edit your `akamai.tf` file to add the desired `name` parameter to the `akamai_appsec_configuration` data block. +1. Edit your `akamai.tf` file to add the desired `name` parameter to the `akamai_appsec_configuration` data block. 1. Change the `output` block so that it gives just the `config_id` attribute of the configuration. After these changes, the section of your file below the initial `provider` block looks like the following example: @@ -117,7 +117,7 @@ After running `terraform apply` on this file, the terminal displays `config_id` The provider's [`akamai_appsec_export_configuration`](../data-sources/appsec_export_configuration.md) data source can display complete information about any configuration that you specify, including attributes like custom rules, and selected hostnames. -To show custom rule and selected hostname data for the your most recent configuration, add the following blocks to your `akamai.tf` file: +To show custom rule and selected hostname data for your most recent configuration, add the following blocks to your `akamai.tf` file: ```hcl data "akamai_appsec_export_configuration" "export" { From deed503c06b34a9804ee18f5d5ba881f381681ce Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Thu, 28 Jan 2021 12:57:29 -0500 Subject: [PATCH 081/215] Add docs for new rename resources --- docs/resources/appsec_configuration_rename.md | 49 ++++++++++++++++++ .../appsec_security_policy_rename.md | 51 +++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 docs/resources/appsec_configuration_rename.md create mode 100644 docs/resources/appsec_security_policy_rename.md diff --git a/docs/resources/appsec_configuration_rename.md b/docs/resources/appsec_configuration_rename.md new file mode 100644 index 000000000..d7f862c99 --- /dev/null +++ b/docs/resources/appsec_configuration_rename.md @@ -0,0 +1,49 @@ +--- +layout: "akamai" +page_title: "Akamai: ConfigurationRename" +subcategory: "Application Security" +description: |- + ConfigurationRename +--- + +# akamai_appsec_configuration_rename + +The `akamai_appsec_configuration_rename` resource allows you to rename an existing security configuration. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to rename an existing configuration +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} + +resource "akamai_appsec_configuration_rename" "configuration" { + config_id = data.akamai_appsec_configuration.configuration.config_id + name = var.name + description = var.description +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The ID of the security configuration to be renamed. + +* `name` - (Required) The new name to be given to the configuration. + +* `description` - (Required) The description to be applied to the configuration. + +## Attribute Reference + +In addition to the arguments above, the following attributes are exported: + +* None + diff --git a/docs/resources/appsec_security_policy_rename.md b/docs/resources/appsec_security_policy_rename.md new file mode 100644 index 000000000..e6842eabb --- /dev/null +++ b/docs/resources/appsec_security_policy_rename.md @@ -0,0 +1,51 @@ +--- +layout: "akamai" +page_title: "Akamai: SecurityPolicyRename" +subcategory: "Application Security" +description: |- + SecurityPolicyRename +--- + +# akamai_appsec_security_policy_rename + +The `akamai_appsec_security_policy_rename` resource allows you to rename an existing security policy. + +## Example Usage + +Basic usage: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" +} + +// USE CASE: user wants to rename a security policy +data "akamai_appsec_configuration" "configuration" { + name = var.security_configuration +} +resource "akamai_appsec_security_policy" "security_policy_rename" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + security_policy_id = var.security_policy_id + name = var.name +} +``` + +## Argument Reference + +The following arguments are supported: + +* `config_id` - (Required) The ID of the security configuration to use. + +* `version` - (Required) The version number of the security configuration to use. + +* `security_policy_id` - (Required) The ID of the security policy to be renamed. + +* `security_policy_name` - (Required) The new name to be given to the security policy. + +## Attribute Reference + +In addition to the arguments above, the following attributes are exported: + +* None + From 9d8f7a664aeb7596a8b298acac5e1ee57e8adc81 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Tue, 26 Jan 2021 11:49:46 -0500 Subject: [PATCH 082/215] SECKSD-9143: Remove individual protections data sources --- pkg/providers/appsec/provider.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index 108a2c7bd..9c0841976 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -89,8 +89,6 @@ func Provider() *schema.Provider { "akamai_appsec_security_policy_protections": dataSourcePolicyProtections(), "akamai_appsec_rate_policies": dataSourceRatePolicies(), "akamai_appsec_rate_policy_actions": dataSourceRatePolicyActions(), - "akamai_appsec_rate_protections": dataSourceRateProtections(), - "akamai_appsec_reputation_protections": dataSourceReputationProtections(), "akamai_appsec_reputation_analysis": dataSourceReputationAnalysis(), "akamai_appsec_reputation_profiles": dataSourceReputationProfiles(), "akamai_appsec_reputation_profile_actions": dataSourceReputationProfileActions(), @@ -101,11 +99,9 @@ func Provider() *schema.Provider { "akamai_appsec_siem_settings": dataSourceSiemSettings(), "akamai_appsec_siem_definitions": dataSourceSiemDefinitions(), "akamai_appsec_slow_post": dataSourceSlowPostProtectionSettings(), - "akamai_appsec_slowpost_protections": dataSourceSlowPostProtections(), "akamai_appsec_attack_group_actions": dataSourceAttackGroupActions(), "akamai_appsec_version_notes": dataSourceVersionNotes(), "akamai_appsec_waf_mode": dataSourceWAFMode(), - "akamai_appsec_waf_protection": dataSourceWAFProtections(), "akamai_appsec_attack_group_condition_exception": dataSourceAttackGroupConditionException(), }, ResourcesMap: map[string]*schema.Resource{ From 78276baa1fffca5f7d9ab9943d67608ee0d7782a Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Mon, 1 Feb 2021 09:20:07 -0500 Subject: [PATCH 083/215] DNS record doc improvements --- docs/resources/dns_record.md | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/resources/dns_record.md b/docs/resources/dns_record.md index 8fad44162..9f91beac2 100644 --- a/docs/resources/dns_record.md +++ b/docs/resources/dns_record.md @@ -39,12 +39,12 @@ resource "akamai_dns_record" "www" { ## Argument Reference -The following arguments are supported for all record types: +The following arguments are necessary for all record types: * `name` - (Required) The name of the record. The name is an owner name, that is, the name of the node to which this resource record pertains. * `zone` - (Required) Domain zone, encapsulating any nested subdomains. * `recordType` - (Required) The DNS record type. -* `active` - (Ignored, Boolean) Maintained for backward compatibility +* `active` - (Optional, Ignored, Boolean) Maintained for backward compatibility * `ttl` - (Required,Boolean) The TTL is a 32-bit signed integer that specifies the time interval that the resource record may be cached before the source of the information should be consulted again. A value of zero means that the RR can only be used for the transaction in progress, and should not be cached. Zero values can also be used for extremely volatile data. ## Required Fields Per Record Type @@ -104,7 +104,7 @@ The following fields are required: * algorithm - identifies the cryptographic algorithm used to create the signature. * certificate - certificate data -Note: Type can be configured either a numeric OR menmonic value. If both set, type_mnemonic takes precedent. +Note: Type can be configured either as a numeric OR menmonic value. With both set, type_mnemonic takes precedence. ### CNAME Record @@ -118,8 +118,8 @@ The following fields are required: * flags * protocol - Must have the value 3. The DNSKEY resource record must be treated as invalid during signature verification if it contains a value other than 3. -* algorithm - The public key’s cryptographic algorithm and determine the format of the public key field. -* key - Base 64 encoded value representing the public key, the format of which depends on the algorithm being used. +* algorithm - The public key’s cryptographic algorithm that determines the format of the public key field. +* key - Base 64 encoded value representing the public key, the format of which depends on the algorithm. ### DS Record @@ -147,23 +147,23 @@ The following field is required: The following field is required: -* target - One or more domain names that specifies a host willing to act as a mail exchange for the owner name. +* target - One or more domain names that specify a host willing to act as a mail exchange for the owner name. -The following fields are optional depending on configuration type. See [DNS Getting Started Guide](../guides/get_started_dns_zone.md#working-with-mx-records) for more information. +The following fields are optional depending on configuration type. See [DNS Getting Started Guide](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_dns_zone#working-with-mx-records) for more information. -* priority - The preference value given to the MX record among MX records. When a mailer needs to send mail to a certain DNS domain, it first contacts a DNS server for that domain and retrieves all the MX records. It then contacts the mailer with the lowest preference value. Ignored if embedded priority specified in target +* priority - The preference value given to the MX record among MX records. When a mailer needs to send mail to a certain DNS domain, it first contacts a DNS server for that domain and retrieves all the MX records. It then contacts the mailer with the lowest preference value. Ignored if an embedded priority exists in the target. * priority_increment - auto priority increment when multiple targets are provided with no embedded priority. ### NAPTR Record The following fields are required: -* order - A 16-bit unsigned integer specifying the order in which the NAPTR records MUST be processed to ensure the correct ordering ofrules. Low numbers are processed before high numbers, and once a NAPTR is found whose rule “matches” the target, the client MUST NOT consider any NAPTRs with a higher value for order (except as noted below for the Flags field). -* preference - A 16-bit unsigned integer that specifies the order in which NAPTR records with equal order values should be processed, low numbers being processed before high numbers. +* order - A 16-bit unsigned integer specifying the order in which the NAPTR records MUST be processed to ensure the correct ordering of rules. Low numbers are processed before high numbers, and once a NAPTR is found whose rule “matches” the target, the client MUST NOT consider any NAPTRs with a higher value for order (except as noted below for the flagsnapter field). +* preference - A 16-bit unsigned integer that specifies the order in which NAPTR records with equal order values should be processed with low numbers being processed before high numbers. * flagsnaptr - A containing flags to control aspects of the rewriting and interpretation of the fields in the record. Flags are single characters from the set [A-Z0-9]. The case of the alphabetic characters is not significant. * service - Specifies the services available down this rewrite path. * regexp - A String containing a substitution expression that is applied to the original string held by the client in order to construct the next domain name to lookup. -* replacement - The next NAME to query for NAPTR, SRV, or address records depending on the value of the flags field. This MUST be a fully qualified domain-name. +* replacement - The next NAME to query for NAPTR, SRV, or address records depending on the value of the flags field. This MUST be a fully qualified domain name. ### NS Record @@ -176,7 +176,7 @@ The following field is required: The following fields are required: * algorithm - The cryptographic hash algorithm used to construct the hash-value. -* flags - The 8 one-bit flags that can be used to indicate different processing. All undefined flags must be zero. +* flags - Eight (8) one-bit flags that can be used to indicate different processing. All undefined flags must be zero. * iterations - The number of additional times the hash function has been performed. * salt - The base 16 encoded salt value, which is appended to the original owner name before hashing in order to defend against pre-calculated dictionary attacks. * next_hashed_owner_name - Base 32 encoded. The next hashed owner name in hash order. This value is in binary format. Given the ordered set of all hashed owner names, the Next Hashed Owner Name field contains the hash of an owner name that immediately follows the owner name of the given NSEC3 RR. @@ -187,7 +187,7 @@ The following fields are required: The following fields are required: * algorithm - The cryptographic hash algorithm used to construct the hash-value. -* flags - The 8 one-bit flags that can be used to indicate different processing. All undefined flags must be zero. +* flags - Eight (8) one-bit flags that can be used to indicate different processing. All undefined flags must be zero. * iterations - The number of additional times the hash function has been performed. * salt - The base 16 encoded salt value, which is appended to the original owner name before hashing in order to defend against pre-calculated dictionary attacks. @@ -211,10 +211,10 @@ The following fields are required: * type_covered - The resource record set type covered by this signature. * algorithm - The Algorithm Number field identifies the cryptographic algorithm used to create the signature. * original_ttl - The TTL of the covered record set as it appears in the authoritative zone. -* expiration - The end point of this signature’s validity. The signature cannot be used for authentication past this point. -* inception - The start point of this signature’s validity. The signature cannot be used for authentication prior to this point. +* expiration - The end point of this signature’s validity. The signature cannot be used for authentication past this point in time. +* inception - The start point of this signature’s validity. The signature cannot be used for authentication prior to this point in time. * keytag - The Key Tag field contains the key tag value of the DNSKEY RR that validates this signature, in network byte order. -* signer - The owner of the DSNKEY resource record who validates this signature. +* signer - The owner of the DNSKEY resource record who validates this signature. * signature - The base 64 encoded cryptographic signature that covers the RRSIG RDATA and covered record set. Format depends on the TSIG algorithm in use. * labels - The Labels field specifies the number of labels in the original RRSIG RR owner name. The significance of this field is that a validator uses it to determine whether the answer was synthesized from a wildcard. If so, it can be used to determine what owner name was used in generating the signature. @@ -237,8 +237,8 @@ The following fields are required: The following fields are required: -* algorithm - Describes the algorithm of the public key. The following values are assigned: 0 = reserved; 1 = RSA; 2 = DSS, 3 = ECDSA -* fingerprint_type - Describes the message-digest algorithm used to calculate the fingerprint of the public key. The following values are assigned: 0 = reserved, 1 = SHA-1, 2 = SHA-256 +* algorithm - Describes the algorithm of the public key. The following values are assigned: 0 = reserved; 1 = RSA; 2 = DSS, 3 = ECDSA. +* fingerprint_type - Describes the message-digest algorithm used to calculate the fingerprint of the public key. The following values are assigned: 0 = reserved, 1 = SHA-1, 2 = SHA-256. * fingerprint - The base 16 encoded fingerprint as calculated over the public key blob. The message-digest algorithm is presumed to produce an opaque octet string output, which is placed as-is in the RDATA fingerprint field. ### SOA Record From 30ffe7496f737aef98ea0ab0690a1ab3728917ae Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Mon, 1 Feb 2021 09:57:29 -0500 Subject: [PATCH 084/215] Incorporate review comments --- docs/resources/appsec_api_request_constraints.md | 2 +- docs/resources/appsec_security_policy_rename.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/resources/appsec_api_request_constraints.md b/docs/resources/appsec_api_request_constraints.md index f4c1af7af..ea78ec3cf 100644 --- a/docs/resources/appsec_api_request_constraints.md +++ b/docs/resources/appsec_api_request_constraints.md @@ -50,7 +50,7 @@ The following arguments are supported: * `security_policy_id` - (Required) The ID of the security policy to use. -* `api_endpoint_id` - (Required) The ID of the API endpoint to use. +* `api_endpoint_id` - (Optional) The ID of the API endpoint to use. If not supplied, the request constraint action will be updated for all APIs. * `action` - (Required) The action to assign to API request constraints: either `alert`, `deny`, or `none`. diff --git a/docs/resources/appsec_security_policy_rename.md b/docs/resources/appsec_security_policy_rename.md index e6842eabb..12b7c6cdf 100644 --- a/docs/resources/appsec_security_policy_rename.md +++ b/docs/resources/appsec_security_policy_rename.md @@ -27,7 +27,7 @@ resource "akamai_appsec_security_policy" "security_policy_rename" { config_id = data.akamai_appsec_configuration.configuration.config_id version = data.akamai_appsec_configuration.configuration.latest_version security_policy_id = var.security_policy_id - name = var.name + security_policy_name = var.name } ``` From 937799871636dfac8de5e3e3db51842bc9919bc4 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Mon, 1 Feb 2021 10:20:58 -0500 Subject: [PATCH 085/215] Correct DNS and GTM API names; Typo corrections; Remove deprecated group reference for the contract data source --- docs/guides/akamai_provider_auth.md | 22 +++++++++++----------- docs/guides/get_started_provider.md | 17 ++++------------- docs/resources/dns_record.md | 2 +- 3 files changed, 16 insertions(+), 25 deletions(-) diff --git a/docs/guides/akamai_provider_auth.md b/docs/guides/akamai_provider_auth.md index 178f97582..391d4fc9b 100644 --- a/docs/guides/akamai_provider_auth.md +++ b/docs/guides/akamai_provider_auth.md @@ -47,12 +47,12 @@ supporting API service names: | **Module** | **API service name** | |-------------|----------------------| | Property Manager (Provisioning and Common modules) | Property Manager (PAPI) | -| Edge DNS (DNS) | DNS-Zone Record Management | -| Global Traffic Management | Traffic Management Configurations | +| Edge DNS (DNS) | DNS Zone Management | +| Global Traffic Management | Global Traffic Management | | Application Security | Application Security | Once you create the supporting API clients you can update your local -`.edgerc file`. +`.edgerc` file. ## Add your local .edgerc file to your Akamai Provider config @@ -61,12 +61,12 @@ To reference a local `.edgerc` file, you add this line to the top of the Akamai Provider configuration file (`akamai.tf`): ``` -edgerc = \"\~/.edgerc\" +edgerc = "~/.edgerc" ``` -The `\~/.edgerc` is the location of your file on your local machine. In -your Terraform files you can reference individual sections inside the -.edgerc file: +`~/.edgerc` is the location of your file on your local machine. In +your Terraform files, you can reference individual sections inside the +`.edgerc` file: ### Example usage @@ -137,7 +137,7 @@ resource "akamai_dns_record" "example_record" { Arguments supported in the `provider` block: -* edgerc - (Optional) The location of the `.edgerc` file containing credentials. The default is `\$HOME/.edgerc`. +* edgerc - (Optional) The location of the `.edgerc` file containing credentials. The default is `$HOME/.edgerc`. * config_section - (Optional) The credential section to use within the `.edgerc` file for all EdgeGrid calls. If you don't use `config_section`, the Akamai Provider uses the credentials in the `default` section of the `.edgerc` file. #### Deprecated arguments @@ -167,7 +167,7 @@ provider "akamai" { } ``` -You don't need the `edgerc` or `config_section` attributes that you'd use if you were adding your local `.edgerc` file to your Akamai Provider config. +You don't need the `edgerc` or `config_section` attributes that you'd use if you were adding your local `.edgerc` file to your Akamai Provider configuration. ### Argument reference @@ -191,7 +191,7 @@ You can also use environment variables to set credential values. Environment variables take precedence over the settings in the `.edgerc` file. -Your environment variables should be in this format: `AKAMAI{_SECTION_NAME}_\*` +Your environment variables should be in this format: `AKAMAI{_SECTION_NAME}_*` For example, if you're setting up the Provisioning module, you'll need an API client for Property Manager. In your `akamai.tf` file, you'll need to add a `config_section` block with these environment variables: @@ -232,7 +232,7 @@ terraform apply ``` ### Variable reference -When using variables, you'll need to set them up based on the sections of your `.edgerc` file they represent. Your environment variables should be in this format: `AKAMAI{_SECTION_NAME}_\*` +When using variables, you'll need to set them up based on the sections of your `.edgerc` file they represent. Your environment variables should be in this format: `AKAMAI{_SECTION_NAME}_*` These are the variables for the `default` section of your `.edgerc` and what they represent: diff --git a/docs/guides/get_started_provider.md b/docs/guides/get_started_provider.md index 08129c3eb..2c714a585 100644 --- a/docs/guides/get_started_provider.md +++ b/docs/guides/get_started_provider.md @@ -10,7 +10,7 @@ description: |- If you've set up Akamai APIs before, some of the Akamai Provider setup tasks will look familiar. You'll need to create Akamai API clients for each of the modules you'll be using, and retrieve IDs for your contracts -and groups. Other tasks, like setting up your `akamai.tf` file, are very +and groups. Other tasks, like setting up your `akamai.tf` file, are specific to Terraform. Complete the tasks in this guide when setting up the Akamai @@ -84,22 +84,13 @@ Control Center, or by using other Akamai APIs or CLIs. ### Retrieve contract IDs with akamai_contract -You can get your contract ID automatically using the [`akamai_contract` data source](../data-sources/property_contract.md). This data source requires access to the Property Manager (PAPI) API service. See [Set up your API clients](../guides/akamai_provider_auth.md#set-up-your-api-clients) +You can get your contract ID automatically using the [`akamai_contract` data source](../data-sources/property_contract.md). This data source requires access to the Property Manager (PAPI) API service. See [Set up your API clients](../guides/akamai_provider_auth.md#set-up-your-api-clients). -To retrieve the default contract you need to enter a group name or ID no attributes need to be set: +To retrieve the default contract, you need to enter a group name or ID. No attributes need to be set: ```hcl data "akamai_contract" "default" { group_name = "example group name" - -} -``` - -Alternatively, if you have multiple contracts, you can specify the `group` that contains it: - -```hcl -data "akamai_contract" "default" { - group_name = "default" } ``` @@ -152,7 +143,7 @@ Akamai modules you're using: -> **Note** Both Terraform and the Akamai Terraform CLI package come pre-installed in the Akamai Development Environment. Get more details in -our [[installation +our [installation Instructions](https://developer.akamai.com/blog/2020/05/26/set-development-environment). Once you're done with the module-level setup, continue with the next diff --git a/docs/resources/dns_record.md b/docs/resources/dns_record.md index 9f91beac2..e0d41d130 100644 --- a/docs/resources/dns_record.md +++ b/docs/resources/dns_record.md @@ -149,7 +149,7 @@ The following field is required: * target - One or more domain names that specify a host willing to act as a mail exchange for the owner name. -The following fields are optional depending on configuration type. See [DNS Getting Started Guide](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_dns_zone#working-with-mx-records) for more information. +The following fields are optional depending on configuration type. See [DNS Getting Started Guide](../guides/get_started_dns_zone#working-with-mx-records) for more information. * priority - The preference value given to the MX record among MX records. When a mailer needs to send mail to a certain DNS domain, it first contacts a DNS server for that domain and retrieves all the MX records. It then contacts the mailer with the lowest preference value. Ignored if an embedded priority exists in the target. * priority_increment - auto priority increment when multiple targets are provided with no embedded priority. From efdd68096bf010c3c36363ef0761590f23155f35 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Mon, 1 Feb 2021 10:29:27 -0500 Subject: [PATCH 086/215] Fix grammar mistake --- docs/data-sources/dns_authorities_set.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data-sources/dns_authorities_set.md b/docs/data-sources/dns_authorities_set.md index 3412ea7bd..ae46043c1 100644 --- a/docs/data-sources/dns_authorities_set.md +++ b/docs/data-sources/dns_authorities_set.md @@ -8,7 +8,7 @@ description: |- # akamai_authorities_set -Use `akamai_authorities_set` datasource to retrieve a contracts authorities set for use when creating new zones. +Use `akamai_authorities_set` datasource to retrieve a contract's authorities set for use when creating new zones. ## Example Usage From 26d0e5e8fb5cc75edbe98446d2a1e5ae86c42c0a Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Mon, 1 Feb 2021 10:43:30 -0500 Subject: [PATCH 087/215] Finish argument descriptions and add alias as a zone type choice. --- docs/resources/dns_zone.md | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/docs/resources/dns_zone.md b/docs/resources/dns_zone.md index 185916e6e..07bf57309 100644 --- a/docs/resources/dns_zone.md +++ b/docs/resources/dns_zone.md @@ -33,18 +33,17 @@ resource "akamai_dns_zone" "demozone" { The following arguments are supported: -* `contract` - (Required) The contract ID. -* `group` - (Required) The currently selected group ID. -* `zone` - (Required) Domain zone, encapsulating any nested subdomains. -* `type` - (Required) Whether the zone is `primary` or `secondary`. -* `masters` - (Required for `secondary`) The names or addresses of the customer’s nameservers from which the zone data should be retrieved. -* `comment` - (Required) A descriptive comment. -* `sign_and_serve` - (Optional) Whether DNSSEC Sign&Serve is enabled. +* `contract` - (Required) The contract ID. +* `group` - (Required) The currently selected group ID. +* `zone` - (Required) Domain zone, encapsulating any nested subdomains. +* `type` - (Required) Whether the zone is `primary`, `secondary` or `alias`. +* `masters` - (Required for `secondary`) The names or addresses of the customer’s nameservers from which the zone data should be retrieved. +* `comment` - (Required) A descriptive comment. +* `sign_and_serve` - (Optional) Whether DNSSEC Sign&Serve is enabled. * `sign_and_serve_algorithm` - (Optional) Algorithm used by Sign&Serve. * `target` - (Required for Alias zones) The name of the zone whose configuration this zone will copy. -* `tsig_key` - (Optional) TSIG Key used in secure zone transfers - * `name` - key name - * `algorithm` - * `secret` -* `end_customer_id` - (Optional) - +* `tsig_key` - (Optional) TSIG Key used in secure zone transfers. + * `name` - key name. + * `algorithm` - hashing algorithm. + * `secret` - string known between transfer endpoints. +* `end_customer_id` - (Optional) free form identifier for the zone. From 3cd92debac025baf15145ce53ae500d600b39652 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Mon, 1 Feb 2021 11:21:14 -0500 Subject: [PATCH 088/215] Improvements such as grammar correction. --- docs/guides/faq.md | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/docs/guides/faq.md b/docs/guides/faq.md index 2de43b006..004b158fb 100644 --- a/docs/guides/faq.md +++ b/docs/guides/faq.md @@ -21,30 +21,31 @@ Migrating an existing Edge DNS Zone can be done in many ways. Two such methods i A package, [CLI-Terraform](https://github.com/akamai/cli-terraform), for the [Akamai CLI](https://developer.akamai.com/cli) provides a time saving means to collect information about, generate a configuration for, and import an existing Edge DNS Zone and its contained recordsets. With the package, you can: -1. Generate a JSON formatted list of the zone and recordsets -2. Generate a Terraform configuration for the zone and select recordsets -3. Generate a command line script to import all defined resources +1. Generate a JSON formatted list of the zone and recordsets. +2. Generate a Terraform configuration for the zone and select recordsets. +3. Generate a command line script to import all defined resources. +Each step will produce produce or update existing files. + #### Notes -1. Terraform limits the characters that can be part of it's resource names. During construction of the resource configurations invalid characters are replaced with underscore , '_' -2. Terrform does not have any state during import of resources. Discrepencies may be identified in certain field lists during the first plan and/or apply following import as Terraform reconciles configurations and state. These discrepencies will clear following the first apply. -3. The first time plan or apply is run, an update will be shown for the provider defined zone fields: contract and group. - -It is recommended that the existing zone configuration and master file (using the API or Control Center) be downloaded before hand as a backup and reference. Additionally, a terraform plan should be executed after importing to validate the generated tfstate. +1. Terraform limits the characters that can be part of its resource names. During construction of the resource configurations, invalid characters are replaced with underscore , '_'. +2. Terraform does not have any state during import of resources. Discrepencies may be identified in certain field lists during the first plan and/or apply following an import as Terraform reconciles configurations and state. These discrepencies will clear following the first apply. +3. The first time plan or apply is run, an update will be shown for the provider defined zone fields: `contract` and `group`. +4. It is recommended that the existing zone configuration and master file (using the API or Control Center) be downloaded before hand as a backup and reference. Additionally, a terraform plan should be executed after importing to validate the generated tfstate. ### Via Step By Step Construction -1. Download your existing zone master file configuration (using the API) as a backup and reference. +1. Download your existing zone master file configuration (using the API or Control Center) as a backup and reference. 2. Using the zone master file as a reference, create a Terraform configuration representing the existing zone and all contained recordsets. Note: In creating each resource block, make note of `required`, `optional` and `computed` fields. 3. Use the Terraform Import command to import the existing zone and contained recordsets; singularly and in serial order. -4. (Optional, Recommended) Review and compare the zone master file content and created `terraform.tfstate` to confirm the zone and all recordsets are represented correctly +4. (Optional, Recommended) Review and compare the zone master file content and created `terraform.tfstate` to confirm the zone and all recordsets are represented correctly. 5. Execute a `Terraform Plan` on the configuration. The plan should be empty. If not, correct accordingly and repeat until plan is empty and configuration is in sync with the Edge DNS Backend. -Since Terraform assumes it is the de facto state for any resource it leverages, we strongly recommend staging the zone and recordset imports in a test environment to familiarize yourself with the provider operation and mitigate any risks to the existing Edge DNS zone configuration. +Since Terraform assumes it is the de facto state for any resource it leverages, we recommend staging the zone and recordset imports in a test environment to familiarize yourself with the provider operation and mitigate any risks to the existing Edge DNS zone configuration. ## Migrating a GTM domain (and contained objects) to Terraform -Migrating an existing GTM domain can be done in many ways. Two such methods include: +Migrating an existing GTM domain can be done in many ways. Two such methods include: using a command line utility or using a step by step construction. ### Via Command Line Utility @@ -54,23 +55,24 @@ A package, [CLI-Terraform](https://github.com/akamai/cli-terraform), for the [Ak 2. Generate a Terraform configuration for the domain and contained objects. 3. Generate a command line script to import all defined resources. +Each step will produce produce or update existing files. + #### Notes -1. Terraform limits the characters that can be part of it's resource names. During construction of the resource configurations invalid characters are replaced with underscore , '_' +1. Terraform limits the characters that can be part of it's resource names. During construction of the resource configurations invalid characters are replaced with underscore , '_'. 2. Terraform does not have any state during import of resources. Discrepancies may be identified in certain field lists during the first plan and/or apply following import as Terraform reconciles configurations and state. These discrepancies will clear following the first apply. 3. The first time plan or apply is run, an update will be shown for the provider defined domain fields: `contract`, `group`, and `wait_on_complete`. - -It is recommended that the existing domain configuration (using the API or Control Center) be downloaded before hand as a backup and reference. Additionally, a terraform plan should be executed after importing to validate the generated tfstate. +4. It is recommended that the existing domain configuration (using the API or Control Center) be downloaded before hand as a backup and reference. Additionally, a terraform plan should be executed after importing to validate the generated tfstate. ### Via Step By Step Construction 1. Download your existing domain configuration (using the API or Control Center) as a backup and reference. 2. Using the domain download as a reference, create a Terraform configuration representing the existing domain and all contained GTM objects. Note: In creating each resource block, make note of `required`, `optional`, and `computed` fields. 3. Run `terraform import`. This command imports the existing domain and contained objects one at a time based on the order in the configuration. -4. (Optional, Recommended) Review domain download content and created terraform.tfstate to confirm the domain and all objects are represented correctly +4. (Optional, Recommended) Review domain download content and created `terraform.tfstate` to confirm the domain and all objects are represented correctly. 5. Run `terraform plan` on the configuration. The plan should be empty. If not, correct accordingly and repeat until plan is empty and configuration is in sync with the GTM Backend. -Since Terraform assumes it is the de facto state for any resource it leverages, we strongly recommend staging the domain and objects imports in a test environment to familiarize yourself with the provider operation and mitigate any risks to the existing GTM domain configuration. +Since Terraform assumes it is the de facto state for any resource it leverages, we recommend staging the domain and object imports in a test environment to familiarize yourself with the provider operation and mitigate any risks to the existing GTM domain configuration. ## GTM Terraform Resource Field Representation During Plan and/or Apply -When using `terraform plan` or `terraform apply`, Terraform presents both fields defined in the configuration and all defined resource fields. Fields are either required, optional or computed as specified in each resource description. Default values for fields will display if not explicitly configured. In many cases, the default will be zero, empty string, or empty list depending on the type. These default or empty values are informational and not included in resource updates. +When using `terraform plan` or `terraform apply`, Terraform presents fields defined in the configuration and all defined resource fields. Fields are either required, optional or computed as specified in each resource description. Default values for fields will display if not explicitly configured. In many cases, the default will be zero, empty string, or empty list depending on the type. These default or empty values are informational and not included in resource updates. From 514309ec046ad9a601fb51b069ff2fcc9f3b9a93 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Mon, 1 Feb 2021 12:05:14 -0500 Subject: [PATCH 089/215] Finish AS Map resource documentation --- docs/resources/gtm_asmap.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/resources/gtm_asmap.md b/docs/resources/gtm_asmap.md index 37f4e4ee6..5ccdbb94d 100644 --- a/docs/resources/gtm_asmap.md +++ b/docs/resources/gtm_asmap.md @@ -8,7 +8,7 @@ description: |- # akamai_gtm_asmap -`akamai_gtm_asmap` provides the resource for creating, configuring and importing a gtm AS Map to integrate easily with your existing GTM infrastructure to provide a secure, high performance, highly available and scalable solution for Global Traffic Management. Note: Import requires an ID of the format: `existing_domain_name`:`existing_map_name` +`akamai_gtm_asmap` provides the resource for creating, configuring and importing a GTM Autonomous System Map. Autonomous System (AS) mapping lets you configure a GTM property that returns a CNAME based on the AS number of the IP address of the requester. You can reuse maps for multiple properties or create new ones. AS maps split the Internet into multiple AS block zones. Properties that use AS maps can specify handout integers for each zone. AS mapping lets you configure a property that directs users to a specific environment or to the origin. Note: Import requires an ID of the format: `existing_domain_name`:`existing_map_name`. ## Example Usage @@ -31,19 +31,19 @@ The following arguments are supported: Required -* `domain` - Domain name -* `name` - Resource name -* `default_datacenter` - * `datacenter_id` - * `nickname` +* `domain` - GTM Domain name for the AS Map. +* `name` - A descriptive label for the AS map. Properties set up for asmapping can use this as reference. +* `default_datacenter` - A placeholder for all other AS zones, AS IDs not found in these AS zones. + * `datacenter_id` - A unique identifier for an existing data center in the domain. + * `nickname` - A descriptive label for all other AS zones, up to 128 characters. Optional -* `wait_on_complete` - (Boolean, Default: `true`) Wait for transaction to complete -* `assignment` - (multiple allowed) - * `datacenter_id` - * `nickname` - * `as_numbers` - (List) +* `wait_on_complete` - (Boolean, Default: `true`) Wait for transaction to complete. +* `assignment` - (multiple allowed) Contains information about the AS zone groupings of AS IDs. + * `datacenter_id` - A unique identifier for an existing data center in the domain. + * `nickname` - A descriptive label for the group. + * `as_numbers` - (List) Specifies an array of AS numbers. ### Backing Schema Reference From 3ee5416c782995377a3171dff665ba26b27dd876 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Mon, 1 Feb 2021 12:22:30 -0500 Subject: [PATCH 090/215] CIDR Map doc improvements. --- docs/resources/gtm_cidrmap.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/resources/gtm_cidrmap.md b/docs/resources/gtm_cidrmap.md index 559e27a6d..45d6bb557 100644 --- a/docs/resources/gtm_cidrmap.md +++ b/docs/resources/gtm_cidrmap.md @@ -8,7 +8,7 @@ description: |- # akamai_gtm_cidrmap -`akamai_gtm_cidrmap` provides the resource for creating, configuring and importing a gtm Cidr Map to integrate easily with your existing GTM infrastructure to provide a secure, high performance, highly available and scalable solution for Global Traffic Management. Note: Import requires an ID of the format: `existing_domain_name`:`existing_map_name` +`akamai_gtm_cidrmap` provides the resource for creating, configuring and importing a GTM Cidr Map. Classless Inter-Domain Routing (CIDR) mapping uses the IP addresses of the requesting name server to provide IP-specific CNAME entries, which lets you direct internal users to a specific environment or direct to the origin. This provides different responses to an internal corporate DNS infrastructure such as internal test environments and another answer for all other (defaultDatacenter) name servers. CIDR maps split the Internet into multiple CIDR block zones. Properties that use a map can specify a handout CNAME for each zone on the property’s editing page. To configure a property for CIDR mapping, your domain needs at least one CIDR map defined.. Note: Import requires an ID of the format: `existing_domain_name`:`existing_map_name` ## Example Usage @@ -31,11 +31,11 @@ The following arguments are supported: Required -* `domain` - Domain name -* `name` - Resource name -* `default_datacenter` - * `datacenter_id` - * `nickname` +* `domain` - GTM Domain name for the AS Map. +* `name` - A descriptive label for the CIDR map, up to 255 characters. +* `default_datacenter` - A placeholder for all other CIDR zones, CIDR blocks not found in these CIDR zones. + * `datacenter_id` - For each property, an identifier for all other CIDR zones’ CNAME. For example, 5400. + * `nickname` - A descriptive label for the all other CIDR blocks. Optional From 890ecbc4f2cbfd2755ea42cb511d482f9403c4fc Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Mon, 1 Feb 2021 13:50:51 -0500 Subject: [PATCH 091/215] Finish Datacenter resource description. --- docs/resources/gtm_cidrmap.md | 14 ++++---- docs/resources/gtm_datacenter.md | 55 ++++++++++++++++---------------- 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/docs/resources/gtm_cidrmap.md b/docs/resources/gtm_cidrmap.md index 45d6bb557..b797c14d0 100644 --- a/docs/resources/gtm_cidrmap.md +++ b/docs/resources/gtm_cidrmap.md @@ -8,7 +8,7 @@ description: |- # akamai_gtm_cidrmap -`akamai_gtm_cidrmap` provides the resource for creating, configuring and importing a GTM Cidr Map. Classless Inter-Domain Routing (CIDR) mapping uses the IP addresses of the requesting name server to provide IP-specific CNAME entries, which lets you direct internal users to a specific environment or direct to the origin. This provides different responses to an internal corporate DNS infrastructure such as internal test environments and another answer for all other (defaultDatacenter) name servers. CIDR maps split the Internet into multiple CIDR block zones. Properties that use a map can specify a handout CNAME for each zone on the property’s editing page. To configure a property for CIDR mapping, your domain needs at least one CIDR map defined.. Note: Import requires an ID of the format: `existing_domain_name`:`existing_map_name` +`akamai_gtm_cidrmap` provides the resource for creating, configuring and importing a GTM Classless Inter-Domain Routing (CIDR) Map. CIDR mapping uses the IP addresses of the requesting name server to provide IP-specific CNAME entries, which lets you direct internal users to a specific environment or direct to the origin. This provides different responses to an internal corporate DNS infrastructure such as internal test environments and another answer for all other (defaultDatacenter) name servers. CIDR maps split the Internet into multiple CIDR block zones. Properties that use a map can specify a handout CNAME for each zone on the property’s editing page. To configure a property for CIDR mapping, your domain needs at least one CIDR map defined.. Note: Import requires an ID of the format: `existing_domain_name`:`existing_map_name` ## Example Usage @@ -39,13 +39,13 @@ Required Optional -* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete -* `assignment` - (multiple allowed) - * `datacenter_id` - * `nickname` - * `blocks` - (List) +* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. +* `assignment` - (multiple allowed) Contains information about the CIDR zone groupings of CIDR blocks. + * `datacenter_id` - A unique identifier for an existing data center in the domain. + * `nickname` - A descriptive label for the CIDR zone group, up to 256 characters. + * `blocks` - (List) Specifies an array of CIDR blocks. ### Backing Schema Reference -The GTM Cidr Map backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#cidrmap) +The GTM Cidr Map backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#cidrmap). diff --git a/docs/resources/gtm_datacenter.md b/docs/resources/gtm_datacenter.md index b1efbb66c..bed6b02f0 100644 --- a/docs/resources/gtm_datacenter.md +++ b/docs/resources/gtm_datacenter.md @@ -8,7 +8,7 @@ description: |- # akamai_gtm_datacenter -`akamai_gtm_datacenter` provides the resource for creating, configuring and importing a gtm datacenter to integrate easily with your existing GTM infrastructure to provide a secure, high performance, highly available and scalable solution for Global Traffic Management. Note: Import requires an ID of the format: `existing_domain_name`:`existing_datacenter_id` +`akamai_gtm_datacenter` provides the resource for creating, configuring and importing a GTM datacenter that represents a customer data center, also known as a traffic target, which is a location that contains many servers to which GTM directs traffic. More generally, a data center is a name for a set of possible answers that GTM can return for a query and the unit GTM uses to scale load balancing. For example, you might have data centers in New York and in Amsterdam, and want to balance load between them, but prefer that U.S. users are sent to the New York data center and European users are sent to the Amsterdam data center. Note: Import requires an ID of the format: `existing_domain_name`:`existing_datacenter_id`. ## Example Usage @@ -27,40 +27,39 @@ The following arguments are supported: Required -* `domain` - Domain name +* `domain` - GTM Domain name for the Datacenter. Optional -* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete -* `nickname` - datacenter nickname -* `default_load_object` - * `load_object` - * `load_object_port` - * `load_servers` - (List) -* `city` -* `clone_of` -* `cloud_server_targeting` - (Boolean) -* `cloud_server_host_header_override` - (Boolean) -* `continent` -* `country` -* `latitude` -* `longitude` -* `state_or_province` +* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. +* `nickname` - A descriptive label for the data center. +* `default_load_object` - Specifies the load reporting interface between you and the GTM system. + * `load_object` - A load object is a file that provides real-time information about the current load, maximum allowable load, and target load on each resource. + * `load_object_port` - Specifies the TCP port to connect to when requesting the load object. + * `load_servers` - (List) Specifies a list of servers to request the load object from. +* `city` - The name of the city where the data center is located. +* `clone_of` - Identifies the data center’s datacenterId of which this data center is a clone. +* `cloud_server_targeting` - (Boolean) Balances load between two or more servers in a cloud environment. +* `cloud_server_host_header_override` - (Boolean) Akamai's liveness test agents will populate the Host header with the host header value configured in the liveness test. +* `continent` - A two-letter code that specifies the continent where the data center maps to. +* `country` - A two-letter ISO 3166 country code that specifies the country where the data center maps to. +* `latitude` - Specifies the geographical latitude of the data center’s position. See also longitude within this object. +* `longitude` - Specifies the geographic longitude of the data center’s position. See also latitude within this object. +* `state_or_province` - Specifies a two-letter ISO 3166 country code for the state or province where the data center is located. Computed -The following arguments will be found in terraform.tfstate and can be referenced throughout the configuration. The values can NOT be changed. +The following arguments will be found in `terraform.tfstate` and can be referenced throughout the configuration. The values cannot be changed. -* `datacenter_id` -* `ping_interval` -* `ping_packet_size` -* `score_penalty` -* `servermonitor_liveness_count` -* `servermonitor_load_count` -* `servermonitor_pool` -* `virtual` - (Boolean) +* `datacenter_id`. +* `ping_interval`. +* `ping_packet_size`. +* `score_penalty`. +* `servermonitor_liveness_count`. +* `servermonitor_load_count`. +* `servermonitor_pool`. +* `virtual` - (Boolean). ### Backing Schema Reference -The GTM Datacenter backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#datacenter) - +The GTM Datacenter backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#datacenter). From dbfb381f1901f4224c7713ed83bed73789e7d899 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Mon, 1 Feb 2021 15:26:39 -0500 Subject: [PATCH 092/215] Finish Domain Resource description. --- docs/resources/gtm_domain.md | 59 ++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/docs/resources/gtm_domain.md b/docs/resources/gtm_domain.md index f2ab44356..5e694ba94 100644 --- a/docs/resources/gtm_domain.md +++ b/docs/resources/gtm_domain.md @@ -8,7 +8,7 @@ description: |- # akamai_gtm_domain -`akamai_gtm_domain` provides the resource for creating, configuring and importing a gtm domain to integrate easily with your existing GTM infrastructure to provide a secure, high performance, highly available and scalable solution for Global Traffic Management. Note: Import requires an ID of the format: `existing_domain_name` +`akamai_gtm_domain` provides the resource for creating, configuring and importing a GTM Domain, a basic building block of a traffic management configuration. Note: Import requires an ID of the format: `existing_domain_name`. ## Example Usage @@ -30,10 +30,10 @@ The following arguments are supported: Required -* `contract` - The contract ID (if creating domain) -* `group` - The currently selected group ID (if creating domain) -* `name` - Domain name -* `type` - Domain type +* `contract` - The contract ID (if creating domain). +* `group` - The currently selected group ID (if creating domain). +* `name` - Domain name. +* `type` - Domain type. Optional @@ -43,7 +43,7 @@ Optional * `default_timeout_penalty` - (Default: 25) * `load_imbalance_percentage` * `default_ssl_client_private_key` -* `default_error_penalty` - (Default: 75) +* `default_error_penalty` - (Default: 75) Specifies the download penalty score. If the download encounters an error, the web agent computes a score that is either the download time in seconds or a penalty score. * `cname_coalescing_enabled` - (Boolean) * `load_feedback` - (Boolean) * `default_ssl_client_certificate` @@ -51,30 +51,29 @@ Optional Computed -The following arguments will be found in terraform.tfstate and can be referenced throughout the configuration. The values can NOT be changed. - -* `default_unreachable_threshold` -* `min_pingable_region_fraction` -* `servermonitor_liveness_count` -* `round_robin_prefix` -* `servermonitor_load_count` -* `ping_interval` -* `max_ttl` -* `default_health_max` -* `map_update_interval` -* `max_properties` -* `max_resources` -* `default_error_penalty` -* `max_test_timeout` -* `default_health_multiplier` -* `servermonitor_pool` -* `min_ttl` -* `default_max_unreachable_penalty` -* `default_health_threshold` -* `min_test_interval` -* `ping_packet_size` +The following arguments will be found in `terraform.tfstate` and can be referenced throughout the configuration. The values cannot be changed. + +* `default_unreachable_threshold`. +* `min_pingable_region_fraction`. +* `servermonitor_liveness_count`. +* `round_robin_prefix`. +* `servermonitor_load_count`. +* `ping_interval`. +* `max_ttl`. +* `default_health_max`. +* `map_update_interval`. +* `max_properties`. +* `max_resources`. +* `default_error_penalty`. +* `max_test_timeout`. +* `default_health_multiplier`. +* `servermonitor_pool`. +* `min_ttl`. +* `default_max_unreachable_penalty`. +* `default_health_threshold`. +* `min_test_interval`. +* `ping_packet_size`. ### Backing Schema Reference -The GTM Domain backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#domain) - +The GTM Domain backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#domain). From 70c1fb02016d104c12cbb22f25695dc07d1ab996 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Mon, 1 Feb 2021 15:46:16 -0500 Subject: [PATCH 093/215] Finish Geo Map Resource description. --- docs/resources/gtm_asmap.md | 2 +- docs/resources/gtm_cidrmap.md | 4 ++-- docs/resources/gtm_domain.md | 24 ++++++++++++------------ docs/resources/gtm_geomap.md | 23 +++++++++++------------ 4 files changed, 26 insertions(+), 27 deletions(-) diff --git a/docs/resources/gtm_asmap.md b/docs/resources/gtm_asmap.md index 5ccdbb94d..d2965bea5 100644 --- a/docs/resources/gtm_asmap.md +++ b/docs/resources/gtm_asmap.md @@ -33,7 +33,7 @@ Required * `domain` - GTM Domain name for the AS Map. * `name` - A descriptive label for the AS map. Properties set up for asmapping can use this as reference. -* `default_datacenter` - A placeholder for all other AS zones, AS IDs not found in these AS zones. +* `default_datacenter` - A placeholder for all other AS zones not found in these AS zones. * `datacenter_id` - A unique identifier for an existing data center in the domain. * `nickname` - A descriptive label for all other AS zones, up to 128 characters. diff --git a/docs/resources/gtm_cidrmap.md b/docs/resources/gtm_cidrmap.md index b797c14d0..f6e76d7da 100644 --- a/docs/resources/gtm_cidrmap.md +++ b/docs/resources/gtm_cidrmap.md @@ -33,8 +33,8 @@ Required * `domain` - GTM Domain name for the AS Map. * `name` - A descriptive label for the CIDR map, up to 255 characters. -* `default_datacenter` - A placeholder for all other CIDR zones, CIDR blocks not found in these CIDR zones. - * `datacenter_id` - For each property, an identifier for all other CIDR zones’ CNAME. For example, 5400. +* `default_datacenter` - A placeholder for all other CIDR zones not found in these CIDR zones. + * `datacenter_id` - For each property, an identifier for all other CIDR zones. * `nickname` - A descriptive label for the all other CIDR blocks. Optional diff --git a/docs/resources/gtm_domain.md b/docs/resources/gtm_domain.md index 5e694ba94..c580f7b18 100644 --- a/docs/resources/gtm_domain.md +++ b/docs/resources/gtm_domain.md @@ -32,22 +32,22 @@ Required * `contract` - The contract ID (if creating domain). * `group` - The currently selected group ID (if creating domain). -* `name` - Domain name. -* `type` - Domain type. +* `name` - DNS name for a collection of GTM Properties. +* `type` - GTM Domain type of `failover-only`, `static`, `weighted`, `basic` or `full`. Optional -* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete -* `comment` - A descriptive comment -* `email_notification_list` - (List) -* `default_timeout_penalty` - (Default: 25) -* `load_imbalance_percentage` -* `default_ssl_client_private_key` +* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. +* `comment` - A descriptive note about changes to the domain. The maximum is 4000 characters. +* `email_notification_list` - (List) A list of email addresses to notify when a change is made to the domain. +* `default_timeout_penalty` - (Default: 25) Specifies the timeout penalty score. +* `load_imbalance_percentage` - Indicates the percent of load imbalance factor (LIF) for the domain. +* `default_ssl_client_private_key` - Specifies an optional Base64-encoded private key that corresponds with the TLS certificate for TLS-based liveness tests (HTTPS, SMTPS, POPS, and TCPS). * `default_error_penalty` - (Default: 75) Specifies the download penalty score. If the download encounters an error, the web agent computes a score that is either the download time in seconds or a penalty score. -* `cname_coalescing_enabled` - (Boolean) -* `load_feedback` - (Boolean) -* `default_ssl_client_certificate` -* `end_user_mapping_enabled` - (Boolean) +* `cname_coalescing_enabled` - (Boolean) If enabled, GTM collapses CNAME redirections in DNS answers when it knows the target of the CNAME. +* `load_feedback` - (Boolean) Indicates whether one or more measurements of load (resources) are defined by you and supplied by each data center in real time to balance load. +* `default_ssl_client_certificate` - Specifies an optional Base64-encoded certificate that corresponds with the private key for TLS-based liveness tests (HTTPS, SMTPS, POPS, and TCPS). +* `end_user_mapping_enabled` - (Boolean) Indicates whether the GTM Domain is using end user client subnet mapping. Computed diff --git a/docs/resources/gtm_geomap.md b/docs/resources/gtm_geomap.md index 001e1e6f0..1bcdb70f2 100644 --- a/docs/resources/gtm_geomap.md +++ b/docs/resources/gtm_geomap.md @@ -8,7 +8,7 @@ description: |- # akamai_gtm_geomap -`akamai_gtm_geomap` provides the resource for creating, configuring and importing a gtm Geographic map to integrate easily with your existing GTM infrastructure to provide a secure, high performance, highly available and scalable solution for Global Traffic Management. Note: Import requires an ID of the format: `existing_domain_name`:`existing_map_name` +`akamai_gtm_geomap` provides the resource for creating, configuring and importing a GTM Geographic map. Geographic mapping lets you configure a property that returns a CNAME based on the geographic location of the request. You can reuse maps for multiple properties or create new ones. To configure a property for geographic mapping, your domain needs at least one geographic map defined. Each map needs at least two definitions. This ensures that at least one definition maps one or more countries to a data center, and the second definition routes all other traffic. Note: Import requires an ID of the format: `existing_domain_name`:`existing_map_name`. ## Example Usage @@ -31,21 +31,20 @@ The following arguments are supported: Required -* `domain` - Domain name -* `name` - Resource name -* `default_datacenter` - * `datacenter_id` - * `nickname` +* `domain` - GTM Domain name for the Geographic Map. +* `name` - A descriptive label for the Geographic map. +* `default_datacenter` - A placeholder for all other geographic zones. + * `datacenter_id` - For each property, an identifier for all other geographic zones. + * `nickname` - A descriptive label for all other geographic zones. Optional * `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete -* `assignment` - (multiple allowed) - * `datacenter_id` - * `nickname` - * `countries` - (List) +* `assignment` - (multiple allowed) Contains information about the geographic zone groupings of countries. + * `datacenter_id` - A unique identifier for an existing data center in the domain. + * `nickname` - A descriptive label for the group. + * `countries` - (List) Specifies an array of two-letter ISO 3166 country codes, or for finer subdivisions, the two-letter country code and the two-letter stateOrProvince code separated by a forward slash. ### Backing Schema Reference -The GTM Geographic Map backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#geographicmap) - +The GTM Geographic Map backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#geographicmap). From 18e2d6ddc2cfc39056db489175690032d628f0d1 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Mon, 1 Feb 2021 16:37:32 -0500 Subject: [PATCH 094/215] Finish Property Resource description. --- docs/resources/gtm_asmap.md | 8 +- docs/resources/gtm_cidrmap.md | 8 +- docs/resources/gtm_datacenter.md | 10 +- docs/resources/gtm_domain.md | 10 +- docs/resources/gtm_geomap.md | 8 +- docs/resources/gtm_property.md | 153 +++++++++++++++---------------- docs/resources/gtm_resource.md | 8 +- 7 files changed, 102 insertions(+), 103 deletions(-) diff --git a/docs/resources/gtm_asmap.md b/docs/resources/gtm_asmap.md index d2965bea5..00f941e05 100644 --- a/docs/resources/gtm_asmap.md +++ b/docs/resources/gtm_asmap.md @@ -29,7 +29,7 @@ resource "akamai_gtm_asmap" "demo_asmap" { The following arguments are supported: -Required +### Required * `domain` - GTM Domain name for the AS Map. * `name` - A descriptive label for the AS map. Properties set up for asmapping can use this as reference. @@ -37,7 +37,7 @@ Required * `datacenter_id` - A unique identifier for an existing data center in the domain. * `nickname` - A descriptive label for all other AS zones, up to 128 characters. -Optional +### Optional * `wait_on_complete` - (Boolean, Default: `true`) Wait for transaction to complete. * `assignment` - (multiple allowed) Contains information about the AS zone groupings of AS IDs. @@ -45,7 +45,7 @@ Optional * `nickname` - A descriptive label for the group. * `as_numbers` - (List) Specifies an array of AS numbers. -### Backing Schema Reference +### Schema Reference -The GTM AS Map backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#asmap) +The GTM AS Map backing schema and more complete element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#asmap) diff --git a/docs/resources/gtm_cidrmap.md b/docs/resources/gtm_cidrmap.md index f6e76d7da..1e134bb19 100644 --- a/docs/resources/gtm_cidrmap.md +++ b/docs/resources/gtm_cidrmap.md @@ -29,7 +29,7 @@ resource "akamai_gtm_cidrmap" "demo_cidrmap" { The following arguments are supported: -Required +### Required * `domain` - GTM Domain name for the AS Map. * `name` - A descriptive label for the CIDR map, up to 255 characters. @@ -37,7 +37,7 @@ Required * `datacenter_id` - For each property, an identifier for all other CIDR zones. * `nickname` - A descriptive label for the all other CIDR blocks. -Optional +### Optional * `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. * `assignment` - (multiple allowed) Contains information about the CIDR zone groupings of CIDR blocks. @@ -45,7 +45,7 @@ Optional * `nickname` - A descriptive label for the CIDR zone group, up to 256 characters. * `blocks` - (List) Specifies an array of CIDR blocks. -### Backing Schema Reference +### Schema Reference -The GTM Cidr Map backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#cidrmap). +The GTM Cidr Map backing schema and more complete element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#cidrmap). diff --git a/docs/resources/gtm_datacenter.md b/docs/resources/gtm_datacenter.md index bed6b02f0..3fd3a44e7 100644 --- a/docs/resources/gtm_datacenter.md +++ b/docs/resources/gtm_datacenter.md @@ -25,11 +25,11 @@ resource "akamai_gtm_datacenter" "demo_datacenter" { The following arguments are supported: -Required +### Required * `domain` - GTM Domain name for the Datacenter. -Optional +### Optional * `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. * `nickname` - A descriptive label for the data center. @@ -47,7 +47,7 @@ Optional * `longitude` - Specifies the geographic longitude of the data center’s position. See also latitude within this object. * `state_or_province` - Specifies a two-letter ISO 3166 country code for the state or province where the data center is located. -Computed +### Computed The following arguments will be found in `terraform.tfstate` and can be referenced throughout the configuration. The values cannot be changed. @@ -60,6 +60,6 @@ The following arguments will be found in `terraform.tfstate` and can be referenc * `servermonitor_pool`. * `virtual` - (Boolean). -### Backing Schema Reference +### Schema Reference -The GTM Datacenter backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#datacenter). +The GTM Datacenter backing schema and more complete element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#datacenter). diff --git a/docs/resources/gtm_domain.md b/docs/resources/gtm_domain.md index c580f7b18..42eb10da3 100644 --- a/docs/resources/gtm_domain.md +++ b/docs/resources/gtm_domain.md @@ -28,14 +28,14 @@ resource "akamai_gtm_domain" "demodomain" { The following arguments are supported: -Required +### Required * `contract` - The contract ID (if creating domain). * `group` - The currently selected group ID (if creating domain). * `name` - DNS name for a collection of GTM Properties. * `type` - GTM Domain type of `failover-only`, `static`, `weighted`, `basic` or `full`. -Optional +### Optional * `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. * `comment` - A descriptive note about changes to the domain. The maximum is 4000 characters. @@ -49,7 +49,7 @@ Optional * `default_ssl_client_certificate` - Specifies an optional Base64-encoded certificate that corresponds with the private key for TLS-based liveness tests (HTTPS, SMTPS, POPS, and TCPS). * `end_user_mapping_enabled` - (Boolean) Indicates whether the GTM Domain is using end user client subnet mapping. -Computed +### Computed The following arguments will be found in `terraform.tfstate` and can be referenced throughout the configuration. The values cannot be changed. @@ -74,6 +74,6 @@ The following arguments will be found in `terraform.tfstate` and can be referenc * `min_test_interval`. * `ping_packet_size`. -### Backing Schema Reference +### Schema Reference -The GTM Domain backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#domain). +The GTM Domain backing schema and more complete element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#domain). diff --git a/docs/resources/gtm_geomap.md b/docs/resources/gtm_geomap.md index 1bcdb70f2..17e1f2946 100644 --- a/docs/resources/gtm_geomap.md +++ b/docs/resources/gtm_geomap.md @@ -29,7 +29,7 @@ resource "akamai_gtm_geomap" "demo_geomap" { The following arguments are supported: -Required +### Required * `domain` - GTM Domain name for the Geographic Map. * `name` - A descriptive label for the Geographic map. @@ -37,7 +37,7 @@ Required * `datacenter_id` - For each property, an identifier for all other geographic zones. * `nickname` - A descriptive label for all other geographic zones. -Optional +### Optional * `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete * `assignment` - (multiple allowed) Contains information about the geographic zone groupings of countries. @@ -45,6 +45,6 @@ Optional * `nickname` - A descriptive label for the group. * `countries` - (List) Specifies an array of two-letter ISO 3166 country codes, or for finer subdivisions, the two-letter country code and the two-letter stateOrProvince code separated by a forward slash. -### Backing Schema Reference +### Schema Reference -The GTM Geographic Map backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#geographicmap). +The GTM Geographic Map backing schema and more complete element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#geographicmap). diff --git a/docs/resources/gtm_property.md b/docs/resources/gtm_property.md index 0fad0b404..63f55ca28 100644 --- a/docs/resources/gtm_property.md +++ b/docs/resources/gtm_property.md @@ -8,7 +8,7 @@ description: |- # akamai_gtm_property -`akamai_gtm_property` provides the resource for creating, configuring and importing a gtm property to integrate easily with your existing GTM infrastructure to provide a secure, high performance, highly available and scalable solution for Global Traffic Management. Note: Import requires an ID of the format: `existing_domain_name`:`existing_property_name` +`akamai_gtm_property` provides the resource for creating, configuring and importing a GTM property, a set of IP addresses or CNAMEs that GTM provides in response to DNS queries based on a set of rules. Note: Import requires an ID of the format: `existing_domain_name`:`existing_property_name` ## Example Usage @@ -32,86 +32,85 @@ resource "akamai_gtm_property" "demo_property" { The following arguments are supported: -Required - -* `domain` - Domain name -* `name` - Property name -* `type` - Property type -* `score_aggregation_type` -* `handout_limit` -* `handout_mode` -* `traffic_target` - (multiple allowed) - * `datacenter_id` - * `enabled` - (Boolean) - * `weight` - * `servers` - (List) - * `name` - Traffic target name - * `handout_cname` - -Optional - -* `liveness_test` - (multiple allowed) - * `name` - Liveness test name - * `test_interval` - * `test_object_protocol` - * `test_timeout` - * `answers_required` - (Boolean) - * `disabled` - (Boolean) - * `disable_nonstandard_port_warning` - (Boolean) - * `error_penalty` - * `http_header` - (multiple allowed) - `name` - `value` - * `http_error3xx` - (Boolean) - * `http_error4xx` - (Boolean) - * `http_error5xx` - (Boolean) - * `peer_certificate_verification` - (Boolean) - * `recursion_requested` - (Boolean) - * `request_string` - * `resource_type` - * `response_string` - * `ssl_client_certificate` - * `ssl_client_private_key` - * `test_object` - * `test_object_password` - * `test_object_port` - * `test_object_username` - * `timeout_penalty` +### Required + +* `domain` - DNS name for the GTM Domain set that includes this Property. +* `name` - DNS name for a collection of IP address or CNAME responses. The value, together with the GTM domainName, forms the Property’s hostname. +* `type` - Specifies the load balancing behavior for the property. Either failover, geographic, cidrmapping, weighted-round-robin, weighted-hashed, weighted-round-robin-load-feedback, qtr, or performance. +* `score_aggregation_type` - Specifies how GTM aggregates liveness test scores across different tests, when multiple tests are configured. +* `handout_limit` - Indicates the limit for the number of live IPs handed out to a DNS request. +* `handout_mode` - Specifies how IPs are returned when more than one IP is alive and available. +* `traffic_target` - (multiple allowed) Contains information about where to direct data center traffic. + * `datacenter_id` - A unique identifier for an existing data center in the domain. + * `enabled` - (Boolean) Indicates whether the traffic target is used. You can also omit the traffic target, which has the same result as the false value. + * `weight` - Specifies the traffic weight for the target. + * `servers` - (List) Identifies the IP address or the hostnames of the servers. + * `name` - An alternative label for the traffic target. + * `handout_cname` - Specifies an optional data center for the property. The handoutCName is used when there are no servers configured for the property. + +### Optional + +* `liveness_test` - (multiple allowed) Contains information about the liveness tests, which are run periodically to determine whether your servers respond to requests. + * `name` - A descriptive name for the liveness test. + * `test_interval` - Indicates the interval at which the liveness test is run, in seconds. Requires a minimum of 10 seconds. + * `test_object_protocol` - Specifies the test protocol. EitherDNS, HTTP, HTTPS, FTP, POP, POPS, SMTP, SMTPS, TCP, or TCPS. + * `test_timeout` - Specifies the duration of the liveness test before it fails. The range is from 0.001 to 60 seconds. + * `answers_required` - (Boolean) If testObjectProtocol is DNS, requires an answer to the DNS query to be considered a success. + * `disabled` - (Boolean) Disables the liveness test. When disabled, GTM will cease to run the test, effectively treating it as if it no longer exists. + * `disable_nonstandard_port_warning` - (Boolean) Disables warnings when non-standard ports are used. + * `error_penalty` - Specifies the score that’s reported if the liveness test encounters an error other than timeout, such as connection refused, and 404. + * `http_header` - (multiple allowed) Contains HTTP headers to send if the testObjectProtocol is http or https. + `name` - Name of HTTP header. + `value` - Value of HTTP header. + * `http_error3xx` - (Boolean) Treats a 3xx HTTP response as a failure if the testObjectProtocol is http, https, or ftp. + * `http_error4xx` - (Boolean) Treats a 4xx HTTP response as a failure if the testObjectProtocol is http, https, or ftp. + * `http_error5xx` - (Boolean) Treats a 5xx HTTP response as a failure if the testObjectProtocol is http, https, or ftp. + * `peer_certificate_verification` - (Boolean) Validates the origin certificate. Applies only to tests with testObjectProtocol of https. + * `recursion_requested` - (Boolean) Indicates that testObjectProtocol is DNS. The DNS query is recursive. + * `request_string` - Specifies a request string. + * `resource_type` - Specifies the query type, if testObjectProtocol is DNS. + * `response_string` - Specifies a response string. + * `ssl_client_certificate` - Indicates a Base64-encoded certificate. SSL client certificates are available for livenessTests that use secure protocols. + * `ssl_client_private_key` - Indicates a Base64-encoded private key. The private key used to generate or request a certificate for livenessTests can’t have a passphrase nor be used for any other purpose. + * `test_object` - Specifies the static text that acts as a stand-in for the data that you’re sending on the network. + * `test_object_password` - Specifies the test object’s password. It is required if testObjectProtocol is ftp. + * `test_object_port` - Specifies the port number for the testObject. + * `test_object_username` - A descriptive name for the testObject. + * `timeout_penalty`- Specifies the score to be reported if the liveness test times out. * `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete -* `failover_delay` -* `failback_delay` -* `ipv6` - (Boolean) -* `stickiness_bonus_percentage` -* `stickiness_bonus_constant` -* `health_threshold` -* `use_computed_targets` - (Boolean) -* `backup_ip` -* `balance_by_download_score` - (Boolean) -* `static_ttl` -* `unreachable_threshold` -* `health_multiplier` -* `dynamic_ttl` -* `max_unreachable_penalty` -* `map_name` -* `load_imbalance_percentage` -* `health_max` -* `cname` -* `comments` -* `ghost_demand_reporting` -* `min_live_fraction` -* `static_rr_set` - (multiple allowed) - * `type` - * `ttl` - * `rdata` - (List) +* `failover_delay` - Specifies the failover delay in seconds. +* `failback_delay` - Specifies the failback delay in seconds. +* `ipv6` - (Boolean) Indicates the type of IP address handed out by a Property. +* `stickiness_bonus_percentage` - Specifies a percentage used to configure data center affinity. +* `stickiness_bonus_constant` - Specifies a constant used to configure data center affinity. +* `health_threshold` - Configures a cutoff value that is computed from the median scores. +* `use_computed_targets` - (Boolean) For load-feedback domains only, this specifies that you want GTM to automatically compute target load. +* `backup_ip` - Specifies a backup IP. When GTM declares that all of the targets are down, the backupIP is handed out. +* `balance_by_download_score` - (Boolean) Indicates whether download score based load balancing is enabled. +* `static_ttl` - Specifies the TTL in seconds for static resource records that do not change based on the requesting name server IP. +* `unreachable_threshold` - For performance domains, this specifies a penalty value that’s added to liveness test scores when data centers have an aggregated loss fraction higher than this value. +* `health_multiplier` - Configures a cutoff value that is computed from the median scores. +* `dynamic_ttl` - Indicates the TTL in seconds for records that might change dynamically based on liveness and load balancing such as A and AAAA records, and CNAMEs. +* `max_unreachable_penalty` - For performance domains, this specifies a penalty value that’s added to liveness test scores when data centers show an aggregated loss fraction higher than the penalty value. +* `map_name` - A descriptive label for a GeographicMap or a CidrMap that’s required if the property is either geographic or cidrmapping, in which case mapName needs to reference either an existing GeographicMap or CidrMap in the same domain. +* `load_imbalance_percentage` - Indicates the percent of load imbalance factor (LIF) for the property. +* `health_max` - Defines the absolute limit beyond which IPs are declared unhealthy. +* `cname` - Indicates the fully qualified name aliased to a particular property. +* `comments` - A descriptive note about changes to the domain. The maximum is 4000 characters. +* `ghost_demand_reporting` - Use load estimates from Akamai Ghost utilization messages. +* `min_live_fraction` - Specifies what fraction of the servers need to respond to requests so GTM considers the data center up and able to receive traffic. +* `static_rr_set` - (multiple allowed) Contains static recordsets. + * `type` - The record type. + * `ttl` - The number of seconds that this record should live in a resolver’s cache before being refetched. + * `rdata` - (List) An array of data strings, representing multiple records within a set. Computed -The following arguments will be found in terraform.tfstate and can be referenced throughout the configuration. The values can NOT be changed. +The following arguments will be found in `terraform.tfstate` and can be referenced throughout the configuration. The values cannot be changed. -* `weighted_hash_bits_for_ipv4` -* `weighted_hash_bits_for_ipv6` +* `weighted_hash_bits_for_ipv4`. +* `weighted_hash_bits_for_ipv6`. -### Backing Schema Reference - -The GTM Property backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#property) +### Schema Reference +The GTM Property backing schema and more complete element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#property). diff --git a/docs/resources/gtm_resource.md b/docs/resources/gtm_resource.md index 5a66d6d16..9bd0899b8 100644 --- a/docs/resources/gtm_resource.md +++ b/docs/resources/gtm_resource.md @@ -27,15 +27,15 @@ resource "akamai_gtm_resource" "demo_resource" { The following arguments are supported: -Required +### Required * `domain` - Domain name * `name` - Resource name * `aggregation_type` * `type` - Resource type -Optional - +### Optional + * `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete * `resource_instance` - (multiple allowed) * `datacenter_id` @@ -53,7 +53,7 @@ Optional * `max_u_multiplicative_increment` * `decay_rate` -### Backing Schema Reference +### Schema Reference The GTM Resource backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#resource) From d0d49c4d614a0ee047e2eab2bd8132fce8915f08 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Mon, 1 Feb 2021 16:49:25 -0500 Subject: [PATCH 095/215] Finish Resource description. --- docs/resources/gtm_cidrmap.md | 2 +- docs/resources/gtm_geomap.md | 2 +- docs/resources/gtm_property.md | 4 +-- docs/resources/gtm_resource.md | 45 +++++++++++++++++----------------- 4 files changed, 26 insertions(+), 27 deletions(-) diff --git a/docs/resources/gtm_cidrmap.md b/docs/resources/gtm_cidrmap.md index 1e134bb19..5fe58ecdd 100644 --- a/docs/resources/gtm_cidrmap.md +++ b/docs/resources/gtm_cidrmap.md @@ -8,7 +8,7 @@ description: |- # akamai_gtm_cidrmap -`akamai_gtm_cidrmap` provides the resource for creating, configuring and importing a GTM Classless Inter-Domain Routing (CIDR) Map. CIDR mapping uses the IP addresses of the requesting name server to provide IP-specific CNAME entries, which lets you direct internal users to a specific environment or direct to the origin. This provides different responses to an internal corporate DNS infrastructure such as internal test environments and another answer for all other (defaultDatacenter) name servers. CIDR maps split the Internet into multiple CIDR block zones. Properties that use a map can specify a handout CNAME for each zone on the property’s editing page. To configure a property for CIDR mapping, your domain needs at least one CIDR map defined.. Note: Import requires an ID of the format: `existing_domain_name`:`existing_map_name` +`akamai_gtm_cidrmap` provides the resource for creating, configuring and importing a GTM Classless Inter-Domain Routing (CIDR) Map. CIDR mapping uses the IP addresses of the requesting name server to provide IP-specific CNAME entries, which lets you direct internal users to a specific environment or direct to the origin. This provides different responses to an internal corporate DNS infrastructure such as internal test environments and another answer for all other (defaultDatacenter) name servers. CIDR maps split the Internet into multiple CIDR block zones. Properties that use a map can specify a handout CNAME for each zone on the property’s editing page. To configure a property for CIDR mapping, your domain needs at least one CIDR map defined.. Note: Import requires an ID of the format: `existing_domain_name`:`existing_map_name`. ## Example Usage diff --git a/docs/resources/gtm_geomap.md b/docs/resources/gtm_geomap.md index 17e1f2946..9c3fe3868 100644 --- a/docs/resources/gtm_geomap.md +++ b/docs/resources/gtm_geomap.md @@ -39,7 +39,7 @@ The following arguments are supported: ### Optional -* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete +* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. * `assignment` - (multiple allowed) Contains information about the geographic zone groupings of countries. * `datacenter_id` - A unique identifier for an existing data center in the domain. * `nickname` - A descriptive label for the group. diff --git a/docs/resources/gtm_property.md b/docs/resources/gtm_property.md index 63f55ca28..e95e4ed9c 100644 --- a/docs/resources/gtm_property.md +++ b/docs/resources/gtm_property.md @@ -8,7 +8,7 @@ description: |- # akamai_gtm_property -`akamai_gtm_property` provides the resource for creating, configuring and importing a GTM property, a set of IP addresses or CNAMEs that GTM provides in response to DNS queries based on a set of rules. Note: Import requires an ID of the format: `existing_domain_name`:`existing_property_name` +`akamai_gtm_property` provides the resource for creating, configuring and importing a GTM property, a set of IP addresses or CNAMEs that GTM provides in response to DNS queries based on a set of rules. Note: Import requires an ID of the format: `existing_domain_name`:`existing_property_name`. ## Example Usage @@ -77,7 +77,7 @@ The following arguments are supported: * `test_object_port` - Specifies the port number for the testObject. * `test_object_username` - A descriptive name for the testObject. * `timeout_penalty`- Specifies the score to be reported if the liveness test times out. -* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete +* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. * `failover_delay` - Specifies the failover delay in seconds. * `failback_delay` - Specifies the failback delay in seconds. * `ipv6` - (Boolean) Indicates the type of IP address handed out by a Property. diff --git a/docs/resources/gtm_resource.md b/docs/resources/gtm_resource.md index 9bd0899b8..af5df31b6 100644 --- a/docs/resources/gtm_resource.md +++ b/docs/resources/gtm_resource.md @@ -8,7 +8,7 @@ description: |- # akamai_gtm_resource -`akamai_gtm_resource` provides the resource for creating, configuring and importing a gtm resource to integrate easily with your existing GTM infrastructure to provide a secure, high performance, highly available and scalable solution for Global Traffic Management. Note: Import requires an ID of the format: `existing_domain_name`:`existing_resource_name` +`akamai_gtm_resource` provides the resource for creating, configuring and importing a GTM resource that represents a constraint on how much load a data center can absorb. Consider a Resource as something that can impose a capacity constraint on the load associated with one or more Properties in a Datacenter. Examples of Resources include: bandwidth, CPU load average, database queries per second, or disk operations per second. Note: Import requires an ID of the format: `existing_domain_name`:`existing_resource_name`. ## Example Usage @@ -29,31 +29,30 @@ The following arguments are supported: ### Required -* `domain` - Domain name -* `name` - Resource name -* `aggregation_type` -* `type` - Resource type +* `domain` - DNS name for the GTM Domain set that includes this Property. +* `name` - A descriptive label for the Resource. +* `aggregation_type` - Specifies how GTM handles different load numbers when multiple load servers are used for a data center or property. +* `type` - Indicates the kind of loadObject format used to determine the load on the resource. ### Optional -* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete -* `resource_instance` - (multiple allowed) - * `datacenter_id` - * `load_object` - * `load_object_port` - * `load_servers` - (List) - * `use_default_load_object` - (Boolean) -* `host_header` -* `least_squares_decay` -* `upper_bound` -* `description` -* `leader_string` -* `constrained_property` -* `load_imbalance_percent` -* `max_u_multiplicative_increment` -* `decay_rate` +* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. +* `resource_instance` - (multiple allowed) Contains information about the resources that constrain the properties within the data center. + * `datacenter_id` - A unique identifier for an existing data center in the domain. + * `load_object` - Identifies the load object file used to report real-time information about the current load, maximum allowable load, and target load on each resource. + * `load_object_port` - Specifies the TCP port of the loadObject. + * `load_servers` - (List) Specifies a list of servers from which to request the load object. + * `use_default_load_object` - (Boolean) Indicates whether a default loadObject is used for the resources. +* `host_header` - Optionally specifies the host header used when fetching the load object. +* `least_squares_decay` - For internal use only. Unless Akamai indicates otherwise, omit the value or set it to null. +* `upper_bound` - An optional sanity check that specifies the maximum allowed value for any component of the load object. +* `description` - A descriptive note to help you track what the resource constrains. +* `leader_string` - Specifies the text that comes before the loadObject. +* `constrained_property` - Specifies the name of the property that this resource constrains, or ** to constrain all properties. +* `load_imbalance_percent` - Indicates the percent of load imbalance factor (LIF) for the property. +* `max_u_multiplicative_increment` - For internal use only. Unless Akamai indicates otherwise, omit the value or set it to null. +* `decay_rate` - For internal use only. Unless Akamai indicates otherwise, omit the value or set it to null. ### Schema Reference -The GTM Resource backing schema and element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#resource) - +The GTM Resource backing schema and more element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#resource) From c664a66adb04db617e144e8cb29125e04c348d35 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Tue, 2 Feb 2021 06:42:21 -0500 Subject: [PATCH 096/215] Editing and content improvements --- docs/guides/get_started_dns_zone.md | 221 +++++++++----------------- docs/guides/get_started_gtm_domain.md | 95 ++--------- 2 files changed, 85 insertions(+), 231 deletions(-) diff --git a/docs/guides/get_started_dns_zone.md b/docs/guides/get_started_dns_zone.md index 2ca22e408..b66d8392f 100644 --- a/docs/guides/get_started_dns_zone.md +++ b/docs/guides/get_started_dns_zone.md @@ -12,94 +12,33 @@ importing existing zones and recordsets. To get more information about Edge DNS, see: -* [API documentation](https://developer.akamai.com/api/cloud_security/edge_dns_zone_management/v2.html) -* How-to Guides - * [Official Documentation](https://learn.akamai.com/en-us/products/cloud_security/edge_dns.html) +* Developer - [API documentation](https://developer.akamai.com/api/cloud_security/edge_dns_zone_management/v2.html). +* User Guide - [Official Documentation](https://learn.akamai.com/en-us/products/cloud_security/edge_dns.html). -## Configure the Terraform Provider - -Set up your credential files as described in [Get Started with Akamai APIs](https://developer.akamai.com/api/getting-started), and include authorization for the GTM Config API. - -Next, we need to configure the provider with our credentials. This is done using a provider configuration block. - -1. Create a new folder called `terraform` -1. Inside the new folder, create a new file called `akamai.tf`. -1. Add the provider configuration to your `akamai.tf` file: - -```hcl -provider "akamai" { - dns { - host = "..." - access_token = "..." - client_token = "..." - client_secret = "..." - } -} -``` - -## Prerequisites - -To create a zone there are several dependencies you must first meet: - -* **Contract ID**: The ID of the contract under which the zone and contained recordsets will live -* **Group ID**: The ID of the group under which the zone and contained recordsets will live - -To import an existing zone and recordsets, you must also know the identifiers or the objects; e.g. zone and recordset names in addition to the prior information. - -## Retrieving The Contract ID - -You can fetch your contract ID automatically using the [`akamai_contract` data source](../data-sources/property_contract.md). To fetch the default contract ID no attributes need to be set: - -```hcl -data "akamai_contract" "default" { - -} -``` - -Alternatively, if you have multiple contracts, you can specify the `group` which contains it: - -```hcl -data "akamai_contract" "default" { - group_name = "default" -} -``` - -You can now refer to the contract ID using the `id` attribute: `data.akamai_contract.default.id`. - -## Retrieving The Group ID - -Similarly, you can fetch your group ID automatically using the [`akamai_group` data source](../data-sources/property_group.md). To fetch the default group ID no attributes other than contract need to be set: - -```hcl -data "akamai_group" "default" { - contract_id = data.akamai_contract.default.id -} -``` - -To fetch a specific group, you can specify the `name` argument: - -```hcl -data "akamai_group" "default" { - name = "example" - contract_id = data.akamai_contract.default.id -} -``` - -You can now refer to the group ID using the `id` attribute: `data.akamai_group.default.id`. +Remember to start with the Get Started with the [Akamai Terraform Provider Guide](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_provider). You should have a valid `akamai.tf` Terraform configuration at this point before adding the DNS module configuration. ## Creating a DNS Zone The zone itself is represented by a [`akamai_dns_zone` resource](../resources/dns_zone.md). Add this new resource block to your `akamai.tf` file after the provider block. Note: the zone should be the first DNS resource created as it provides operating context for all other recordset resources. -To define the entire configuration, we start by opening the resource block and giving the zone a name. In this case we’re going to use the name "example". +To define the entire configuration, we start by opening the resource block and giving the `zone` a name. In this case we’re going to use the name "example." -Next, we set the required (zone, type, group, contract) and optional (comment) arguments. +Next, we set the required (`zone`, `type`, `group`, `contract`) and optional (`comment`) arguments. -Once you’re done, your zone configuration file should look like this: +Once done, your zone configuration file should include configuration items such as: ```hcl +terraform { + required_providers { + akamai = { + source = "akamai/akamai" + version = "1.2.0" + } + } +} + locals { - section = "default" + section = "default" } provider "akamai" { @@ -113,28 +52,28 @@ data "akamai_group" "default" { contract_id = data.akamai_contract.default.id } -resource "akamai_dns_zone" "example" { +resource "akamai_dns_zone" "example_com" { zone = "examplezone.com" # Zone Name - type = "secondary" # Zone type - master = [ "1.2.3.4" ] # Zone master(s) + type = "secondary" # Zone type + master = [ "1.2.3.4" ] # Zone master(s) group = data.akamai_group.default.id # Group ID variable contract = data.akamai_contract.default.id # Contract ID variable comment = "example zone demo" } ``` -> **Note:** Notice that we’re using variables from the previous section to reference the group and contract IDs. These will automatically be replaced at runtime by Terraform with the actual values. +> **Note:** Notice the use of variables from the previous section to reference the group and contract IDs. These will automatically be replaced at runtime by Terraform with the actual values. ### Primary Zones -Creating primary zones through Terraform is best performed through the following multi step process. In addition to the Terraform provider, you will need to download and install the Akamai CLI and CLI-Terraform package. +Creating primary zones through Terraform is best performed through the following multi-step process. To complete this step, you will need to download and install the [Akamai CLI](https://developer.akamai.com/cli) and [CLI-Terraform package](https://github.com/akamai/cli-terraform). #### Configure Zone -Create the zone configuration in a new zone configuration file. For this example, use example_primary_zone_com.tf +Create the zone configuration in a new zone configuration file. For this example, use `example_primary_zone_com.tf`. -Note: Subsequent steps will require the zone config file be named `.tf` with dots replaced by underscores. +Note: Subsequent steps will require the zone configuration file be named `.tf` with dots replaced by underscores. -Example configuration: +##### Example configuration: ```hcl locals { @@ -164,23 +103,26 @@ resource "akamai_dns_zone" "primary_example" { } ``` -Run Terraform Apply +### Validate Terraform Zone Configuration and State -Note: Creating a primary zone has the side effect of creating both initial SOA and NS records. Without these two records, the zone can not be managed. +``` +$ terraform plan +``` -#### Adding Zone SOA and NS Records To TF Configuration +Notes: You can run `terraform plan` many times. -The zone's top level SOA and NS records now need to be added to the Terraform configuration. These records have been created and pre populated in the Akamai DNS Infrastructure. +### Adding Zone SOA and NS Records To TF Configuration -Use CLI-Terraform to add the SOA and NS records by performing the following steps: +Creating a primary zone has the side effect of creating both initial SOA and NS records. Without these two recordsets, the zone cannot be managed. Using the CLI-Terraform CLI package, the zone's top level SOA and NS records now need to be added to the Terraform configuration as follows. +#### Create a List of Zone Recordsets First, create a list of the zone's current recordsets. ``` $ akamai terraform create-zone example_primary_zone.com --resources ``` -The file, example_primary_zone_com_resources.json, will be generated with the following content: +The command will generate a file, `example_primary_zone_com_resources.json`, with the following content: ``` { @@ -194,13 +136,15 @@ The file, example_primary_zone_com_resources.json, will be generated with the fo } ``` +#### Update the Terraform Zone Configuration File + Next, update the Terraform Zone configuration file using the previously generated JSON as input. ``` $ akamai terraform create-zone example_primary_zone.com --createconfig ``` -The zone configuration file, example_primary_zone_com.tf, will be updated with the resulting content: +The zone configuration file, `example_primary_zone_com.tf`, will be updated with the resulting content: ``` resource "akamai_dns_zone" "primary_example" { @@ -233,21 +177,23 @@ resource "akamai_dns_record" "example_primary_zone_com_example_primary_zone_com_ ttl = 86400 } ``` -Note: Name server targets have been masked. Also, a default dnsvars.tf file is generated. It can be ignored, deleted or used. +Note: Name server targets have been masked. Also, a default `dnsvars.tf` file is generated. It can be ignored, deleted or used. Other Terraform configuration files can reference variables in this file. + +#### Generate a Resource Import Script -Next, generate zone resources import script using previously generated output. +Next, generate a zone resources import script using previously generated output. ``` $ akamai terraform create-zone example_primary_zone.com --importscript ``` -The file example_primary_zone.com_resource_import.script is generated with the following content: +The file `example_primary_zone.com_resource_import.script` is generated with the following content: -```bash +``` terraform init -terraform import akamai_dns_zone.egl_clidns_primary_test_com egl_clidns_primary_test.com -terraform import akamai_dns_record.egl_clidns_primary_test_com_egl_clidns_primary_test_com_NS egl_clidns_primary_test.com#egl_clidns_primary_test.com#NS -terraform import akamai_dns_record.egl_clidns_primary_test_com_egl_clidns_primary_test_com_SOA egl_clidns_primary_test.com#egl_clidns_primary_test.com#SOA +terraform import akamai_dns_zone.clidns_primary_test_com clidns_primary_test.com +terraform import akamai_dns_record.clidns_primary_test_com_clidns_primary_test_com_NS clidns_primary_test.com#clidns_primary_test.com#NS +terraform import akamai_dns_record.clidns_primary_test_com_clidns_primary_test_com_SOA clidns_primary_test.com#clidns_primary_test.com#SOA ``` Next, edit the script file and remove the line `terraform import akamai_dns_zone.egl_clidns_primary_test_com egl_clidns_primary_test.com` as the zone does not need to be imported. @@ -262,7 +208,7 @@ $ ./example_primary_zone.com_resource_import.script The Terraform configuration and state will now contain the zone's SOA and NS Records with values consistent with the Akamai DNS Infrastructure. -#### Validate Terraform Zone Configuration and State +### Validate Terraform Zone Configuration and State ``` $ terraform plan @@ -276,7 +222,7 @@ To define the entire configuration, we start by opening the resource block and g Next, we set the required (zone, recordtype, ttl) and any optional/required arguments based on recordtype. Required fields for each record type are itemized in [`akamai_dns_record` resource](../resources/dns_record.md). -Once you’re done, your record configuration should look like this: +Once complete, your record configuration should look like this: ```hcl resource "akamai_dns_record" "example_a_record" { @@ -288,35 +234,15 @@ resource "akamai_dns_record" "example_a_record" { } ``` -## Initialize the Provider - -Once you have your configuration complete, save the file. Then switch to the terminal to initialize Terraform using the command: - -```bash -$ terraform init -``` - -This command will install the latest version of the Akamai Provider, as well as any other providers necessary (such as the local provider). To update the Akamai Provider version after a new release, simply run `terraform init` again. - -## Test Your Configuration - -To test your configuration, use `terraform plan`: - -```bash -$ terraform plan -``` - -This command will make Terraform create a plan for the work it will do based on the configuration file. This will not actually make any changes and is safe to run as many times as you like. - ## Apply Changes -To actually create our zone and recordset, we need to instruct Terraform to apply the changes outlined in the plan. To do this, in the terminal, run the command: +To actually create our zone and recordset, we need to instruct Terraform to apply the changes outlined in the plan. To do this, run the command: -```bash +``` $ terraform apply ``` -Once this completes your zone and recordset will have been created. You can verify this in [Akamai Control Center](https://control.akamai.com). +Once this completes, your zone and recordset will have been created. You can verify this in [Akamai Control Center](https://control.akamai.com). ## Import @@ -331,11 +257,19 @@ $ terraform import akamai_dns_record.{{record resource name}} {{edge dns zone na ## Working With MX Records -MX Record resource configurations may be instantiated in a number of different forms. These forms consist of: +MX Record resource configurations may be instantiated in three different forms: + +1. Coupling Priority and Host +2. Assigning Priority to Hosts via Variables +3. Instance Generation -### Coupling Priority an Host +### Coupling Priority and Host -With this configuration style, each target entry includes both the priority and host. The following configuration +With this configuration style, each target entry includes both the priority and host. The following configuration will produce a recordset rdata value of: + +``` +["0 smtp-0.example.com.", "10 smtp-1.example.com."] +``` ``` resource "akamai_dns_record" "mx_record_self_contained" { @@ -346,16 +280,15 @@ resource "akamai_dns_record" "mx_record_self_contained" { ttl = 300 } ``` -will produce a recordset rdata value of - -``` -["0 smtp-0.example.com.", "10 smtp-1.example.com."] -``` ### Assigning Priority to Hosts via Variables -With this configuration style, a number of hosts will be defined in the target field as a list. A starting priority and priority_increment are also defined. The provider -will construct the rdata values by incrementally pairing and incrementing the priority by the priority_increment. For example, the following configuration +With this configuration style, a number of hosts will be defined in the target field as a list. A starting `priority` and `priority_increment` are also defined. The provider +will construct the rdata values by incrementally pairing and incrementing the `priority` by the `priority_increment`. For example, the following configuration will produce a recordset rdata value of: + +``` +["10 smtp-1.example.com.", "20 smtp-2.example.com.", "30 smtp-3.example.com."] +``` ``` resource "akamai_dns_record" "mx_record_pri_increment" { @@ -368,15 +301,14 @@ resource "akamai_dns_record" "mx_record_pri_increment" { ttl = 900 } ``` -will produce a recordset rdata value of - -``` -["10 smtp-1.example.com.", "20 smtp-2.example.com.", "30 smtp-3.example.com."] -``` ### Instance Generation -With this configuration style, a number of host instances can be generated by using Terraform's count or for/each construct. For example, the following configuration +With this configuration style, a number of host instances can be generated using Terraform's count or for/each construct. For example, the following configuration will produce three distinct resource instances, each with a single target and priority, and an aggregated recordset rdata value of: + +``` +["0 smtp-0.example.com.", "10 smtp-1.example.com.", "20 smtp-2.example.com."] +``` ``` resource "akamai_dns_record" "mx_record_instances" { @@ -389,17 +321,12 @@ resource "akamai_dns_record" "mx_record_instances" { priority = count.index*10 } ``` -will produce three distinct resource instances, each with a single target and priority, and an aggregated recordset rdata value of - -``` -["0 smtp-0.example.com.", "10 smtp-1.example.com.", "20 smtp-2.example.com."] -``` ## Important Behavior Considerations -* Concurrrent modifications thru the Terraform provider and the UI may result in configuration drift and require manual intervention to reconcile. This issue is particularly a concern for MX records. +* Concurrent and independent modifications through the Terraform provider and Control Center UI may result in configuration drift and require manual intervention to reconcile the local Terraform state. This issue is particularly a concern for MX records. * Deletion of a record resource with multiple instances or deletion of a single instance, will result in the entire remote recordset resource being removed. -* Record configurations and state include a computed record_sha field. This field is used represent the current resource state as well as to compare local MX record configuration with the remote configuration. This field will not exist in upgraded configurations. As such, doing a plan on an existing MX record may result in the following informational message which can be ignored. +* Record configurations and state include a computed `record_sha` field that represents the current resource state to compare the local and remote MX record configurations. This field will not exist in upgraded configurations. As such, doing a plan on an existing MX record may result in the following message to ignore. ``` No changes. Infrastructure is up-to-date. diff --git a/docs/guides/get_started_gtm_domain.md b/docs/guides/get_started_gtm_domain.md index e0258051e..fc0ac3aea 100644 --- a/docs/guides/get_started_gtm_domain.md +++ b/docs/guides/get_started_gtm_domain.md @@ -11,86 +11,14 @@ The Akamai Provider for Terraform provides you the ability to automate the creat To get more information about Global Traffic Management, see: -* [API documentation](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html) -* How-to Guides - * [Official Documentation](https://learn.akamai.com/en-us/products/web_performance/global_traffic_management.html) +* Developer - [API documentation](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html) +* User Guide - [Official Documentation](https://learn.akamai.com/en-us/products/web_performance/global_traffic_management.html) -## Configure the Terraform Provider +Remember to start by reviewing the Get Started with the [Akamai Terraform Provider Guide](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_provider). You should have a valid `akamai.tf` Terraform configuration at this point before adding the GTM module configuration. -Set up your credential files as described in [Get Started with Akamai APIs](https://developer.akamai.com/api/getting-started), and include authorization for the GTM Config API +## Create a GTM Domain -Next, we need to configure the provider with our credentials. This is done using a provider configuration block. - -1. Create a new folder called `terraform` -1. Inside the new folder, create a new file called `akamai.tf`. -1. Add the provider configuration to your `akamai.tf` file: - -```hcl -provider "akamai" { - edgerc = "~/.edgerc" - config_section = "default" - gtm { - host = "..." - access_token = "..." - client_token = "..." - client_secret = "..." - } -} -``` - -## Prerequisites - -To create a domain there are several dependencies you must first meet: - -* **Contract ID**: The ID of the contract under which the domain and contained objects will live -* **Group ID**: The ID of the group under which the domain and contained objects will live - -To import an existing domain and contained objects, you must also know the identifiers or the objects; e.g. domain name, datacenter id or object name in addition to the prior information. - -## Retrieving The Contract ID - -You can fetch your contract ID automatically using the [`akamai_contract` data source](../data-sources/property_contract.md). To fetch the default contract ID no attributes need to be set: - -```hcl -data "akamai_contract" "default" { - -} -``` - -Alternatively, if you have multiple contracts, you can specify the `group` which contains it: - -```hcl -data "akamai_contract" "default" { - group_name = "default" -} -``` - -You can now refer to the contract ID using the `id` attribute: `data.akamai_contract.default.id`. - -## Retrieving The Group ID - -Similarly, you can fetch your group ID automatically using the [`akamai_group` data source](../data-sources/property_group.md). To fetch the default group ID no attributes other than contract need to be set: - -```hcl -data "akamai_group" "default" { - contract_id = data.akamai_contract.default.id -} -``` - -To fetch a specific group, you can specify the `name` argument: - -```hcl -data "akamai_group" "default" { - name = "example" - contract_id = data.akamai_contract.default.id -} -``` - -You can now refer to the group ID using the `id` attribute: `data.akamai_group.default.id`. - -## Creating a GTM Domain - -The domain itself is represented by an [`akamai_gtm_domain` resource](../resources/gtm_domain.md). Add this new resource block to your `akamai.tf` file after the provider block. Note: the domain must be the first GTM resource created as it provides operating context for all other contained objects. +The domain itself is represented by a [`akamai_gtm_domain` resource](../resources/gtm_domain.md). Add this new resource block to your `akamai.tf` file after the provider block. Note: the domain must be the first GTM resource created as it provides operating context for all other contained objects. To define the entire configuration, we start by opening the resource block and giving the domain a name. In this case we’re going to use the name "example". @@ -110,7 +38,7 @@ resource "akamai_gtm_domain" "example" { ``` > **Note:** Notice that we’re using variables from the previous section to reference the group and contract IDs. These will automatically be replaced at runtime by Terraform with the actual values. -## Creating a GTM Datacenter +## Create a GTM Datacenter The datacenter itself is represented by an [`akamai_gtm_datacenter` resource](../resources/gtm_datacenter.md). Add this new block to your `akamai.tf` file after the provider block. @@ -128,7 +56,7 @@ resource "akamai_gtm_datacenter" "example_dc" { } ``` -## Creating a GTM Property +## Create a GTM Property The property itself is represented by an [`akamai_gtm_property` resource](../resources/gtm_property.md). Add this new block to your `akamai.tf` file after the provider block. @@ -193,7 +121,7 @@ resource "akamai_gtm_property" "example_prop" { Once you have your configuration complete, save the file. Then switch to the terminal to initialize Terraform using the command: -```bash +``` $ terraform init ``` @@ -203,7 +131,7 @@ This command will install the latest version of the Akamai Provider, as well as To test your configuration, use `terraform plan`: -```bash +``` $ terraform plan ``` @@ -213,13 +141,13 @@ This command will make Terraform create a plan for the work it will do based on To actually create our domain, datacenter and property;, we need to instruct Terraform to apply the changes outlined in the plan. To do this, in the terminal, run the command: -```bash +``` $ terraform apply ``` Once this completes your domain, datacenter and property will have been created. You can verify this in [Akamai Control Center](https://control.akamai.com) or via the [Akamai CLI](https://developer.akamai.com/cli). -## Import +## Import Existing GTM Resource Existing GTM resources may be imported using the following formats: @@ -234,4 +162,3 @@ $ terraform import akamai_gtm_asmap.{{asmap resource name}} {{gtm domain name}}: ``` [Migrating A GTM Domain](../guides/faq.md#migrating-a-gtm-domain-and-contained-objects-to-terraform) discusses GTM resource import in more detail. - From 1bca2fd119b4cc182c5dea693f771035893e8788 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Tue, 2 Feb 2021 07:01:16 -0500 Subject: [PATCH 097/215] Editing and formatting improvements --- docs/guides/get_started_dns_zone.md | 18 +++++++-------- docs/guides/get_started_gtm_domain.md | 32 +++++++++++++-------------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/guides/get_started_dns_zone.md b/docs/guides/get_started_dns_zone.md index b66d8392f..0557a2514 100644 --- a/docs/guides/get_started_dns_zone.md +++ b/docs/guides/get_started_dns_zone.md @@ -19,7 +19,7 @@ Remember to start with the Get Started with the [Akamai Terraform Provider Guide ## Creating a DNS Zone -The zone itself is represented by a [`akamai_dns_zone` resource](../resources/dns_zone.md). Add this new resource block to your `akamai.tf` file after the provider block. Note: the zone should be the first DNS resource created as it provides operating context for all other recordset resources. +The zone itself is represented by a [`akamai_dns_zone` resource](../resources/dns_zone.md). Add this new resource block to your `akamai.tf` file after the provider block. **Note:** the zone should be the first DNS resource created as it provides operating context for all other recordset resources. To define the entire configuration, we start by opening the resource block and giving the `zone` a name. In this case we’re going to use the name "example." @@ -61,7 +61,7 @@ resource "akamai_dns_zone" "example_com" { comment = "example zone demo" } ``` -> **Note:** Notice the use of variables from the previous section to reference the group and contract IDs. These will automatically be replaced at runtime by Terraform with the actual values. +> **Note:** Notice the use of variables from the previous section to reference the group and contract IDs. These will be replaced at runtime by Terraform with the actual values. ### Primary Zones @@ -71,7 +71,7 @@ Creating primary zones through Terraform is best performed through the following Create the zone configuration in a new zone configuration file. For this example, use `example_primary_zone_com.tf`. -Note: Subsequent steps will require the zone configuration file be named `.tf` with dots replaced by underscores. +**Note:** Subsequent steps will require the zone configuration file be named `.tf` with dots replaced by underscores. ##### Example configuration: @@ -109,7 +109,7 @@ resource "akamai_dns_zone" "primary_example" { $ terraform plan ``` -Notes: You can run `terraform plan` many times. +**Note:** You can run `terraform plan` many times. ### Adding Zone SOA and NS Records To TF Configuration @@ -177,7 +177,7 @@ resource "akamai_dns_record" "example_primary_zone_com_example_primary_zone_com_ ttl = 86400 } ``` -Note: Name server targets have been masked. Also, a default `dnsvars.tf` file is generated. It can be ignored, deleted or used. Other Terraform configuration files can reference variables in this file. +**Note:** Name server targets have been masked. Also, a default `dnsvars.tf` file is generated. It can be ignored, deleted or used. Other Terraform configuration files can reference variables in this file. #### Generate a Resource Import Script @@ -244,7 +244,7 @@ $ terraform apply Once this completes, your zone and recordset will have been created. You can verify this in [Akamai Control Center](https://control.akamai.com). -## Import +## Import Records Existing DNS resources may be imported using one of the following formats: @@ -259,9 +259,9 @@ $ terraform import akamai_dns_record.{{record resource name}} {{edge dns zone na MX Record resource configurations may be instantiated in three different forms: -1. Coupling Priority and Host -2. Assigning Priority to Hosts via Variables -3. Instance Generation +1. Coupling Priority and Host. +2. Assigning Priority to Hosts via Variables. +3. Instance Generation. ### Coupling Priority and Host diff --git a/docs/guides/get_started_gtm_domain.md b/docs/guides/get_started_gtm_domain.md index fc0ac3aea..6e87144bf 100644 --- a/docs/guides/get_started_gtm_domain.md +++ b/docs/guides/get_started_gtm_domain.md @@ -18,13 +18,13 @@ Remember to start by reviewing the Get Started with the [Akamai Terraform Provid ## Create a GTM Domain -The domain itself is represented by a [`akamai_gtm_domain` resource](../resources/gtm_domain.md). Add this new resource block to your `akamai.tf` file after the provider block. Note: the domain must be the first GTM resource created as it provides operating context for all other contained objects. +The Domain itself is represented by a [`akamai_gtm_domain` resource](../resources/gtm_domain.md). Add this new resource block to your `akamai.tf` file after the provider block. **Note:** the domain must be the first GTM resource created as it provides operating context for all other contained objects. -To define the entire configuration, we start by opening the resource block and giving the domain a name. In this case we’re going to use the name "example". +To define the entire configuration, we start by opening the resource block and giving the domain a `name`. In this case, we’re going to use the name "example". -Next, we set the required (domain, type) and optional (group ID, contract ID, email list, comment) arguments. +Next, we set the required (`name`, `type`) and optional (`group_id`, `contract_id`, `email_notification_list`, `comment`) arguments. -Once you’re done, your domain configuration should look like this: +Once you’re done, your Domain configuration should look like this: ```hcl resource "akamai_gtm_domain" "example" { @@ -36,17 +36,17 @@ resource "akamai_gtm_domain" "example" { comment = "example domain demo" } ``` -> **Note:** Notice that we’re using variables from the previous section to reference the group and contract IDs. These will automatically be replaced at runtime by Terraform with the actual values. +> **Note:** Notice the use of variables from the previous section to reference the group and contract IDs. These will be replaced at runtime by Terraform with the actual values. ## Create a GTM Datacenter -The datacenter itself is represented by an [`akamai_gtm_datacenter` resource](../resources/gtm_datacenter.md). Add this new block to your `akamai.tf` file after the provider block. +The Datacenter itself is represented by a [`akamai_gtm_datacenter` resource](../resources/gtm_datacenter.md). Add this new block to your `akamai.tf` file after the provider block. -To define the entire configuration, we start by opening the resource block and give it a name. In this case we’re going to use the name "example_dc". +To define the entire configuration, we start by opening the resource block and giving it a name. In this case, we’re going to use the name "example_dc". -Next, we set the required (domain name) and optional (nickname) arguments. +Next, we set the required (`domain` name) and optional (`nickname`) arguments. -Once you’re done, your datacenter configuration should look like this: +Once done, your Datacenter configuration should look like this: ```hcl resource "akamai_gtm_datacenter" "example_dc" { @@ -58,13 +58,13 @@ resource "akamai_gtm_datacenter" "example_dc" { ## Create a GTM Property -The property itself is represented by an [`akamai_gtm_property` resource](../resources/gtm_property.md). Add this new block to your `akamai.tf` file after the provider block. +The Property itself is represented by a [`akamai_gtm_property` resource](../resources/gtm_property.md). Add this new block to your `akamai.tf` file after the provider block. -To define the entire configuration, we start by opening the resource block and give it a name. In this case we’re going to use the name "example_prop". +To define the entire configuration, we start by opening the resource block and giving it a name. In this case, we’re going to use the name "example_prop". -Next, we set the required (domain name, property name, property type, traffic_targets, liveness_tests, score_aggregation_type, handout_limit, handout_mode) and optional (failover_delay, failback_delay) arguments. +Next, we set the required (`domain` name, property `name`, property `type`, `traffic_target`s, `liveness_test`s, `score_aggregation_type`, `handout_limit`, `handout_mode`) and optional (`failover_delay`, `failback_delay`) arguments. -Once you’re done, your property configuration should look like this: +Once you’re done, your Property configuration should look like this: ```hcl resource "akamai_gtm_property" "example_prop" { @@ -135,17 +135,17 @@ To test your configuration, use `terraform plan`: $ terraform plan ``` -This command will make Terraform create a plan for the work it will do based on the configuration file. This will not actually make any changes and is safe to run as many times as you like. +This command will make Terraform create a plan for the work set by the configuration file. This will not actually make any changes and is safe to run as many times. ## Apply Changes -To actually create our domain, datacenter and property;, we need to instruct Terraform to apply the changes outlined in the plan. To do this, in the terminal, run the command: +To actually create our Domain, Datacenter and Property, we need to instruct Terraform to apply the changes outlined in the plan. To do this, run the command: ``` $ terraform apply ``` -Once this completes your domain, datacenter and property will have been created. You can verify this in [Akamai Control Center](https://control.akamai.com) or via the [Akamai CLI](https://developer.akamai.com/cli). +Once this completes your Domain, Datacenter and Property will have been created. You can verify this in [Akamai Control Center](https://control.akamai.com) or via the [Akamai CLI](https://developer.akamai.com/cli). ## Import Existing GTM Resource From 693583a1529fada8e665886d52939c8a3e983e45 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Tue, 2 Feb 2021 09:07:02 -0500 Subject: [PATCH 098/215] Apply my latest learnings configuring Terraform for Edge DNS --- docs/guides/akamai_provider_auth.md | 2 ++ docs/guides/get_started_dns_zone.md | 47 ++++++++++++++++++++------- docs/guides/get_started_gtm_domain.md | 2 +- docs/guides/get_started_provider.md | 16 ++++----- 4 files changed, 44 insertions(+), 23 deletions(-) diff --git a/docs/guides/akamai_provider_auth.md b/docs/guides/akamai_provider_auth.md index 391d4fc9b..c6bfc449b 100644 --- a/docs/guides/akamai_provider_auth.md +++ b/docs/guides/akamai_provider_auth.md @@ -54,6 +54,8 @@ supporting API service names: Once you create the supporting API clients you can update your local `.edgerc` file. +**Note:** The Edge DNS and GTM modules depend on both Property Manager APIs as well. Be sure to include a PAPI authorization to the Edge DNS and GTM API Clients. + ## Add your local .edgerc file to your Akamai Provider config diff --git a/docs/guides/get_started_dns_zone.md b/docs/guides/get_started_dns_zone.md index 0557a2514..d7e93c4db 100644 --- a/docs/guides/get_started_dns_zone.md +++ b/docs/guides/get_started_dns_zone.md @@ -15,7 +15,7 @@ To get more information about Edge DNS, see: * Developer - [API documentation](https://developer.akamai.com/api/cloud_security/edge_dns_zone_management/v2.html). * User Guide - [Official Documentation](https://learn.akamai.com/en-us/products/cloud_security/edge_dns.html). -Remember to start with the Get Started with the [Akamai Terraform Provider Guide](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_provider). You should have a valid `akamai.tf` Terraform configuration at this point before adding the DNS module configuration. +Remember to start with the Get Started with the [Akamai Terraform Provider Guide](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_provider). You should have an API Client and a valid `akamai.tf` Terraform configuration at this point before adding the DNS module configuration. ## Creating a DNS Zone @@ -23,9 +23,9 @@ The zone itself is represented by a [`akamai_dns_zone` resource](../resources/dn To define the entire configuration, we start by opening the resource block and giving the `zone` a name. In this case we’re going to use the name "example." -Next, we set the required (`zone`, `type`, `group`, `contract`) and optional (`comment`) arguments. +Next, we set the required (`zone`, `type`, `group`, `contract`) and optional (`comment`) arguments for a simpler secondary `type`. -Once done, your zone configuration file should include configuration items such as: +Once done, your `akamai.tf` configuration file should include configuration items such as: ```hcl terraform { @@ -53,23 +53,31 @@ data "akamai_group" "default" { } resource "akamai_dns_zone" "example_com" { - zone = "examplezone.com" # Zone Name - type = "secondary" # Zone type - master = [ "1.2.3.4" ] # Zone master(s) - group = data.akamai_group.default.id # Group ID variable - contract = data.akamai_contract.default.id # Contract ID variable + zone = "examplezone.com" # Zone Name + type = "secondary" # Zone type + masters = [ "1.2.3.4" ] # Zone master(s) + group = data.akamai_group.default.id # Group ID variable + contract = data.akamai_contract.default.id # Contract ID variable comment = "example zone demo" } ``` > **Note:** Notice the use of variables from the previous section to reference the group and contract IDs. These will be replaced at runtime by Terraform with the actual values. +### Validate Terraform Zone Configuration and State + +To validate the configuration up to this point, run the following command. The actual commit will come later in the procedure with an apply command. + +``` +$ terraform plan +``` + ### Primary Zones -Creating primary zones through Terraform is best performed through the following multi-step process. To complete this step, you will need to download and install the [Akamai CLI](https://developer.akamai.com/cli) and [CLI-Terraform package](https://github.com/akamai/cli-terraform). +Unlike creating secondary zone types, creating primary zone types through Terraform is best by following a multi-step process. To complete these steps, you will need to download and install the [Akamai CLI](https://developer.akamai.com/cli) and [CLI-Terraform package](https://github.com/akamai/cli-terraform). #### Configure Zone -Create the zone configuration in a new zone configuration file. For this example, use `example_primary_zone_com.tf`. +In addition to `akamai.tf` set with Get Started with the [Akamai Terraform Provider Guide](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_provider), create the zone configuration in a new zone configuration file. For this example, use `example_primary_zone_com.tf`. **Note:** Subsequent steps will require the zone configuration file be named `.tf` with dots replaced by underscores. @@ -103,8 +111,12 @@ resource "akamai_dns_zone" "primary_example" { } ``` +**Note:** Referencing items in the locals block is done so with a singular `local` prefix such as `local.section`. Because Terraform references variables in all `.tf` files, the locals and provider blocks may not necessary in this zone file. + ### Validate Terraform Zone Configuration and State +To validate the configuration up to this point, run the following command. The actual commit will come later in the procedure with an apply command. + ``` $ terraform plan ``` @@ -116,6 +128,7 @@ $ terraform plan Creating a primary zone has the side effect of creating both initial SOA and NS records. Without these two recordsets, the zone cannot be managed. Using the CLI-Terraform CLI package, the zone's top level SOA and NS records now need to be added to the Terraform configuration as follows. #### Create a List of Zone Recordsets + First, create a list of the zone's current recordsets. ``` @@ -138,7 +151,7 @@ The command will generate a file, `example_primary_zone_com_resources.json`, wit #### Update the Terraform Zone Configuration File -Next, update the Terraform Zone configuration file using the previously generated JSON as input. +Next, update the Terraform Zone configuration file using the previously generated JSON file as input and the following command. ``` $ akamai terraform create-zone example_primary_zone.com --createconfig @@ -177,7 +190,7 @@ resource "akamai_dns_record" "example_primary_zone_com_example_primary_zone_com_ ttl = 86400 } ``` -**Note:** Name server targets have been masked. Also, a default `dnsvars.tf` file is generated. It can be ignored, deleted or used. Other Terraform configuration files can reference variables in this file. +**Note:** Name server targets have been masked. Also, a default `dnsvars.tf` file is generated. It can be ignored, deleted or used. Other Terraform configuration files can reference variables in this file with a macro such as "${dnsvar.zone}". #### Generate a Resource Import Script @@ -210,6 +223,8 @@ The Terraform configuration and state will now contain the zone's SOA and NS Rec ### Validate Terraform Zone Configuration and State +To validate the configuration up to this point, run the following command. The actual commit will come later in the procedure with an apply command. + ``` $ terraform plan ``` @@ -234,6 +249,14 @@ resource "akamai_dns_record" "example_a_record" { } ``` +## Validate Terraform Zone Configuration and State + +To validate the configuration up to this point, run the following command. The actual commit will come later in the procedure with an apply command. + +``` +$ terraform plan +``` + ## Apply Changes To actually create our zone and recordset, we need to instruct Terraform to apply the changes outlined in the plan. To do this, run the command: diff --git a/docs/guides/get_started_gtm_domain.md b/docs/guides/get_started_gtm_domain.md index 6e87144bf..3d5a09909 100644 --- a/docs/guides/get_started_gtm_domain.md +++ b/docs/guides/get_started_gtm_domain.md @@ -14,7 +14,7 @@ To get more information about Global Traffic Management, see: * Developer - [API documentation](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html) * User Guide - [Official Documentation](https://learn.akamai.com/en-us/products/web_performance/global_traffic_management.html) -Remember to start by reviewing the Get Started with the [Akamai Terraform Provider Guide](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_provider). You should have a valid `akamai.tf` Terraform configuration at this point before adding the GTM module configuration. +Remember to start by reviewing the Get Started with the [Akamai Terraform Provider Guide](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_provider). You should have a valid `akamai.tf` Terraform configuration at this point before adding the GTM module configuration to `akamai.tf`. ## Create a GTM Domain diff --git a/docs/guides/get_started_provider.md b/docs/guides/get_started_provider.md index 2c714a585..b5adc99e4 100644 --- a/docs/guides/get_started_provider.md +++ b/docs/guides/get_started_provider.md @@ -62,10 +62,7 @@ Now that you made some decisions, you need to set up a Terraform configuration f ## Create Akamai API clients -Create an Akamai API client with the right permissions and valid -credentials to authenticate your Akamai Provider files. Your Akamai API -client needs read-write permission to the APIs associated with the -Akamai Provider modules you're using, like DNS or Provisioning. +Create an Akamai API client with the right permissions and valid credentials to authenticate your Akamai Provider files. Your Akamai API client needs read-write permission to the APIs associated with the Akamai Provider modules you're using, like DNS or Provisioning. Once you set up the API clients, you add credential information from those clients to your `akamai.tf` file. @@ -73,13 +70,14 @@ See the [Authenticate the Akamai Terraform Provider](../guides/akamai_provider_a guide for details. Once you're done authenticating, come back here to complete the Akamai Provider setup. +**Note:** The Edge DNS and GTM modules depend on both Property Manager APIs as well. Be sure to include a PAPI authorization to the Edge DNS and GTM API Clients. + ## Retrieve contract and group IDs You'll need contract and group IDs to use most Akamai Provider modules. You can retrieve these IDs through the [`akamai_contract`](../data-sources/property_contract.md) and -[`akamai_group`](../data-sources/property_group.md) data sources, which require read access to the Property -Manager API. You can also get this information from the Contracts app in Akamai +[`akamai_group`](../data-sources/property_group.md) data sources, which require read access to the Property Manager API. You can also get this information from the Contracts app in Akamai Control Center, or by using other Akamai APIs or CLIs. ### Retrieve contract IDs with akamai_contract @@ -127,11 +125,9 @@ You can now refer to the group ID using the `id` attribute: `data.akamai_group.d ## Set up your Akamai configurations in Terraform -You're now ready to import existing configurations or create new ones -from scratch. +You're now ready to import existing configurations or create new ones from scratch. -At this point in the setup, you should refer to the guides for the -Akamai modules you're using: +At this point in the setup, you should refer to the guides for the Akamai modules you're using: | **Module** | **Guide** | |------------|------------| From 17f0d7ee460dda6e200f35d5eed468f42b571cf7 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Tue, 2 Feb 2021 10:11:22 -0500 Subject: [PATCH 099/215] SECKSD-9143 - Remove individual protections from doc --- docs/guides/get_started_appsec.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/guides/get_started_appsec.md b/docs/guides/get_started_appsec.md index 9836583ef..7a62090c7 100644 --- a/docs/guides/get_started_appsec.md +++ b/docs/guides/get_started_appsec.md @@ -174,16 +174,12 @@ Note that the following data sources and resources are currently in Beta, and th * akamai_appsec_security_policy_protections * akamai_appsec_rate_policies * akamai_appsec_rate_policy_actions - * akamai_appsec_rate_protections - * akamai_appsec_reputation_protections * akamai_appsec_reputation_profiles * akamai_appsec_reputation_profile_actions * akamai_appsec_rule_upgrade_details * akamai_appsec_slow_post - * akamai_appsec_slowpost_protections * akamai_appsec_attack_group_actions * akamai_appsec_waf_mode - * akamai_appsec_waf_protection * akamai_appsec_attack_group_condition_exception ### Resources From 1ae45ff5160abc8326ad5dbd4340288af6bbcffb Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Tue, 2 Feb 2021 12:05:03 -0500 Subject: [PATCH 100/215] Remove individual protection data sources from beta list --- docs/guides/get_started_appsec.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/guides/get_started_appsec.md b/docs/guides/get_started_appsec.md index 9836583ef..7a62090c7 100644 --- a/docs/guides/get_started_appsec.md +++ b/docs/guides/get_started_appsec.md @@ -174,16 +174,12 @@ Note that the following data sources and resources are currently in Beta, and th * akamai_appsec_security_policy_protections * akamai_appsec_rate_policies * akamai_appsec_rate_policy_actions - * akamai_appsec_rate_protections - * akamai_appsec_reputation_protections * akamai_appsec_reputation_profiles * akamai_appsec_reputation_profile_actions * akamai_appsec_rule_upgrade_details * akamai_appsec_slow_post - * akamai_appsec_slowpost_protections * akamai_appsec_attack_group_actions * akamai_appsec_waf_mode - * akamai_appsec_waf_protection * akamai_appsec_attack_group_condition_exception ### Resources From ad6ffa0765cc282fc2ef7074ddb5e5d403777773 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Tue, 2 Feb 2021 12:06:11 -0500 Subject: [PATCH 101/215] Add description of import operation --- docs/guides/get_started_appsec.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/guides/get_started_appsec.md b/docs/guides/get_started_appsec.md index 7a62090c7..a68a94d04 100644 --- a/docs/guides/get_started_appsec.md +++ b/docs/guides/get_started_appsec.md @@ -158,6 +158,30 @@ resource "akamai_appsec_activations" "activation" { Once you save the file and run `terraform apply`, Terraform will activate the security configuration version in staging. When the activation is complete, an email will be sent to any addresses specified in the `notification_emails` list. +## Importing a Resource + +Terraform allows you to add a resource to its state even if this resource was created outside of Terraform, for example by using the Control Center application. This allows you to keep Terraform's state in sync with the state of your actual infrastructure. To do this, use the `terraform import` command with a configuration file that includes a description of the existing resource. The `import` command requires that you specify both the `address` and `ID` of the resource. The `address` indicates the destination to which the resource should be imported; typically this is the resource type and local name of the resource as described in the local configuration file. For example, suppose a new security policy has been created outside of Terraform. You can use the information available in the Control Center to create a matching description of this policy in your local configuration file. Here is an example using fictitious values for the resource's parameters: + +```hcl +data "akamai_appsec_configuration" "configuration" { + name = "Configuration XYZ" +} +resource "akamai_appsec_security_policy" "security_policy_create" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + default_settings = true + security_policy_name = "Security Policy XYZ" + security_policy_prefix = "XYZ" +} +``` + +The `address` of this resource is found by combining the resource type and its local name within the configuration file: "akamai_appsec_security_policy.security_policy_create". + +The `ID` indicates the unique identifier for this resource within Terraform's state. Its format varies depending on the resource type, but in general it is formed by combining the values of the resource's required parameters with a `:` separator, starting with the more general parameters. Using the example above, assume that the security policy resource has been created with these values: configuration ID: 33673, latest_version: 55, and security policy ID: "XYZ_12345". In this example, the `ID` would be "33673:55:XYZ_12345". To import this resource into your local Terrform state, you would run this command: + +```bash +$ terraform import akamai_appsec_security_policy.security_policy_create 33673:55:PL5_138221 +``` ## Beta Features From 688866158380d4a2484cc0e9d9c5c61cf9319088 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Tue, 2 Feb 2021 13:10:14 -0600 Subject: [PATCH 102/215] Fix for EOF in JSON export templates --- pkg/providers/appsec/templates.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 53ae8424b..9850a0290 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -170,15 +170,15 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["RuleConditionException"] = &OutputTemplate{TemplateName: "RuleConditionException", TableTitle: "Conditions|Exceptions", TemplateType: "TABULAR", TemplateString: "{{range $index, $element :=.Conditions}}True{{else}}False{{end}}|{{with .Exception}}True{{else}}False{{end}}"} // TF templates - otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF {{marshal .AdvancedOptions.Logging}} EOF \n }"} + otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF\n {{marshal .AdvancedOptions.Logging}} EOF \n }"} otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"appsec_attack_group_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}}{{if $index}},{{end}}\nresource \"akamai_appsec_custom_rule\" \"appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF {{marshal .}} \n EOF \n }\n {{end}}"} + otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}}{{if $index}},{{end}}\nresource \"akamai_appsec_custom_rule\" \"appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"appsec_custom_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} - otm["MatchTarget.tf"] = &OutputTemplate{TemplateName: "MatchTarget.tf", TableTitle: "MatchTarget", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .MatchTargets.WebsiteTargets}}\nresource \"akamai_appsec_match_target\" \"appsec_match_target{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF {{marshal .}} \n EOF \n }\n {{end}}"} - otm["RatePolicy.tf"] = &OutputTemplate{TemplateName: "RatePolicy.tf", TableTitle: "RatePolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .RatePolicies}}\nresource \"akamai_appsec_rate_policy\" \"appsec_rate_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n rate_policy = <<-EOF {{marshal .}} \n EOF \n \n }\n{{end}}"} + otm["MatchTarget.tf"] = &OutputTemplate{TemplateName: "MatchTarget.tf", TableTitle: "MatchTarget", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .MatchTargets.WebsiteTargets}}\nresource \"akamai_appsec_match_target\" \"appsec_match_target{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} + otm["RatePolicy.tf"] = &OutputTemplate{TemplateName: "RatePolicy.tf", TableTitle: "RatePolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .RatePolicies}}\nresource \"akamai_appsec_rate_policy\" \"appsec_rate_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n rate_policy = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["RatePolicyAction.tf"] = &OutputTemplate{TemplateName: "RatePolicyAction.tf", TableTitle: "RatePolicyAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{ range $index, $element := .RatePolicyActions }}\nresource \"akamai_appsec_rate_policy_action\" \"appsec_rate_policy_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rate_policy_id = {{.ID}} \n ipv4_action = \"{{.Ipv4Action}}\" \n ipv6_action = \"{{.Ipv6Action}}\" \n }\n {{end}} {{end}}"} - otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF {{marshal .}} \n \n EOF \n }{{end}}"} + otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"appsec_reputation_profile_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"appsec_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{substring 0 2 .ID}}\" \n default_settings = true \n }{{end}}"} From 13a961579a184430ec36d4fceb84b30d10167356 Mon Sep 17 00:00:00 2001 From: Neha Ghate Date: Tue, 2 Feb 2021 17:13:41 -0500 Subject: [PATCH 103/215] bug/DEVOPSPROV-1407_validate_json_per_file_error_messages:added json validation on pmcli files --- .../property/data_akamai_property_rules_template.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pkg/providers/property/data_akamai_property_rules_template.go b/pkg/providers/property/data_akamai_property_rules_template.go index 532cf8eb5..3f44b6f2d 100644 --- a/pkg/providers/property/data_akamai_property_rules_template.go +++ b/pkg/providers/property/data_akamai_property_rules_template.go @@ -132,6 +132,7 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m return diag.FromErr(err) } dir := filepath.Dir(file) + logger.Debugf("directory %s" ,dir) templateFiles := make(map[string]string) err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { @@ -147,8 +148,15 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m if err != nil { return diag.FromErr(err) } + var diags diag.Diagnostics for name, f := range templateFiles { templateStr, err := convertToTemplate(f) + + var target map[string]interface{} + if err := json.Unmarshal([]byte(templateStr), &target); err != nil { + logger.Warnf("invalid JSON result found in template snippet json here %s: ",f) + diags = append(diags, diag.Errorf("invalid JSON result found in template snippet json here %s: %s",f,err)...) + } if err != nil { return diag.FromErr(err) } @@ -157,6 +165,9 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m return diag.FromErr(err) } } + if diags.HasError() { + return diags + } wr := bytes.Buffer{} err = tmpl.ExecuteTemplate(&wr, "main", varsMap) if err != nil { From 08c28f5b1ed80d723d508f045eba869cb81ee6d1 Mon Sep 17 00:00:00 2001 From: Neha Ghate Date: Tue, 2 Feb 2021 17:15:54 -0500 Subject: [PATCH 104/215] removed loggers --- pkg/providers/property/data_akamai_property_rules_template.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/providers/property/data_akamai_property_rules_template.go b/pkg/providers/property/data_akamai_property_rules_template.go index 3f44b6f2d..fbdf367af 100644 --- a/pkg/providers/property/data_akamai_property_rules_template.go +++ b/pkg/providers/property/data_akamai_property_rules_template.go @@ -132,7 +132,6 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m return diag.FromErr(err) } dir := filepath.Dir(file) - logger.Debugf("directory %s" ,dir) templateFiles := make(map[string]string) err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { @@ -151,7 +150,6 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m var diags diag.Diagnostics for name, f := range templateFiles { templateStr, err := convertToTemplate(f) - var target map[string]interface{} if err := json.Unmarshal([]byte(templateStr), &target); err != nil { logger.Warnf("invalid JSON result found in template snippet json here %s: ",f) From e1576d3939123653497823b7767d90d38b672389 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Tue, 2 Feb 2021 21:48:13 -0600 Subject: [PATCH 105/215] Add support for Siem and custom deny export correct security policy Prefix --- .../resource_akamai_appsec_security_policy.go | 9 +++++++++ .../appsec/resource_akamai_appsec_siem_settings.go | 11 +++++++++++ .../resource_akamai_appsec_siem_settings_test.go | 1 + pkg/providers/appsec/templates.go | 13 ++++++++++++- 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_security_policy.go b/pkg/providers/appsec/resource_akamai_appsec_security_policy.go index e871d6128..071b4417a 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_security_policy.go +++ b/pkg/providers/appsec/resource_akamai_appsec_security_policy.go @@ -299,6 +299,15 @@ func resourceSecurityPolicyRead(ctx context.Context, d *schema.ResourceData, m i return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("default_settings", securitypolicy.DefaultSettings); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + pp := strings.Split(securitypolicy.PolicyID, "_") + if err := d.Set("security_policy_prefix", pp[0]); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%s", getSecurityPolicy.ConfigID, getSecurityPolicy.Version, securitypolicy.PolicyID)) return nil diff --git a/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go b/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go index 60420e7c0..f5990e5eb 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go +++ b/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go @@ -120,6 +120,17 @@ func resourceSiemSettingsRead(ctx context.Context, d *schema.ResourceData, m int return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("enable_siem", siemsettings.EnableSiem); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("enable_for_all_policies", siemsettings.EnableForAllPolicies); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("enable_botman_siem", siemsettings.EnabledBotmanSiemEvents); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } d.SetId(fmt.Sprintf("%d:%d", getSiemSettings.ConfigID, getSiemSettings.Version)) return nil diff --git a/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go b/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go index ad8341798..5d46b1901 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_siem_settings_test.go @@ -50,6 +50,7 @@ func TestAccAkamaiSiemSettings_res_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("akamai_appsec_siem_settings.test", "id", "43253:7"), ), + ExpectNonEmptyPlan: true, }, }, }) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 9850a0290..f75d0bdd9 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -62,6 +62,15 @@ func RenderTemplates(ots map[string]*OutputTemplate, key string, str interface{} return s[start:end] }, + "splitprefix": func(sep, orig string) map[string]string { + parts := strings.Split(orig, sep) + res := make(map[string]string, len(parts)) + for i, v := range parts { + res["_"+strconv.Itoa(i)] = v + } + return res + }, + "replace": func(old, new, src string) string { return strings.Replace(src, old, new, -1) }, } ) @@ -173,6 +182,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF\n {{marshal .AdvancedOptions.Logging}} EOF \n }"} otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"appsec_attack_group_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}}{{if $index}},{{end}}\nresource \"akamai_appsec_custom_rule\" \"appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"appsec_custom_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} otm["MatchTarget.tf"] = &OutputTemplate{TemplateName: "MatchTarget.tf", TableTitle: "MatchTarget", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .MatchTargets.WebsiteTargets}}\nresource \"akamai_appsec_match_target\" \"appsec_match_target{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} @@ -181,7 +191,8 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"appsec_reputation_profile_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"appsec_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{substring 0 2 .ID}}\" \n default_settings = true \n }{{end}}"} + otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}}} \nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \" {{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostname\" \"appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} + otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n enable_for_all_policies = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_botman_siem = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n \n } \n"} } From a78b03a9041c3345e6a22b614d421bb421ec9911 Mon Sep 17 00:00:00 2001 From: "Narra, Vinnuth" Date: Wed, 3 Feb 2021 09:45:31 -0500 Subject: [PATCH 106/215] Removed diff suppress on hostnames Diffsuppress is producing an invalid plan causing hostnames being appended instead of being replaced --- .../property/resource_akamai_property.go | 22 ++++--------------- 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/pkg/providers/property/resource_akamai_property.go b/pkg/providers/property/resource_akamai_property.go index e3454be60..42aeeae53 100644 --- a/pkg/providers/property/resource_akamai_property.go +++ b/pkg/providers/property/resource_akamai_property.go @@ -66,19 +66,6 @@ func resourceProperty() *schema.Resource { return compareRules(&oldRules.Rules, &newRules.Rules) } - diffSuppressHostNames := func(_, oldHostname, newHostname string, _ *schema.ResourceData) bool { - logger := akamai.Log("PAPI", "suppressRulesJSON") - logger.Debugf("old hostname %v, newhostname %v:", oldHostname, newHostname) - - // There are times where newHostname is comming as Zero. - if newHostname == "0" { - return true - } - - // If oldHostname is not empty and newHostname is empty, the return true (i.e, supress diff). - return oldHostname != "" && newHostname == "" - } - return &schema.Resource{ CreateContext: resourcePropertyCreate, ReadContext: resourcePropertyRead, @@ -187,11 +174,10 @@ func resourceProperty() *schema.Resource { }, }, "hostnames": { - Type: schema.TypeMap, - Optional: true, - Elem: &schema.Schema{Type: schema.TypeString}, - Description: "Mapping of edge hostname CNAMEs to other CNAMEs", - DiffSuppressFunc: diffSuppressHostNames, + Type: schema.TypeMap, + Optional: true, + Elem: &schema.Schema{Type: schema.TypeString}, + Description: "Mapping of edge hostname CNAMEs to other CNAMEs", }, // Computed From 6b2235a10fc8db56870162f2882966fb1033912d Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Wed, 3 Feb 2021 10:49:39 -0500 Subject: [PATCH 107/215] Correct security_policy_id attribute name in example --- docs/data-sources/appsec_custom_rule_actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data-sources/appsec_custom_rule_actions.md b/docs/data-sources/appsec_custom_rule_actions.md index 1246e74a8..8bde9a3ca 100644 --- a/docs/data-sources/appsec_custom_rule_actions.md +++ b/docs/data-sources/appsec_custom_rule_actions.md @@ -24,7 +24,7 @@ data "akamai_appsec_configuration" "configuration" { data "akamai_appsec_custom_rule_actions" "custom_rule_actions" { config_id = data.akamai_appsec_configuration.configuration.config_id version = data.akamai_appsec_configuration.configuration.latest_version - policy_id = "crAP_75829" + security_policy_id = "crAP_75829" } output "custom_rule_actions" { value = data.akamai_appsec_custom_rule_actions.custom_rule_actions.output_text From 68ee79f8252f746b1a6b84a394897f2b1bad9972 Mon Sep 17 00:00:00 2001 From: Jim Gilbert Date: Wed, 3 Feb 2021 14:09:06 -0500 Subject: [PATCH 108/215] Address PR comments. --- docs/guides/akamai_provider_auth.md | 2 +- docs/guides/faq.md | 4 ++-- docs/guides/get_started_dns_zone.md | 4 ++-- docs/guides/get_started_provider.md | 5 ++--- docs/resources/dns_record.md | 1 - 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/docs/guides/akamai_provider_auth.md b/docs/guides/akamai_provider_auth.md index c6bfc449b..533eebde3 100644 --- a/docs/guides/akamai_provider_auth.md +++ b/docs/guides/akamai_provider_auth.md @@ -54,7 +54,7 @@ supporting API service names: Once you create the supporting API clients you can update your local `.edgerc` file. -**Note:** The Edge DNS and GTM modules depend on both Property Manager APIs as well. Be sure to include a PAPI authorization to the Edge DNS and GTM API Clients. +**Note:** Depending on the select contract and group, the Edge DNS and GTM modules may depend on both Property Manager APIs as well. If so, be sure to include a PAPI authorization to the Edge DNS and GTM API Clients. ## Add your local .edgerc file to your Akamai Provider config diff --git a/docs/guides/faq.md b/docs/guides/faq.md index 004b158fb..598c4c214 100644 --- a/docs/guides/faq.md +++ b/docs/guides/faq.md @@ -25,7 +25,7 @@ A package, [CLI-Terraform](https://github.com/akamai/cli-terraform), for the [Ak 2. Generate a Terraform configuration for the zone and select recordsets. 3. Generate a command line script to import all defined resources. -Each step will produce produce or update existing files. +Each step will produce or update existing files. #### Notes 1. Terraform limits the characters that can be part of its resource names. During construction of the resource configurations, invalid characters are replaced with underscore , '_'. @@ -55,7 +55,7 @@ A package, [CLI-Terraform](https://github.com/akamai/cli-terraform), for the [Ak 2. Generate a Terraform configuration for the domain and contained objects. 3. Generate a command line script to import all defined resources. -Each step will produce produce or update existing files. +Each step will produce or update existing files. #### Notes 1. Terraform limits the characters that can be part of it's resource names. During construction of the resource configurations invalid characters are replaced with underscore , '_'. diff --git a/docs/guides/get_started_dns_zone.md b/docs/guides/get_started_dns_zone.md index d7e93c4db..60c9826be 100644 --- a/docs/guides/get_started_dns_zone.md +++ b/docs/guides/get_started_dns_zone.md @@ -73,13 +73,13 @@ $ terraform plan ### Primary Zones -Unlike creating secondary zone types, creating primary zone types through Terraform is best by following a multi-step process. To complete these steps, you will need to download and install the [Akamai CLI](https://developer.akamai.com/cli) and [CLI-Terraform package](https://github.com/akamai/cli-terraform). +Unlike creating secondary zone types, creating primary zone types is best by following a multi-step process as follows. To complete these steps, you need to download and install the [Akamai CLI](https://developer.akamai.com/cli) and [CLI-Terraform package](https://github.com/akamai/cli-terraform). #### Configure Zone In addition to `akamai.tf` set with Get Started with the [Akamai Terraform Provider Guide](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_provider), create the zone configuration in a new zone configuration file. For this example, use `example_primary_zone_com.tf`. -**Note:** Subsequent steps will require the zone configuration file be named `.tf` with dots replaced by underscores. +**Note:** Subsequent steps will require the zone configuration file be named `.tf` with dots replaced by underscores. Edge DNS will automatically create NS and SOA records. Steps below show how to synchronize these records to the local Terraform state. ##### Example configuration: diff --git a/docs/guides/get_started_provider.md b/docs/guides/get_started_provider.md index b5adc99e4..25bbcc546 100644 --- a/docs/guides/get_started_provider.md +++ b/docs/guides/get_started_provider.md @@ -70,7 +70,7 @@ See the [Authenticate the Akamai Terraform Provider](../guides/akamai_provider_a guide for details. Once you're done authenticating, come back here to complete the Akamai Provider setup. -**Note:** The Edge DNS and GTM modules depend on both Property Manager APIs as well. Be sure to include a PAPI authorization to the Edge DNS and GTM API Clients. +**Note:** Depending on the select contract and group, the Edge DNS and GTM modules may depend on both Property Manager APIs as well. If so, be sure to include a PAPI authorization to the Edge DNS and GTM API Clients. ## Retrieve contract and group IDs @@ -139,8 +139,7 @@ At this point in the setup, you should refer to the guides for the Akamai module -> **Note** Both Terraform and the Akamai Terraform CLI package come pre-installed in the Akamai Development Environment. Get more details in -our [installation -Instructions](https://developer.akamai.com/blog/2020/05/26/set-development-environment). +our [installation Instructions](https://developer.akamai.com/blog/2020/05/26/set-development-environment). Once you're done with the module-level setup, continue with the next sections to initialize and test the Akamai Provider. diff --git a/docs/resources/dns_record.md b/docs/resources/dns_record.md index e0d41d130..c0730f61c 100644 --- a/docs/resources/dns_record.md +++ b/docs/resources/dns_record.md @@ -44,7 +44,6 @@ The following arguments are necessary for all record types: * `name` - (Required) The name of the record. The name is an owner name, that is, the name of the node to which this resource record pertains. * `zone` - (Required) Domain zone, encapsulating any nested subdomains. * `recordType` - (Required) The DNS record type. -* `active` - (Optional, Ignored, Boolean) Maintained for backward compatibility * `ttl` - (Required,Boolean) The TTL is a 32-bit signed integer that specifies the time interval that the resource record may be cached before the source of the information should be consulted again. A value of zero means that the RR can only be used for the transaction in progress, and should not be cached. Zero values can also be used for extremely volatile data. ## Required Fields Per Record Type From 379f5ec4b741885b983e9476aa94cd7595bd9f89 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 3 Feb 2021 15:26:01 -0600 Subject: [PATCH 109/215] Rename resource reputation_analysis to reputation_profile_analysis --- .../appsec/data_akamai_appsec_reputation_analysis_test.go | 2 +- pkg/providers/appsec/provider.go | 4 ++-- .../appsec/resource_akamai_appsec_reputation_analysis_test.go | 4 ++-- .../appsec/testdata/TestDSReputationAnalysis/match_by_id.tf | 2 +- .../appsec/testdata/TestResReputationAnalysis/match_by_id.tf | 2 +- .../appsec/testdata/TestResReputationAnalysis/update_by_id.tf | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_reputation_analysis_test.go b/pkg/providers/appsec/data_akamai_appsec_reputation_analysis_test.go index 981bf45ca..76911d45c 100644 --- a/pkg/providers/appsec/data_akamai_appsec_reputation_analysis_test.go +++ b/pkg/providers/appsec/data_akamai_appsec_reputation_analysis_test.go @@ -30,7 +30,7 @@ func TestAccAkamaiReputationAnalysis_data_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestDSReputationAnalysis/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_reputation_analysis.test", "id", "43253"), + resource.TestCheckResourceAttr("data.akamai_appsec_reputation_profile_analysis.test", "id", "43253"), ), }, }, diff --git a/pkg/providers/appsec/provider.go b/pkg/providers/appsec/provider.go index f2b5449fe..06ded418c 100644 --- a/pkg/providers/appsec/provider.go +++ b/pkg/providers/appsec/provider.go @@ -89,7 +89,7 @@ func Provider() *schema.Provider { "akamai_appsec_security_policy_protections": dataSourcePolicyProtections(), "akamai_appsec_rate_policies": dataSourceRatePolicies(), "akamai_appsec_rate_policy_actions": dataSourceRatePolicyActions(), - "akamai_appsec_reputation_analysis": dataSourceReputationAnalysis(), + "akamai_appsec_reputation_profile_analysis": dataSourceReputationAnalysis(), "akamai_appsec_reputation_profiles": dataSourceReputationProfiles(), "akamai_appsec_reputation_profile_actions": dataSourceReputationProfileActions(), "akamai_appsec_rule_upgrade_details": dataSourceRuleUpgrade(), @@ -134,7 +134,7 @@ func Provider() *schema.Provider { "akamai_appsec_rate_policy": resourceRatePolicy(), "akamai_appsec_rate_policy_action": resourceRatePolicyAction(), "akamai_appsec_rate_protection": resourceRateProtection(), - "akamai_appsec_reputation_analysis": resourceReputationAnalysis(), + "akamai_appsec_reputation_profile_analysis": resourceReputationAnalysis(), "akamai_appsec_reputation_protection": resourceReputationProtection(), "akamai_appsec_reputation_profile": resourceReputationProfile(), "akamai_appsec_reputation_profile_action": resourceReputationProfileAction(), diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go index ec4cac6bb..b0cbc9046 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis_test.go @@ -48,13 +48,13 @@ func TestAccAkamaiReputationAnalysis_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResReputationAnalysis/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_reputation_analysis.test", "id", "43253:12:AAAA_81230"), + resource.TestCheckResourceAttr("akamai_appsec_reputation_profile_analysis.test", "id", "43253:12:AAAA_81230"), ), }, { Config: loadFixtureString("testdata/TestResReputationAnalysis/update_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_reputation_analysis.test", "id", "43253:12:AAAA_81230"), + resource.TestCheckResourceAttr("akamai_appsec_reputation_profile_analysis.test", "id", "43253:12:AAAA_81230"), ), }, }, diff --git a/pkg/providers/appsec/testdata/TestDSReputationAnalysis/match_by_id.tf b/pkg/providers/appsec/testdata/TestDSReputationAnalysis/match_by_id.tf index 74caf567a..4a10db8b7 100644 --- a/pkg/providers/appsec/testdata/TestDSReputationAnalysis/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestDSReputationAnalysis/match_by_id.tf @@ -4,7 +4,7 @@ provider "akamai" { -data "akamai_appsec_reputation_analysis" "test" { +data "akamai_appsec_reputation_profile_analysis" "test" { config_id = 43253 version = 7 security_policy_id = "AAAA_81230" diff --git a/pkg/providers/appsec/testdata/TestResReputationAnalysis/match_by_id.tf b/pkg/providers/appsec/testdata/TestResReputationAnalysis/match_by_id.tf index 2bc5f39b8..b105a82ae 100644 --- a/pkg/providers/appsec/testdata/TestResReputationAnalysis/match_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResReputationAnalysis/match_by_id.tf @@ -3,7 +3,7 @@ provider "akamai" { } -resource "akamai_appsec_reputation_analysis" "test" { +resource "akamai_appsec_reputation_profile_analysis" "test" { config_id = 43253 version = 12 security_policy_id = "AAAA_81230" diff --git a/pkg/providers/appsec/testdata/TestResReputationAnalysis/update_by_id.tf b/pkg/providers/appsec/testdata/TestResReputationAnalysis/update_by_id.tf index 2bc5f39b8..b105a82ae 100644 --- a/pkg/providers/appsec/testdata/TestResReputationAnalysis/update_by_id.tf +++ b/pkg/providers/appsec/testdata/TestResReputationAnalysis/update_by_id.tf @@ -3,7 +3,7 @@ provider "akamai" { } -resource "akamai_appsec_reputation_analysis" "test" { +resource "akamai_appsec_reputation_profile_analysis" "test" { config_id = 43253 version = 12 security_policy_id = "AAAA_81230" From f60f5faf3b398d126ea05bf42766e62b1a51bed9 Mon Sep 17 00:00:00 2001 From: Neha Ghate Date: Wed, 3 Feb 2021 16:30:31 -0500 Subject: [PATCH 110/215] added unit tests --- .../data_akamai_property_rules_template.go | 5 +++-- .../data_akamai_property_rules_template_test.go | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/pkg/providers/property/data_akamai_property_rules_template.go b/pkg/providers/property/data_akamai_property_rules_template.go index fbdf367af..a7d0fd69b 100644 --- a/pkg/providers/property/data_akamai_property_rules_template.go +++ b/pkg/providers/property/data_akamai_property_rules_template.go @@ -149,12 +149,13 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m } var diags diag.Diagnostics for name, f := range templateFiles { - templateStr, err := convertToTemplate(f) + b, _ := ioutil.ReadFile(f) var target map[string]interface{} - if err := json.Unmarshal([]byte(templateStr), &target); err != nil { + if err := json.Unmarshal(b, &target); err != nil { logger.Warnf("invalid JSON result found in template snippet json here %s: ",f) diags = append(diags, diag.Errorf("invalid JSON result found in template snippet json here %s: %s",f,err)...) } + templateStr, err := convertToTemplate(f) if err != nil { return diag.FromErr(err) } diff --git a/pkg/providers/property/data_akamai_property_rules_template_test.go b/pkg/providers/property/data_akamai_property_rules_template_test.go index e2e4eb76d..91f622613 100644 --- a/pkg/providers/property/data_akamai_property_rules_template_test.go +++ b/pkg/providers/property/data_akamai_property_rules_template_test.go @@ -158,6 +158,20 @@ func TestDataAkamaiPropertyRulesRead(t *testing.T) { }) }) }) + t.Run("json has invalid format", func(t *testing.T) { + client := mockpapi{} + useClient(&client, func() { + resource.UnitTest(t, resource.TestCase{ + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSRulesTemplate/template_invalid_json.tf"), + ExpectError: regexp.MustCompile(`Error: invalid JSON result found in template snippet json here`), + }, + }, + }) + }) + }) } func TestFormatValue(t *testing.T) { From 5923ee84151b18adebc47d9d05743a9d18feb8d3 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Wed, 3 Feb 2021 16:36:27 -0500 Subject: [PATCH 111/215] Rename datasource/resource to include 'profile' --- ...is.md => appsec_reputation_profile_analysis.md} | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) rename docs/data-sources/{appsec_reputation_analysis.md => appsec_reputation_profile_analysis.md} (64%) diff --git a/docs/data-sources/appsec_reputation_analysis.md b/docs/data-sources/appsec_reputation_profile_analysis.md similarity index 64% rename from docs/data-sources/appsec_reputation_analysis.md rename to docs/data-sources/appsec_reputation_profile_analysis.md index d7ad4b902..822ca78e2 100644 --- a/docs/data-sources/appsec_reputation_analysis.md +++ b/docs/data-sources/appsec_reputation_profile_analysis.md @@ -1,14 +1,14 @@ --- layout: "akamai" -page_title: "Akamai: ReputationAnalysis" +page_title: "Akamai: ReputationProfileAnalysis" subcategory: "Application Security" description: |- - ReputationAnalysis + ReputationProfileAnalysis --- -# akamai_appsec_reputation_analysis +# akamai_appsec_reputation_profile_analysis -Use the `` data source to retrieve information about the current reputation analysis settings. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getreputationanalysis). +Use the `akamai_appsec_reputation_profile_analysis` data source to retrieve information about the current reputation analysis settings. The information available is described [here](https://developer.akamai.com/api/cloud_security/application_security/v1.html#getreputationanalysis). ## Example Usage @@ -24,18 +24,18 @@ data "akamai_appsec_configuration" "configuration" { name = var.security_configuration } -data "akamai_appsec_reputation_analysis" "reputation_analysis" { +data "akamai_appsec_reputation_profile_analysis" "reputation_analysis" { config_id = data.akamai_appsec_configuration.configuration.config_id version = data.akamai_appsec_configuration.configuration.latest_version security_policy_id = var.security_policy_id } output "reputation_analysis_text" { - value = data.akamai_appsec_reputation_analysis.reputation_analysis.output_text + value = data.akamai_appsec_reputation_profile_analysis.reputation_analysis.output_text } output "reputation_analysis_json" { - value = data.akamai_appsec_reputation_analysis.reputation_analysis.json + value = data.akamai_appsec_reputation_profile_analysis.reputation_analysis.json } ``` From fc772c3c379ee4a9418203b724c294e9160ca2b7 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Wed, 3 Feb 2021 16:59:27 -0500 Subject: [PATCH 112/215] Remove duplicate/superfluous markdown files --- docs/data-sources/appsec_waf_protections.md | 85 --------------------- docs/data-sources/waf_protection.md | 57 -------------- 2 files changed, 142 deletions(-) delete mode 100644 docs/data-sources/appsec_waf_protections.md delete mode 100644 docs/data-sources/waf_protection.md diff --git a/docs/data-sources/appsec_waf_protections.md b/docs/data-sources/appsec_waf_protections.md deleted file mode 100644 index 1a0f57897..000000000 --- a/docs/data-sources/appsec_waf_protections.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: "akamai" -page_title: "Akamai: Policy Protections" -subcategory: "Application Security" -description: |- - Policy Protections ---- - -# akamai_appsec_waf_protections - -Use the `akamai_appsec_waf_protections` data source to retrieve the protections in place for a given security configuration version and security policy. - -## Example Usage - -Basic usage: - -```hcl -provider "akamai" { - appsec_section = "default" -} - -// USE CASE: user wants to view all security policy protections -data "akamai_appsec_configuration" "configuration" { - name = var.security_configuration -} -data "akamai_appsec_security_policy_protections" "protections" { - config_id = data.akamai_appsec_configuration.configuration.config_id - version = data.akamai_appsec_configuration.configuration.latest_version - security_policy_id = var.security_policy_id -} -output "protections_json" { - value = data.akamai_appsec_security_policy_protections.protections.json -} -output "protections_applyApiConstraints" { - value = data.akamai_appsec_security_policy_protections.protections.apply_api_constraints -} -output "protections_applyApplicationLayerControls" { - value = data.akamai_appsec_security_policy_protections.protections.apply_application_layer_controls -} -output "protections_applyBotmanControls" { - value = data.akamai_appsec_security_policy_protections.protections.apply_botman_controls -} -output "protections_applyNetworkLayerControls" { - value = data.akamai_appsec_security_policy_protections.protections.apply_network_layer_controls -} -output "protections_applyRateControls" { - value = data.akamai_appsec_security_policy_protections.protections.apply_rate_controls -} -output "protections_applyReputationControls" { - value = data.akamai_appsec_security_policy_protections.protections.apply_reputation_controls -} -output "protections_applySlowPostControls" { - value = data.akamai_appsec_security_policy_protections.protections.apply_slow_post_controls -} -``` - -## Argument Reference - -The following arguments are supported: - -* `config_id` - (Required) The ID of the security configuration to use. - -* `version` - (Required) The version number of the security configuration to use. - -* `security_policy_id` - (Required) The ID of the security policy to use. - -## Attributes Reference - -In addition to the arguments above, the following attributes are exported: - -* `json` - a JSON-formatted list of the protections - -* `apply_api_constraints` - true if api constraints are applied, otherwise false - -* `apply_application_layer_controls` - true if application layer controls are applied, otherwise false - -* `apply_botman_controls` - true if botman controls are applied, otherwise false - -* `apply_network_layer_controls` - true if network layer controls are applied, otherwise false - -* `apply_rate_controls` - true if rate controls are applied, otherwise false - -* `apply_reputation_controls` - true if reputation controls are applied, otherwise false - -* `apply_slow_post_controls` - true if slow post controls are applied, otherwise false diff --git a/docs/data-sources/waf_protection.md b/docs/data-sources/waf_protection.md deleted file mode 100644 index 8b32ce3ec..000000000 --- a/docs/data-sources/waf_protection.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: "akamai" -page_title: "Akamai: WAF Protection" -subcategory: "Application Security" -description: |- - WAF Protection ---- - -# akamai_appsec_waf_protection - -Use the `akamai_appsec_waf_protection` data source to retrieve the current protection settings for a given security configuration version and policy - - -## Example Usage - -Basic usage: - -```hcl -provider "akamai" { - appsec_section = "default" -} -data "akamai_appsec_configuration" "configuration" { - name = var.security_configuration -} -data "akamai_appsec_waf_protection" "waf_protection" { - config_id = data.akamai_appsec_configuration.configuration.config_id - version = data.akamai_appsec_configuration.configuration.latest_version - policy_id = var.policy_id -} -output "output_text" { - value = data.akamai_appsec_waf_protection.waf_protection.output_text -} -``` - -## Argument Reference - -The following arguments are supported: - -* `config_id` - (Required) The ID of the security configuration to use. - -* `version` - (Required) The version number of the security configuration to use. - -* `policy_id` - (Required) The ID of the security policy to use - -## Attributes Reference - -In addition to the arguments above, the following attributes are exported: - -* `output_text` - A tabular display showing the enabled status (true or false) of the following protection features: - * applyApiConstraints - * applyApplicationLayerControls - * applyBotmanControls - * applyNetworkLayerControls - * applyRateControls - * applyReputationControls - * applySlowPostControls - From 7842638cf7602939e7e3b94b7e83ebd35a594ce1 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Wed, 3 Feb 2021 18:37:17 -0500 Subject: [PATCH 113/215] SECKSD-9223 - update lists of beta data sources & resources --- docs/guides/' | 225 ++++++++++++++++++++++++++++++ docs/guides/get_started_appsec.md | 45 ++++-- 2 files changed, 258 insertions(+), 12 deletions(-) create mode 100644 docs/guides/' diff --git a/docs/guides/' b/docs/guides/' new file mode 100644 index 000000000..b77c4a44e --- /dev/null +++ b/docs/guides/' @@ -0,0 +1,225 @@ +--- +layout: "akamai" +page_title: "Akamai: Get Started with Application Security" +description: |- + Get Started with Akamai Application Security using Terraform +--- + +# Get Started with Application Security + +The Akamai Provider for Terraform provides you the ability to automate the creation, deployment, and management of security configurations, custom rules, match targets and other application security resources. + +To get more information about Application Security, see the [API documentation](https://developer.akamai.com/api/cloud_security/application_security/v1.html) + +## Configure the Terraform Provider + +Set up your .edgerc credential files as described in [Get Started with Akamai APIs](https://developer.akamai.com/api/getting-started), and include read-write permissions for the Application Security API. + +1. Create a new folder called `terraform` +1. Inside the new folder, create a new file called `akamai.tf`. +1. Add the provider configuration to your `akamai.tf` file: + +```hcl +provider "akamai" { + edgerc = "~/.edgerc" + config_section = "appsec" +} +``` + +## Prerequisites + +To manage Application Security resources, you need to obtain at a minimum the following information: + +* **Configuration ID**: The ID of the specific security configuration under which the resources are defined. + +For certain resources, you will also need other information, such as the version number of the security configuration. The process of obtaining this information is described below. + +## Retrieving Security Configuration Information + +You can obtain the name and ID of the existing security configurations using the [`akamai_appsec_configuration`](../data-sources/appsec_configuration.md) data source. This data source can be used with no additional parameters to output information about all security configurations associated with your account. Add the following to your `akamai.tf` file: + +```hcl +data "akamai_appsec_configuration" "configurations" { +} + +output "configuration_list" { + value = data.akamai_appsec_configuration.configurations.output_text +} +``` + +Once you have saved the file, switch to the terminal and initialize Terraform using the command: + +```bash +$ terraform init +``` + +This command will install the latest version of the Akamai provider, as well as any other providers necessary. To update the Akamai provider version after a new release, simply run `terraform init` again. + +## Test Your Configuration + +To test your configuration, use `terraform plan`: + +```bash +$ terraform plan +``` + +This command will make Terraform create a plan for the work it will do based on the configuration file. This will not actually make any changes and is safe to run as many times as you like. + +## Apply Changes + +To actually display the configuration information, or to create or modify resources as described further in this guide, we need to instruct Terraform to `apply` the changes outlined in the plan. To do this, in the terminal, run the command: + +```bash +$ terraform apply +``` + +Once this command has been executed, Terraform will display to the terminal window a formatted list of all existing security configurations under your account, including for each its name and ID (`config_id`), the number of its most recently created version, and the number of the version currently active in staging and production, if applicable. + +When you have identified the desired security configuration by name, you can load that specific configuration into Terraform's state. To do this, edit your `akamai.tf` file to add the `name` parameter to the `akamai_appsec_configuration` data block using the desired configuration name as its value, and change the `output` block so that it gives just the `config_id` attribute of the configuration. After these changes, the portion of your file below the initial `provider` block will look like this: + +```hcl +data "akamai_appsec_configuration" "configuration" { + name = "Example" +} + +output "ID" { + value = data.akamai_appsec_configuration.configuration.config_id +} +``` + +If you run `terraform apply` on this file, you should see the `config_id` value of the specific configuration displayed on your terminal. + +## Displaying Information About a Specific Configuration + +The provider's [`akamai_appsec_export_configuration`](../data-sources/appsec_export_configuration.md) data source can diplay complete information about a specific configuration, including attributes such as custom rules, selected hostnames, etc. To show these two types of data for the most recent version of your selected configuration, add the following blocks to your `akamai.tf` file: + +```hcl +data "akamai_appsec_export_configuration" "export" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + search = [ + "customRules", + "selectedHosts" + ] +} + +output "exported_configuration_text" { + value = data.akamai_appsec_export_configuration.export.output_text +} +``` + +Note that you can specify a version of the configuration other than the most recent version. See the [`akamai_configuration_version`](../data-sources/appsec_configuration_version.md) data source to list the available versions. Also, you can specify other kinds of data to be exported besides `customRules` and `selectedHosts`, using any of these search fields: + +* customRules +* matchTargets +* ratePolicies +* reputationProfiles +* rulesets +* securityPolicies +* selectableHosts +* selectedHosts + +Save the file and run `terraform apply` to see a formatted display of the selected data. + +## Adding a Hostname to the `selectedHosts` List + +You can modify the list of hosts protected by a given security configuration using the [`akamai_appsec_selected_hostnames`](../data-sources/appsec_selected_hostnames.md) resource. Add the following resource block to your `akamai.tf` file, replacing `example.com` with a hostname from the list reported in the `data_akamai_appsec_export_configuration` data source example above: + +```hcl +resource "akamai_appsec_selected_hostnames" "selected_hostnames_append" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + hostnames = [ "example.com" ] + mode = "APPEND" +} + +output "selected_hostnames_appended" { + value = akamai_appsec_selected_hostnames.selected_hostnames_append.hostnames +} +``` + +Once you save the file and run `terraform apply`, Terraform will update the list of selected hosts and output the new list as the value `selected_hostnames_appended`. + +Note that you cannot modify a security configuration version that is currently active in staging or production, so the resource block above must specify an inactive version. Once you have completed any changes you want to make to a security configuration version, you can activate it in staging. + +## Activating a Security Configuration Version + +You can activate a specific version of a security configuration using the [`akamai_appsec_activations`](../resources/appsec_activations.md) resource. Add the following resource block to your `akamai.tf` file, replacing the `version` value with the number of a currently inactive version, such as the one you modified using the `akamai_appsec_selected_hostnames` resource above. + +```hcl +resource "akamai_appsec_activations" "activation" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + network = "STAGING" + notes = "TEST Notes" + notification_emails = [ "my_name@mycompany.com" ] +} +``` + +Once you save the file and run `terraform apply`, Terraform will activate the security configuration version in staging. When the activation is complete, an email will be sent to any addresses specified in the `notification_emails` list. + +## Importing a Resource + +Terraform allows you to add a resource to its state even if this resource was created outside of Terraform, for example by using the Control Center application. This allows you to keep Terraform's state in sync with the state of your actual infrastructure. To do this, use the `terraform import` command with a configuration file that includes a description of the existing resource. The `import` command requires that you specify the address and ID of the resource. The address specifies the destination to which the resource should be imported; typically this is the resource type and local name of the resource as described in the local configuration file. For example, suppose a new security policy has been created outside of Terraform. You can use the information available in the Control Center to create a matching description of this policy in your local configuration file, for example: + +```hcl +data "akamai_appsec_configuration" "configuration" { + name = "Configuration XYZ" +} +resource "akamai_appsec_security_policy" "security_policy_create" { + config_id = data.akamai_appsec_configuration.configuration.config_id + version = data.akamai_appsec_configuration.configuration.latest_version + default_settings = true + security_policy_name = "Security Policy XYZ" + security_policy_prefix = "XYZ" +} +``` +(Here, the `var` references refer to the values + + +## Beta Features + +Note that the following data sources and resources are currently in Beta, and their behavior or documentation may change in a future release: + +### Data Sources + * akamai_appsec_eval + * akamai_appsec_eval_rule_actions + * akamai_appsec_eval_rule_condition_exception + * akamai_appsec_ip_geo + * akamai_appsec_rule_actions + * akamai_appsec_rule_condition_exception + * akamai_appsec_penalty_box + * akamai_appsec_security_policy_protections + * akamai_appsec_rate_policies + * akamai_appsec_rate_policy_actions + * akamai_appsec_reputation_profiles + * akamai_appsec_reputation_profile_actions + * akamai_appsec_rule_upgrade_details + * akamai_appsec_slow_post + * akamai_appsec_attack_group_actions + * akamai_appsec_waf_mode + * akamai_appsec_attack_group_condition_exception + +### Resources + * akamai_appsec_eval + * akamai_appsec_eval_rule_action + * akamai_appsec_eval_rule_condition_exception + * akamai_appsec_ip_geo + * akamai_appsec_rule_condition_exception + * akamai_appsec_rule_action + * akamai_appsec_penalty_box + * akamai_appsec_security_policy_protections + * akamai_appsec_rate_policy + * akamai_appsec_rate_policy_action + * akamai_appsec_rate_protection + * akamai_appsec_reputation_protection + * akamai_appsec_reputation_profile + * akamai_appsec_reputation_profile_action + * akamai_appsec_rule_upgrade + * akamai_appsec_slow_post + * akamai_appsec_slowpost_protection + * akamai_appsec_attack_group_action + * akamai_appsec_waf_mode + * akamai_appsec_waf_protection + * akamai_appsec_attack_group_condition_exception + diff --git a/docs/guides/get_started_appsec.md b/docs/guides/get_started_appsec.md index a68a94d04..a06dc4f84 100644 --- a/docs/guides/get_started_appsec.md +++ b/docs/guides/get_started_appsec.md @@ -188,44 +188,65 @@ $ terraform import akamai_appsec_security_policy.security_policy_create 33673:55 Note that the following data sources and resources are currently in Beta, and their behavior or documentation may change in a future release: ### Data Sources + * akamai_appsec_advanced_settings_logging + * akamai_appsec_advanced_settings_prefetch + * akamai_appsec_api_endpoints + * akamai_appsec_api_request_constraints + * akamai_appsec_attack_group_actions + * akamai_appsec_attack_group_condition_exception + * akamai_appsec_custom_deny * akamai_appsec_eval + * akamai_appsec_eval_hostnames * akamai_appsec_eval_rule_actions * akamai_appsec_eval_rule_condition_exception + * akamai_appsec_failover_hostnames + * akamai_appsec_hostname_coverage + * akamai_appsec_hostname_coverage_match_targets + * akamai_appsec_hostname_coverage_overlapping * akamai_appsec_ip_geo - * akamai_appsec_rule_actions - * akamai_appsec_rule_condition_exception * akamai_appsec_penalty_box - * akamai_appsec_security_policy_protections * akamai_appsec_rate_policies * akamai_appsec_rate_policy_actions - * akamai_appsec_reputation_profiles * akamai_appsec_reputation_profile_actions + * akamai_appsec_reputation_profile_analysis + * akamai_appsec_reputation_profiles + * akamai_appsec_rule_actions + * akamai_appsec_rule_condition_exception * akamai_appsec_rule_upgrade_details + * akamai_appsec_security_policy_protections + * akamai_appsec_siem_definitions + * akamai_appsec_siem_settings * akamai_appsec_slow_post - * akamai_appsec_attack_group_actions + * akamai_appsec_version_notes * akamai_appsec_waf_mode - * akamai_appsec_attack_group_condition_exception ### Resources + * akamai_appsec_advanced_settings_logging + * akamai_appsec_advanced_settings_prefetch + * akamai_appsec_api_request_constraints + * akamai_appsec_attack_group_action + * akamai_appsec_attack_group_condition_exception + * akamai_appsec_custom_deny * akamai_appsec_eval * akamai_appsec_eval_rule_action * akamai_appsec_eval_rule_condition_exception * akamai_appsec_ip_geo - * akamai_appsec_rule_condition_exception - * akamai_appsec_rule_action * akamai_appsec_penalty_box - * akamai_appsec_security_policy_protections * akamai_appsec_rate_policy * akamai_appsec_rate_policy_action * akamai_appsec_rate_protection - * akamai_appsec_reputation_protection * akamai_appsec_reputation_profile * akamai_appsec_reputation_profile_action + * akamai_appsec_reputation_profile_analysis + * akamai_appsec_reputation_protection + * akamai_appsec_rule_action + * akamai_appsec_rule_condition_exception * akamai_appsec_rule_upgrade + * akamai_appsec_security_policy_protections + * akamai_appsec_siem_settings * akamai_appsec_slow_post * akamai_appsec_slowpost_protection - * akamai_appsec_attack_group_action + * akamai_appsec_version_notes * akamai_appsec_waf_mode * akamai_appsec_waf_protection - * akamai_appsec_attack_group_condition_exception From ebde5c82f74cf12981da21b2659f436952121791 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 3 Feb 2021 19:58:34 -0600 Subject: [PATCH 114/215] Remove extra space in SecurityPolicy.tf --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index f75d0bdd9..8efe937b2 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -191,7 +191,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"appsec_reputation_profile_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"appsec_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}}} \nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \" {{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} + otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}}} \nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostname\" \"appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n enable_for_all_policies = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_botman_siem = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n \n } \n"} From fedc0e01b33ac89c6d58b7c1107dd61be9d5b654 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 3 Feb 2021 23:50:26 -0600 Subject: [PATCH 115/215] Add templates for Eval Attack groups rulesets slowpost IPGeo --- pkg/providers/appsec/templates.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 8efe937b2..34bbccd22 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -182,6 +182,11 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF\n {{marshal .AdvancedOptions.Logging}} EOF \n }"} otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"appsec_attack_group_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_condition_exception\" \"appsec_attack_group_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}"} + otm["EvalActions.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"appsec_eval_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + + otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"appsec_eval_rule_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}}{{if $index}},{{end}}\nresource \"akamai_appsec_custom_rule\" \"appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"appsec_custom_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} @@ -191,8 +196,11 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"appsec_reputation_profile_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"appsec_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_rule_condition_exception\" \"appsec_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}}} \nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostname\" \"appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n enable_for_all_policies = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_botman_siem = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n \n } \n"} + otm["SlowPost.tf"] = &OutputTemplate{TemplateName: "SlowPost.tf", TableTitle: "SlowPost", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_slow_post\" \"appsec_slow_post\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n slow_rate_action = {{.SlowPost.Action}} \n slow_rate_threshold_rate = {{.SlowPost.SlowRateThreshold.Rate}}\n slow_rate_threshold_period = {{.SlowPost.SlowRateThreshold.Rate}}\n duration_threshold_timeout = {{.SlowPost.DurationThreshold.Timeout}}\n \n } \n{{end}}"} + otm["IPGeoFirewall.tf"] = &OutputTemplate{TemplateName: "IPGeoFirewall.tf", TableTitle: "IPGeoFirewall", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_ip_geo\" \"appsec_ip_geo\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n block = {{.IPGeoFirewall.Block}} \n geo_network_lists = [{{ range $index, $element := .IPGeoFirewall.GeoControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n exception_ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.AllowedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n{{end}}"} } From 87a0a3bb1447b5e442263398086acf7341f00253 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Thu, 4 Feb 2021 09:37:00 -0500 Subject: [PATCH 116/215] Removed backup file committed in error --- docs/guides/' | 225 -------------------------------------------------- 1 file changed, 225 deletions(-) delete mode 100644 docs/guides/' diff --git a/docs/guides/' b/docs/guides/' deleted file mode 100644 index b77c4a44e..000000000 --- a/docs/guides/' +++ /dev/null @@ -1,225 +0,0 @@ ---- -layout: "akamai" -page_title: "Akamai: Get Started with Application Security" -description: |- - Get Started with Akamai Application Security using Terraform ---- - -# Get Started with Application Security - -The Akamai Provider for Terraform provides you the ability to automate the creation, deployment, and management of security configurations, custom rules, match targets and other application security resources. - -To get more information about Application Security, see the [API documentation](https://developer.akamai.com/api/cloud_security/application_security/v1.html) - -## Configure the Terraform Provider - -Set up your .edgerc credential files as described in [Get Started with Akamai APIs](https://developer.akamai.com/api/getting-started), and include read-write permissions for the Application Security API. - -1. Create a new folder called `terraform` -1. Inside the new folder, create a new file called `akamai.tf`. -1. Add the provider configuration to your `akamai.tf` file: - -```hcl -provider "akamai" { - edgerc = "~/.edgerc" - config_section = "appsec" -} -``` - -## Prerequisites - -To manage Application Security resources, you need to obtain at a minimum the following information: - -* **Configuration ID**: The ID of the specific security configuration under which the resources are defined. - -For certain resources, you will also need other information, such as the version number of the security configuration. The process of obtaining this information is described below. - -## Retrieving Security Configuration Information - -You can obtain the name and ID of the existing security configurations using the [`akamai_appsec_configuration`](../data-sources/appsec_configuration.md) data source. This data source can be used with no additional parameters to output information about all security configurations associated with your account. Add the following to your `akamai.tf` file: - -```hcl -data "akamai_appsec_configuration" "configurations" { -} - -output "configuration_list" { - value = data.akamai_appsec_configuration.configurations.output_text -} -``` - -Once you have saved the file, switch to the terminal and initialize Terraform using the command: - -```bash -$ terraform init -``` - -This command will install the latest version of the Akamai provider, as well as any other providers necessary. To update the Akamai provider version after a new release, simply run `terraform init` again. - -## Test Your Configuration - -To test your configuration, use `terraform plan`: - -```bash -$ terraform plan -``` - -This command will make Terraform create a plan for the work it will do based on the configuration file. This will not actually make any changes and is safe to run as many times as you like. - -## Apply Changes - -To actually display the configuration information, or to create or modify resources as described further in this guide, we need to instruct Terraform to `apply` the changes outlined in the plan. To do this, in the terminal, run the command: - -```bash -$ terraform apply -``` - -Once this command has been executed, Terraform will display to the terminal window a formatted list of all existing security configurations under your account, including for each its name and ID (`config_id`), the number of its most recently created version, and the number of the version currently active in staging and production, if applicable. - -When you have identified the desired security configuration by name, you can load that specific configuration into Terraform's state. To do this, edit your `akamai.tf` file to add the `name` parameter to the `akamai_appsec_configuration` data block using the desired configuration name as its value, and change the `output` block so that it gives just the `config_id` attribute of the configuration. After these changes, the portion of your file below the initial `provider` block will look like this: - -```hcl -data "akamai_appsec_configuration" "configuration" { - name = "Example" -} - -output "ID" { - value = data.akamai_appsec_configuration.configuration.config_id -} -``` - -If you run `terraform apply` on this file, you should see the `config_id` value of the specific configuration displayed on your terminal. - -## Displaying Information About a Specific Configuration - -The provider's [`akamai_appsec_export_configuration`](../data-sources/appsec_export_configuration.md) data source can diplay complete information about a specific configuration, including attributes such as custom rules, selected hostnames, etc. To show these two types of data for the most recent version of your selected configuration, add the following blocks to your `akamai.tf` file: - -```hcl -data "akamai_appsec_export_configuration" "export" { - config_id = data.akamai_appsec_configuration.configuration.config_id - version = data.akamai_appsec_configuration.configuration.latest_version - search = [ - "customRules", - "selectedHosts" - ] -} - -output "exported_configuration_text" { - value = data.akamai_appsec_export_configuration.export.output_text -} -``` - -Note that you can specify a version of the configuration other than the most recent version. See the [`akamai_configuration_version`](../data-sources/appsec_configuration_version.md) data source to list the available versions. Also, you can specify other kinds of data to be exported besides `customRules` and `selectedHosts`, using any of these search fields: - -* customRules -* matchTargets -* ratePolicies -* reputationProfiles -* rulesets -* securityPolicies -* selectableHosts -* selectedHosts - -Save the file and run `terraform apply` to see a formatted display of the selected data. - -## Adding a Hostname to the `selectedHosts` List - -You can modify the list of hosts protected by a given security configuration using the [`akamai_appsec_selected_hostnames`](../data-sources/appsec_selected_hostnames.md) resource. Add the following resource block to your `akamai.tf` file, replacing `example.com` with a hostname from the list reported in the `data_akamai_appsec_export_configuration` data source example above: - -```hcl -resource "akamai_appsec_selected_hostnames" "selected_hostnames_append" { - config_id = data.akamai_appsec_configuration.configuration.config_id - version = data.akamai_appsec_configuration.configuration.latest_version - hostnames = [ "example.com" ] - mode = "APPEND" -} - -output "selected_hostnames_appended" { - value = akamai_appsec_selected_hostnames.selected_hostnames_append.hostnames -} -``` - -Once you save the file and run `terraform apply`, Terraform will update the list of selected hosts and output the new list as the value `selected_hostnames_appended`. - -Note that you cannot modify a security configuration version that is currently active in staging or production, so the resource block above must specify an inactive version. Once you have completed any changes you want to make to a security configuration version, you can activate it in staging. - -## Activating a Security Configuration Version - -You can activate a specific version of a security configuration using the [`akamai_appsec_activations`](../resources/appsec_activations.md) resource. Add the following resource block to your `akamai.tf` file, replacing the `version` value with the number of a currently inactive version, such as the one you modified using the `akamai_appsec_selected_hostnames` resource above. - -```hcl -resource "akamai_appsec_activations" "activation" { - config_id = data.akamai_appsec_configuration.configuration.config_id - version = data.akamai_appsec_configuration.configuration.latest_version - network = "STAGING" - notes = "TEST Notes" - notification_emails = [ "my_name@mycompany.com" ] -} -``` - -Once you save the file and run `terraform apply`, Terraform will activate the security configuration version in staging. When the activation is complete, an email will be sent to any addresses specified in the `notification_emails` list. - -## Importing a Resource - -Terraform allows you to add a resource to its state even if this resource was created outside of Terraform, for example by using the Control Center application. This allows you to keep Terraform's state in sync with the state of your actual infrastructure. To do this, use the `terraform import` command with a configuration file that includes a description of the existing resource. The `import` command requires that you specify the address and ID of the resource. The address specifies the destination to which the resource should be imported; typically this is the resource type and local name of the resource as described in the local configuration file. For example, suppose a new security policy has been created outside of Terraform. You can use the information available in the Control Center to create a matching description of this policy in your local configuration file, for example: - -```hcl -data "akamai_appsec_configuration" "configuration" { - name = "Configuration XYZ" -} -resource "akamai_appsec_security_policy" "security_policy_create" { - config_id = data.akamai_appsec_configuration.configuration.config_id - version = data.akamai_appsec_configuration.configuration.latest_version - default_settings = true - security_policy_name = "Security Policy XYZ" - security_policy_prefix = "XYZ" -} -``` -(Here, the `var` references refer to the values - - -## Beta Features - -Note that the following data sources and resources are currently in Beta, and their behavior or documentation may change in a future release: - -### Data Sources - * akamai_appsec_eval - * akamai_appsec_eval_rule_actions - * akamai_appsec_eval_rule_condition_exception - * akamai_appsec_ip_geo - * akamai_appsec_rule_actions - * akamai_appsec_rule_condition_exception - * akamai_appsec_penalty_box - * akamai_appsec_security_policy_protections - * akamai_appsec_rate_policies - * akamai_appsec_rate_policy_actions - * akamai_appsec_reputation_profiles - * akamai_appsec_reputation_profile_actions - * akamai_appsec_rule_upgrade_details - * akamai_appsec_slow_post - * akamai_appsec_attack_group_actions - * akamai_appsec_waf_mode - * akamai_appsec_attack_group_condition_exception - -### Resources - * akamai_appsec_eval - * akamai_appsec_eval_rule_action - * akamai_appsec_eval_rule_condition_exception - * akamai_appsec_ip_geo - * akamai_appsec_rule_condition_exception - * akamai_appsec_rule_action - * akamai_appsec_penalty_box - * akamai_appsec_security_policy_protections - * akamai_appsec_rate_policy - * akamai_appsec_rate_policy_action - * akamai_appsec_rate_protection - * akamai_appsec_reputation_protection - * akamai_appsec_reputation_profile - * akamai_appsec_reputation_profile_action - * akamai_appsec_rule_upgrade - * akamai_appsec_slow_post - * akamai_appsec_slowpost_protection - * akamai_appsec_attack_group_action - * akamai_appsec_waf_mode - * akamai_appsec_waf_protection - * akamai_appsec_attack_group_condition_exception - From 013e1737a7a1908b607f1b4917451ba66fc7938e Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 4 Feb 2021 09:03:20 -0600 Subject: [PATCH 117/215] Add support for IPGeo import --- .../appsec/resource_akamai_appsec_ip_geo.go | 24 +++++++++++++++++++ pkg/providers/appsec/templates.go | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_ip_geo.go b/pkg/providers/appsec/resource_akamai_appsec_ip_geo.go index 3a2d16083..8da46643e 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_ip_geo.go +++ b/pkg/providers/appsec/resource_akamai_appsec_ip_geo.go @@ -143,6 +143,30 @@ func resourceIPGeoRead(ctx context.Context, d *schema.ResourceData, m interface{ return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if ipgeo.Block == "blockAllTrafficExceptAllowedIPs" { + if err := d.Set("mode", Allow); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + } + + if ipgeo.Block == "blockSpecificIPGeo" { + if err := d.Set("mode", Block); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + } + + if err := d.Set("geo_network_lists", ipgeo.GeoControls.BlockedIPNetworkLists.NetworkList); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("ip_network_lists", ipgeo.IPControls.BlockedIPNetworkLists.NetworkList); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("exception_ip_network_lists", ipgeo.IPControls.AllowedIPNetworkLists.NetworkList); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%s", getIPGeo.ConfigID, getIPGeo.Version, getIPGeo.PolicyID)) return nil diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 34bbccd22..75f89a503 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -201,6 +201,6 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostname\" \"appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n enable_for_all_policies = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_botman_siem = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n \n } \n"} otm["SlowPost.tf"] = &OutputTemplate{TemplateName: "SlowPost.tf", TableTitle: "SlowPost", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_slow_post\" \"appsec_slow_post\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n slow_rate_action = {{.SlowPost.Action}} \n slow_rate_threshold_rate = {{.SlowPost.SlowRateThreshold.Rate}}\n slow_rate_threshold_period = {{.SlowPost.SlowRateThreshold.Rate}}\n duration_threshold_timeout = {{.SlowPost.DurationThreshold.Timeout}}\n \n } \n{{end}}"} - otm["IPGeoFirewall.tf"] = &OutputTemplate{TemplateName: "IPGeoFirewall.tf", TableTitle: "IPGeoFirewall", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_ip_geo\" \"appsec_ip_geo\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n block = {{.IPGeoFirewall.Block}} \n geo_network_lists = [{{ range $index, $element := .IPGeoFirewall.GeoControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n exception_ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.AllowedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n{{end}}"} + otm["IPGeoFirewall.tf"] = &OutputTemplate{TemplateName: "IPGeoFirewall.tf", TableTitle: "IPGeoFirewall", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_ip_geo\" \"appsec_ip_geo\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n mode = {{if eq .IPGeoFirewall.Block \"blockSpecificIPGeo\"}}\"block\"{{else}}\"allow\"{{end}} \n geo_network_lists = [{{ range $index, $element := .IPGeoFirewall.GeoControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n exception_ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.AllowedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n{{end}}"} } From c3749964039782121b56c5ee5fc59f24a1ff83ca Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 4 Feb 2021 09:47:46 -0600 Subject: [PATCH 118/215] Add support for slowpost import --- ...amai_appsec_slow_post_protection_setting.go | 18 +++++++++++++++++- pkg/providers/appsec/templates.go | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_slow_post_protection_setting.go b/pkg/providers/appsec/resource_akamai_appsec_slow_post_protection_setting.go index 53db9db57..708b22ff0 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_slow_post_protection_setting.go +++ b/pkg/providers/appsec/resource_akamai_appsec_slow_post_protection_setting.go @@ -107,7 +107,7 @@ func resourceSlowPostProtectionSettingRead(ctx context.Context, d *schema.Resour } getSlowPostProtectionSetting.PolicyID = policyid } - _, errg := client.GetSlowPostProtectionSetting(ctx, getSlowPostProtectionSetting) + getslowpost, errg := client.GetSlowPostProtectionSetting(ctx, getSlowPostProtectionSetting) if errg != nil { logger.Errorf("calling 'getSlowPostProtectionSetting': %s", errg.Error()) return diag.FromErr(errg) @@ -125,6 +125,22 @@ func resourceSlowPostProtectionSettingRead(ctx context.Context, d *schema.Resour return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("slow_rate_action", getslowpost.Action); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("slow_rate_threshold_rate", getslowpost.SlowRateThreshold.Rate); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("slow_rate_threshold_period", getslowpost.SlowRateThreshold.Period); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("duration_threshold_timeout", getslowpost.DurationThreshold.Timeout); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%s", getSlowPostProtectionSetting.ConfigID, getSlowPostProtectionSetting.Version, getSlowPostProtectionSetting.PolicyID)) return nil diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 75f89a503..a87b1ba6d 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -200,7 +200,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}}} \nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostname\" \"appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n enable_for_all_policies = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_botman_siem = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n \n } \n"} - otm["SlowPost.tf"] = &OutputTemplate{TemplateName: "SlowPost.tf", TableTitle: "SlowPost", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_slow_post\" \"appsec_slow_post\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n slow_rate_action = {{.SlowPost.Action}} \n slow_rate_threshold_rate = {{.SlowPost.SlowRateThreshold.Rate}}\n slow_rate_threshold_period = {{.SlowPost.SlowRateThreshold.Rate}}\n duration_threshold_timeout = {{.SlowPost.DurationThreshold.Timeout}}\n \n } \n{{end}}"} + otm["SlowPost.tf"] = &OutputTemplate{TemplateName: "SlowPost.tf", TableTitle: "SlowPost", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_slow_post\" \"appsec_slow_post\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n slow_rate_action = \"{{.SlowPost.Action}}\" \n slow_rate_threshold_rate = {{.SlowPost.SlowRateThreshold.Rate}}\n slow_rate_threshold_period = {{.SlowPost.SlowRateThreshold.Period}}\n duration_threshold_timeout = {{.SlowPost.DurationThreshold.Timeout}}\n \n } \n{{end}}"} otm["IPGeoFirewall.tf"] = &OutputTemplate{TemplateName: "IPGeoFirewall.tf", TableTitle: "IPGeoFirewall", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_ip_geo\" \"appsec_ip_geo\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n mode = {{if eq .IPGeoFirewall.Block \"blockSpecificIPGeo\"}}\"block\"{{else}}\"allow\"{{end}} \n geo_network_lists = [{{ range $index, $element := .IPGeoFirewall.GeoControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n exception_ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.AllowedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n{{end}}"} } From fc51623b94b6626c680a2cbf4a474cc44b63e711 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 4 Feb 2021 09:55:28 -0600 Subject: [PATCH 119/215] Refactor slow post default duration threshold --- .../resource_akamai_appsec_slow_post_protection_setting.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_slow_post_protection_setting.go b/pkg/providers/appsec/resource_akamai_appsec_slow_post_protection_setting.go index 708b22ff0..fc29b9b8d 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_slow_post_protection_setting.go +++ b/pkg/providers/appsec/resource_akamai_appsec_slow_post_protection_setting.go @@ -58,7 +58,8 @@ func resourceSlowPostProtectionSetting() *schema.Resource { }, "duration_threshold_timeout": { Type: schema.TypeInt, - Required: true, + Optional: true, + Default: 0, }, }, } From baf002ac7cf182ad1c3df67ad479c4066e33682f Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 4 Feb 2021 10:10:41 -0600 Subject: [PATCH 120/215] Add suuport for attack group action import --- .../appsec/resource_akamai_appsec_attack_group_action.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_attack_group_action.go b/pkg/providers/appsec/resource_akamai_appsec_attack_group_action.go index f32916abc..6c5ce5daa 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_attack_group_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_attack_group_action.go @@ -140,7 +140,11 @@ func resourceAttackGroupActionRead(ctx context.Context, d *schema.ResourceData, return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - if err := d.Set("attack_group", getAttackGroupAction.PolicyID); err != nil { + if err := d.Set("attack_group", getAttackGroupAction.Group); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("attack_group_action", attackgroupaction.Action); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } From c80edc635356e69c2b777ecde4ee7ddcad4da8f0 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Thu, 4 Feb 2021 11:24:05 -0500 Subject: [PATCH 121/215] More updates for changing "reputation" to "reputation profile" --- .../data-sources/appsec_reputation_profile_analysis.md | 2 +- ...alysis.md => appsec_reputation_profile_analysis.md} | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) rename docs/resources/{appsec_reputation_analysis.md => appsec_reputation_profile_analysis.md} (66%) diff --git a/docs/data-sources/appsec_reputation_profile_analysis.md b/docs/data-sources/appsec_reputation_profile_analysis.md index 822ca78e2..5a78ed199 100644 --- a/docs/data-sources/appsec_reputation_profile_analysis.md +++ b/docs/data-sources/appsec_reputation_profile_analysis.md @@ -3,7 +3,7 @@ layout: "akamai" page_title: "Akamai: ReputationProfileAnalysis" subcategory: "Application Security" description: |- - ReputationProfileAnalysis + Reputation Profile Analysis --- # akamai_appsec_reputation_profile_analysis diff --git a/docs/resources/appsec_reputation_analysis.md b/docs/resources/appsec_reputation_profile_analysis.md similarity index 66% rename from docs/resources/appsec_reputation_analysis.md rename to docs/resources/appsec_reputation_profile_analysis.md index 92741cdfe..a9d63d9a7 100644 --- a/docs/resources/appsec_reputation_analysis.md +++ b/docs/resources/appsec_reputation_profile_analysis.md @@ -1,14 +1,14 @@ --- layout: "akamai" -page_title: "Akamai: ReputationAnalysis" +page_title: "Akamai: ReputationProfileAnalysis" subcategory: "Application Security" description: |- - ReputationAnalysis + Reputation Profile Analysis --- -# resource_akamai_appsec_reputation_analysis +# resource_akamai_appsec_reputation_profile_analysis -The `resource_akamai_appsec_reputation_analysis` resource allows you to toggle the reputation analysis settings for a given security policy. The `forward_to_http_header` parameter indicates whether to add client reputation details to requests forwarded to origin in an HTTP header. The `forward_shared_ip_to_http_header_siem` parameter indicates whether to add value indicating that shared IPs are included in HTTP header and SIEM integration. +The `resource_akamai_appsec_reputation_profile_analysis` resource allows you to toggle the reputation analysis settings for a given security policy. The `forward_to_http_header` parameter indicates whether to add client reputation details to requests forwarded to origin in an HTTP header. The `forward_shared_ip_to_http_header_siem` parameter indicates whether to add value indicating that shared IPs are included in HTTP header and SIEM integration. ## Example Usage @@ -24,7 +24,7 @@ data "akamai_appsec_configuration" "configuration" { } // USE CASE: user wants to set reputation analysis settings -resource "akamai_appsec_reputation_analysis" "reputation_analysis" { +resource "akamai_appsec_reputation_profile_analysis" "reputation_analysis" { config_id = data.akamai_appsec_configuration.configuration.config_id version = data.akamai_appsec_configuration.configuration.latest_version security_policy_id = var.security_policy_id From b395196f7c0fe13229b741713e4a5dddb240d565 Mon Sep 17 00:00:00 2001 From: Phil Lodine Date: Thu, 4 Feb 2021 11:34:05 -0500 Subject: [PATCH 122/215] Fix missing/incorrect content --- docs/resources/appsec_custom_rule_action.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/resources/appsec_custom_rule_action.md b/docs/resources/appsec_custom_rule_action.md index c0eb2b77d..afe708406 100644 --- a/docs/resources/appsec_custom_rule_action.md +++ b/docs/resources/appsec_custom_rule_action.md @@ -3,7 +3,7 @@ layout: "akamai" page_title: "Akamai: CustomRuleAction" subcategory: "Application Security" description: |- - CustomRuleAction + Custom Rule Action --- # akamai_appsec_custom_rule_action @@ -28,7 +28,7 @@ data "akamai_appsec_configuration" "configuration" { resource "akamai_appsec_custom_rule_action" "create_custom_rule_action" { config_id = data.akamai_appsec_configuration.configuration.config_id version = data.akamai_appsec_configuration.configuration.latest_version - policy_id = "crAP_75829" + security_policy_id = "crAP_75829" custom_rule_id = 12345 custom_rule_action = "alert" } @@ -47,15 +47,15 @@ The following arguments are supported: * `version` - (Required) The version number of the security configuration to use. -* `custom_rule_action` - (Required) The action to take when the custom rule is invoked: `alert` to record the trigger event, `deny` to block the request, `deny_custom_{custom_deny_id}` to execute a custom deny action, or `none` to take no action. +* `security_policy_id` - (Required) The security policy to use. -* `policy_id` - (Required) The +* `custom_rule_id` - (Required) The custom rule for which to apply the action. -* `custom_rule_id` - (Required) +* `custom_rule_action` - (Required) The action to take when the custom rule is invoked: `alert` to record the trigger event, `deny` to block the request, `deny_custom_{custom_deny_id}` to execute a custom deny action, or `none` to take no action. ## Attribute Reference In addition to the arguments above, the following attribute is exported: -* `custom_rule_id` - The ID of the custom rule. +* None From 30063b8dd1ac738f535c0de560f52f9b714c2a47 Mon Sep 17 00:00:00 2001 From: Corin Caliendo Date: Thu, 4 Feb 2021 12:42:41 -0500 Subject: [PATCH 123/215] GTM and DNS editorial updates --- docs/data-sources/dns_authorities_set.md | 14 ++++---- docs/data-sources/gtm_default_datacenter.md | 22 ++++++------- docs/resources/dns_record.md | 36 ++++++++++----------- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/docs/data-sources/dns_authorities_set.md b/docs/data-sources/dns_authorities_set.md index ae46043c1..7549a3170 100644 --- a/docs/data-sources/dns_authorities_set.md +++ b/docs/data-sources/dns_authorities_set.md @@ -8,9 +8,9 @@ description: |- # akamai_authorities_set -Use `akamai_authorities_set` datasource to retrieve a contract's authorities set for use when creating new zones. +Use `akamai_authorities_set` data source to retrieve a contract's authorities set. You use the authorities set when creating new zones. -## Example Usage +## Example usage Basic usage: @@ -20,14 +20,14 @@ data "akamai_authorities_set" "example" { } ``` -## Argument Reference +## Argument reference -The following arguments are supported: +This data source supports this argument: * `contract` - (Required) The contract ID. -## Attributes Reference +## Attributes reference -The following attributes are returned: +This data source supports this attribute: -* `authorities` - A list of authorities +* `authorities` - A list of authorities. diff --git a/docs/data-sources/gtm_default_datacenter.md b/docs/data-sources/gtm_default_datacenter.md index 87628f81d..b0b6834b4 100644 --- a/docs/data-sources/gtm_default_datacenter.md +++ b/docs/data-sources/gtm_default_datacenter.md @@ -3,14 +3,14 @@ layout: "akamai" page_title: "Akamai: gtm_default_datacenter" subcategory: "Global Traffic Management" description: |- - Default Datacenter + Default data center --- # akamai_gtm_default_datacenter -Use `akamai_gtm_default_datacenter` data source to retrieve default datacenter id and nickname. +Use the `akamai_gtm_default_datacenter` data source to retrieve the default data center, ID, and nickname. -## Example Usage +## Example usage Basic usage: @@ -29,17 +29,17 @@ resource "akamai_gtm_cidrmap" "example_cidrmap" { } ``` -## Argument Reference +## Argument reference -The following arguments are supported: +This data source supports these arguments: * `domain` - (Required) -* `datacenter` - (Optional. Default 5400) +* `datacenter` - (Optional) The default is `5400`. -## Attributes Reference +## Attributes reference -The following attributes are returned: +This data source supports these attributes: -* `id` - The data resource ID. Format: `:default_datacenter:` -* `datacenter_id` - The default datacenter ID -* `nickname` - The default datacenter nickname +* `id` - The data resource ID. Enter in this format: `:default_datacenter:`. +* `datacenter_id` - The default data center ID. +* `nickname` - The default data center nickname. diff --git a/docs/resources/dns_record.md b/docs/resources/dns_record.md index c0730f61c..80a0c6ec8 100644 --- a/docs/resources/dns_record.md +++ b/docs/resources/dns_record.md @@ -1,17 +1,16 @@ --- layout: "akamai" -page_title: "Akamai: dns record" +page_title: "Akamai: DNS Record" subcategory: "DNS" description: |- - DNS Record + DNS record --- # akamai_dns_record +Use the `akamai_dns_record` resource to configure a DNS record that can integrate with your existing DNS infrastructure. -The `akamai_dns_record` provides the resource for configuring a dns record to integrate easily with your existing DNS infrastructure to provide a secure, high performance, highly available and scalable solution for DNS hosting. - -## Example Usage +## Example usage Basic usage: @@ -37,34 +36,35 @@ resource "akamai_dns_record" "www" { } ``` -## Argument Reference +## Argument reference -The following arguments are necessary for all record types: +This resource supports these arguments: -* `name` - (Required) The name of the record. The name is an owner name, that is, the name of the node to which this resource record pertains. -* `zone` - (Required) Domain zone, encapsulating any nested subdomains. +* `name` - (Required) The DNS record name. This is the node this DNS record is associated with. Also known as an owner name. +* `zone` - (Required) The domain zone, including any nested subdomains. * `recordType` - (Required) The DNS record type. -* `ttl` - (Required,Boolean) The TTL is a 32-bit signed integer that specifies the time interval that the resource record may be cached before the source of the information should be consulted again. A value of zero means that the RR can only be used for the transaction in progress, and should not be cached. Zero values can also be used for extremely volatile data. +* `ttl` - (Required, Boolean) The time to live. This is a 32-bit signed integer for the time the resource record is cached.
A value of `0` means that the resource record is not cached. It's only used for the transaction in progress and may be useful for extremely volatile data. -## Required Fields Per Record Type +## Required fields per record type -In addition to the fields listed in the prior section, type specific fields define the data makeup of each Record's data. This section identfies required fields per type. +This section lists required arguments by record type. These are needed in addition to the ones listed in the argument reference above. -### A Record -The following field is required: +### A record + +An A record requires this argument: * target - One or more IPv4 addresses, for example, 1.2.3.4. -### AAAA Record +### AAAA record -The following field is required: +An AAAA record requires this argument: * target - One or more IPv6 addresses, for example, 2001:0db8::ff00:0042:8329. -### AFSDB Record +### AFSDB record -The following fields are required: +An A record requires these arguments: * target - The domain name of the host having a server for the cell named by the owner name of the resource record. * subtype- An integer between 0 and 65535, indicating the type of service provided by the host. From d73128161a268493c73e3f2819aeedf707b068cb Mon Sep 17 00:00:00 2001 From: Neha Ghate Date: Thu, 4 Feb 2021 15:45:06 -0500 Subject: [PATCH 124/215] added unit test,validates only on .json files --- .../property/data_akamai_property_rules_template.go | 11 +++++++---- .../data_akamai_property_rules_template_test.go | 2 +- .../templates => output}/template_invalid_json.json | 0 .../{rules/templates => output}/template_out.json | 0 .../TestDSRulesTemplate/template_invalid_json.tf | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) rename pkg/providers/property/testdata/TestDSRulesTemplate/{rules/templates => output}/template_invalid_json.json (100%) rename pkg/providers/property/testdata/TestDSRulesTemplate/{rules/templates => output}/template_out.json (100%) diff --git a/pkg/providers/property/data_akamai_property_rules_template.go b/pkg/providers/property/data_akamai_property_rules_template.go index a7d0fd69b..0c8c602b1 100644 --- a/pkg/providers/property/data_akamai_property_rules_template.go +++ b/pkg/providers/property/data_akamai_property_rules_template.go @@ -150,10 +150,12 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m var diags diag.Diagnostics for name, f := range templateFiles { b, _ := ioutil.ReadFile(f) - var target map[string]interface{} - if err := json.Unmarshal(b, &target); err != nil { - logger.Warnf("invalid JSON result found in template snippet json here %s: ",f) - diags = append(diags, diag.Errorf("invalid JSON result found in template snippet json here %s: %s",f,err)...) + if jsonFileRegexp.MatchString(name) { + var target map[string]interface{} + if err := json.Unmarshal(b, &target); err != nil { + logger.Warnf("invalid JSON result found in template snippet json here %s: ", f) + diags = append(diags, diag.Errorf("invalid JSON result found in template snippet json here %s: %s", f, err)...) + } } templateStr, err := convertToTemplate(f) if err != nil { @@ -189,6 +191,7 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m var ( includeRegexp = regexp.MustCompile(`"#include:.+"`) varRegexp = regexp.MustCompile(`"\${.+}"`) + jsonFileRegexp = regexp.MustCompile(`\.json+$`) ) var ( diff --git a/pkg/providers/property/data_akamai_property_rules_template_test.go b/pkg/providers/property/data_akamai_property_rules_template_test.go index 91f622613..4b13a8a5b 100644 --- a/pkg/providers/property/data_akamai_property_rules_template_test.go +++ b/pkg/providers/property/data_akamai_property_rules_template_test.go @@ -138,7 +138,7 @@ func TestDataAkamaiPropertyRulesRead(t *testing.T) { Steps: []resource.TestStep{ { Config: loadFixtureString("testdata/TestDSRulesTemplate/template_invalid_json.tf"), - ExpectError: regexp.MustCompile(`invalid JSON result:`), + ExpectError: regexp.MustCompile(`Error: invalid JSON result found in template snippet json here`), }, }, }) diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/template_invalid_json.json b/pkg/providers/property/testdata/TestDSRulesTemplate/output/template_invalid_json.json similarity index 100% rename from pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/template_invalid_json.json rename to pkg/providers/property/testdata/TestDSRulesTemplate/output/template_invalid_json.json diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/template_out.json b/pkg/providers/property/testdata/TestDSRulesTemplate/output/template_out.json similarity index 100% rename from pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/template_out.json rename to pkg/providers/property/testdata/TestDSRulesTemplate/output/template_out.json diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_json.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_json.tf index 6bdfa75d3..294b2b927 100644 --- a/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_json.tf +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_json.tf @@ -3,5 +3,5 @@ provider "akamai" { } data "akamai_property_rules_template" "test" { - template_file = "testdata/TestDSRulesTemplate/rules/templates/template_invalid_json.json" + template_file = "testdata/TestDSRulesTemplate/output/template_invalid_json.json" } From f6e852e5ef00ec89c0be8823b417a9e3fe161fd1 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 4 Feb 2021 16:10:43 -0600 Subject: [PATCH 125/215] Fix export template for selected_hostnames --- .../appsec/resource_akamai_appsec_selected_hostname.go | 4 ++++ pkg/providers/appsec/templates.go | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_selected_hostname.go b/pkg/providers/appsec/resource_akamai_appsec_selected_hostname.go index 40783d3f9..f1d414ba9 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_selected_hostname.go +++ b/pkg/providers/appsec/resource_akamai_appsec_selected_hostname.go @@ -113,6 +113,10 @@ func resourceSelectedHostnameRead(ctx context.Context, d *schema.ResourceData, m return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("mode", "REPLACE"); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d", getSelectedHostname.ConfigID, getSelectedHostname.Version)) return nil diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index a87b1ba6d..1ca85d3d6 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -196,9 +196,9 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"appsec_reputation_profile_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"appsec_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_rule_condition_exception\" \"appsec_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_rule_condition_exception\" \"appsec_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}}} \nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} - otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostname\" \"appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} + otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n mode = \"REPLACE\" \n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n enable_for_all_policies = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_botman_siem = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n \n } \n"} otm["SlowPost.tf"] = &OutputTemplate{TemplateName: "SlowPost.tf", TableTitle: "SlowPost", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_slow_post\" \"appsec_slow_post\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n slow_rate_action = \"{{.SlowPost.Action}}\" \n slow_rate_threshold_rate = {{.SlowPost.SlowRateThreshold.Rate}}\n slow_rate_threshold_period = {{.SlowPost.SlowRateThreshold.Period}}\n duration_threshold_timeout = {{.SlowPost.DurationThreshold.Timeout}}\n \n } \n{{end}}"} otm["IPGeoFirewall.tf"] = &OutputTemplate{TemplateName: "IPGeoFirewall.tf", TableTitle: "IPGeoFirewall", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_ip_geo\" \"appsec_ip_geo\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n mode = {{if eq .IPGeoFirewall.Block \"blockSpecificIPGeo\"}}\"block\"{{else}}\"allow\"{{end}} \n geo_network_lists = [{{ range $index, $element := .IPGeoFirewall.GeoControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n exception_ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.AllowedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n{{end}}"} From 1cdd04fcc314f150072133da13fc8a7c61306d65 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 4 Feb 2021 18:06:16 -0600 Subject: [PATCH 126/215] Fix Siem settings import --- .../appsec/resource_akamai_appsec_siem_settings.go | 9 +++++++++ pkg/providers/appsec/templates.go | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go b/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go index f5990e5eb..09365c9b7 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go +++ b/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go @@ -131,6 +131,15 @@ func resourceSiemSettingsRead(ctx context.Context, d *schema.ResourceData, m int if err := d.Set("enable_botman_siem", siemsettings.EnabledBotmanSiemEvents); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + + if err := d.Set("siem_id", siemsettings.SiemDefinitionID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_ids", siemsettings.FirewallPolicyIds); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d", getSiemSettings.ConfigID, getSiemSettings.Version)) return nil diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 1ca85d3d6..eaefa30d1 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -199,7 +199,8 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_rule_condition_exception\" \"appsec_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}}} \nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n mode = \"REPLACE\" \n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} - otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n enable_for_all_policies = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_botman_siem = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n \n } \n"} + + otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.Siem.EnableSiem}} \n enable_for_all_policies = {{.Siem.EnableForAllPolicies}}\n enable_botman_siem = {{.Siem.EnabledBotmanSiemEvents}}\n siem_id = {{.Siem.SiemDefinitionID}}\n security_policy_ids = [{{ range $index, $element := .Siem.FirewallPolicyIds}}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n"} otm["SlowPost.tf"] = &OutputTemplate{TemplateName: "SlowPost.tf", TableTitle: "SlowPost", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_slow_post\" \"appsec_slow_post\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n slow_rate_action = \"{{.SlowPost.Action}}\" \n slow_rate_threshold_rate = {{.SlowPost.SlowRateThreshold.Rate}}\n slow_rate_threshold_period = {{.SlowPost.SlowRateThreshold.Period}}\n duration_threshold_timeout = {{.SlowPost.DurationThreshold.Timeout}}\n \n } \n{{end}}"} otm["IPGeoFirewall.tf"] = &OutputTemplate{TemplateName: "IPGeoFirewall.tf", TableTitle: "IPGeoFirewall", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_ip_geo\" \"appsec_ip_geo\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n mode = {{if eq .IPGeoFirewall.Block \"blockSpecificIPGeo\"}}\"block\"{{else}}\"allow\"{{end}} \n geo_network_lists = [{{ range $index, $element := .IPGeoFirewall.GeoControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n exception_ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.AllowedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n{{end}}"} From 6d63c7c6e0ffb4f19739c0f07db1aac344727717 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 4 Feb 2021 20:00:21 -0600 Subject: [PATCH 127/215] Remove update call from security_policy resource --- .../resource_akamai_appsec_security_policy.go | 68 ------------------- ...urce_akamai_appsec_security_policy_test.go | 16 ----- 2 files changed, 84 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_security_policy.go b/pkg/providers/appsec/resource_akamai_appsec_security_policy.go index 071b4417a..9a3de919e 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_security_policy.go +++ b/pkg/providers/appsec/resource_akamai_appsec_security_policy.go @@ -114,74 +114,6 @@ func resourceSecurityPolicyCreate(ctx context.Context, d *schema.ResourceData, m } func resourceSecurityPolicyUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := akamai.Meta(m) - client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceSecurityPolicyUpdate") - - updateSecurityPolicy := appsec.UpdateSecurityPolicyRequest{} - if d.Id() != "" && strings.Contains(d.Id(), ":") { - s := strings.Split(d.Id(), ":") - - configid, errconv := strconv.Atoi(s[0]) - if errconv != nil { - return diag.FromErr(errconv) - } - updateSecurityPolicy.ConfigID = configid - - version, errconv := strconv.Atoi(s[1]) - if errconv != nil { - return diag.FromErr(errconv) - } - updateSecurityPolicy.Version = version - - policyid := s[2] - - updateSecurityPolicy.PolicyID = policyid - - policyprefix, err := tools.GetStringValue("security_policy_prefix", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSecurityPolicy.PolicyPrefix = policyprefix - - policyname, err := tools.GetStringValue("security_policy_name", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSecurityPolicy.PolicyName = policyname - - } else { - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSecurityPolicy.ConfigID = configid - - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSecurityPolicy.Version = version - - policyname, err := tools.GetStringValue("security_policy_name", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSecurityPolicy.PolicyName = policyname - - policyprefix, err := tools.GetStringValue("security_policy_prefix", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateSecurityPolicy.PolicyPrefix = policyprefix - - updateSecurityPolicy.PolicyID = d.Id() - } - _, erru := client.UpdateSecurityPolicy(ctx, updateSecurityPolicy) - if erru != nil { - logger.Errorf("calling 'updateSecurityPolicy': %s", erru.Error()) - return diag.FromErr(erru) - } return resourceSecurityPolicyRead(ctx, d, m) } diff --git a/pkg/providers/appsec/resource_akamai_appsec_security_policy_test.go b/pkg/providers/appsec/resource_akamai_appsec_security_policy_test.go index 68e9fa07a..56151bca3 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_security_policy_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_security_policy_test.go @@ -13,10 +13,6 @@ func TestAccAkamaiSecurityPolicy_res_basic(t *testing.T) { t.Run("match by SecurityPolicy ID", func(t *testing.T) { client := &mockappsec{} - cu := appsec.UpdateSecurityPolicyResponse{} - expectJSU := compactJSON(loadFixtureBytes("testdata/TestResSecurityPolicy/SecurityPolicyUpdate.json")) - json.Unmarshal([]byte(expectJSU), &cu) - cr := appsec.GetSecurityPolicyResponse{} expectJS := compactJSON(loadFixtureBytes("testdata/TestResSecurityPolicy/SecurityPolicy.json")) json.Unmarshal([]byte(expectJS), &cr) @@ -39,11 +35,6 @@ func TestAccAkamaiSecurityPolicy_res_basic(t *testing.T) { appsec.CreateSecurityPolicyRequest{ConfigID: 43253, Version: 7, PolicyName: "Cloned Test for Launchpad 15", PolicyPrefix: "LN", DefaultSettings: true}, ).Return(&crp, nil) - client.On("UpdateSecurityPolicy", - mock.Anything, // ctx is irrelevant for this test - appsec.UpdateSecurityPolicyRequest{ConfigID: 43253, Version: 7, PolicyID: "PLE_114049", PolicyName: "Cloned Test for Launchpad 21", PolicyPrefix: "LN"}, - ).Return(&cu, nil) - client.On("RemoveSecurityPolicy", mock.Anything, // ctx is irrelevant for this test appsec.RemoveSecurityPolicyRequest{ConfigID: 43253, Version: 7, PolicyID: "PLE_114049"}, @@ -61,13 +52,6 @@ func TestAccAkamaiSecurityPolicy_res_basic(t *testing.T) { ), ExpectNonEmptyPlan: true, }, - { - Config: loadFixtureString("testdata/TestResSecurityPolicy/update_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_security_policy.test", "id", "43253:7:PLE_114049"), - ), - ExpectNonEmptyPlan: true, - }, }, }) }) From 81782f0ca87991a9c63c43e506d0ba7b98c0c284 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 4 Feb 2021 21:36:25 -0600 Subject: [PATCH 128/215] Fix reputation profile for import --- .../appsec/resource_akamai_appsec_reputation_profile.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go index 576004438..35b432775 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go @@ -273,6 +273,15 @@ func resourceReputationProfileRead(ctx context.Context, d *schema.ResourceData, return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + jsonBody, err := json.Marshal(reputationprofile) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("reputation_profile", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%d", getReputationProfile.ConfigID, getReputationProfile.ConfigVersion, reputationprofile.ID)) return nil From c3672c4df830bcb411ef0b1b15368f41248ec239 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 00:17:33 -0600 Subject: [PATCH 129/215] Add support for PenaltyBox and API constraint imports --- ...e_akamai_appsec_api_request_constraints.go | 226 +++++++++++++----- ...mai_appsec_api_request_constraints_test.go | 2 +- .../resource_akamai_appsec_penalty_box.go | 8 + pkg/providers/appsec/templates.go | 10 +- 4 files changed, 181 insertions(+), 65 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go index e6a820036..a4e0d14be 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go @@ -3,7 +3,9 @@ package appsec import ( "context" "errors" + "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -67,31 +69,58 @@ func resourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceDa logger := meta.Log("APPSEC", "resourceApiRequestConstraintsRead") getApiRequestConstraints := appsec.GetApiRequestConstraintsRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getApiRequestConstraints.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getApiRequestConstraints.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getApiRequestConstraints.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getApiRequestConstraints.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getApiRequestConstraints.PolicyID = policyid + policyid := s[2] - ApiID, err := tools.GetIntValue("api_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getApiRequestConstraints.ApiID = ApiID + getApiRequestConstraints.PolicyID = policyid + + if len(s) >= 4 { + apiID, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + getApiRequestConstraints.ApiID = apiID + } + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiRequestConstraints.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiRequestConstraints.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiRequestConstraints.PolicyID = policyid + + ApiID, err := tools.GetIntValue("api_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getApiRequestConstraints.ApiID = ApiID + } apirequestconstraints, err := client.GetApiRequestConstraints(ctx, getApiRequestConstraints) if err != nil { logger.Errorf("calling 'getApiRequestConstraints': %s", err.Error()) @@ -106,7 +135,19 @@ func resourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceDa d.Set("output_text", outputtext) } - d.SetId(strconv.Itoa(getApiRequestConstraints.ConfigID)) + if err := d.Set("config_id", getApiRequestConstraints.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getApiRequestConstraints.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getApiRequestConstraints.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s", getApiRequestConstraints.ConfigID, getApiRequestConstraints.Version, getApiRequestConstraints.PolicyID)) return nil } @@ -120,34 +161,68 @@ func resourceApiRequestConstraintsDelete(ctx context.Context, d *schema.Resource getPolicyProtections := appsec.GetPolicyProtectionsRequest{} removeApiRequestConstraints := appsec.RemoveApiRequestConstraintsRequest{} removePolicyProtections := appsec.RemovePolicyProtectionsRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getPolicyProtections.ConfigID = configid + removeApiRequestConstraints.ConfigID = configid + removePolicyProtections.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getPolicyProtections.Version = version + removeApiRequestConstraints.Version = version + removePolicyProtections.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } + policyid := s[2] + + getPolicyProtections.PolicyID = policyid + removeApiRequestConstraints.PolicyID = policyid + removePolicyProtections.PolicyID = policyid - getPolicyProtections.ConfigID = configid - removeApiRequestConstraints.ConfigID = configid - removePolicyProtections.ConfigID = configid + if len(s) >= 4 { + apiID, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } - getPolicyProtections.Version = version - removeApiRequestConstraints.Version = version - removePolicyProtections.Version = version + removeApiRequestConstraints.ApiID = apiID - getPolicyProtections.PolicyID = policyid - removeApiRequestConstraints.PolicyID = policyid - removePolicyProtections.PolicyID = policyid + } + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getPolicyProtections.ConfigID = configid + removeApiRequestConstraints.ConfigID = configid + removePolicyProtections.ConfigID = configid + + getPolicyProtections.Version = version + removeApiRequestConstraints.Version = version + removePolicyProtections.Version = version + + getPolicyProtections.PolicyID = policyid + removeApiRequestConstraints.PolicyID = policyid + removePolicyProtections.PolicyID = policyid + } policyprotections, err := client.GetPolicyProtections(ctx, getPolicyProtections) if err != nil { logger.Errorf("calling 'getPolicyProtections': %s", err.Error()) @@ -195,31 +270,58 @@ func resourceApiRequestConstraintsUpdate(ctx context.Context, d *schema.Resource logger := meta.Log("APPSEC", "resourceApiRequestConstraintsUpdate") updateApiRequestConstraints := appsec.UpdateApiRequestConstraintsRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateApiRequestConstraints.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateApiRequestConstraints.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateApiRequestConstraints.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateApiRequestConstraints.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateApiRequestConstraints.PolicyID = policyid + policyid := s[2] - apiEndpointID, err := tools.GetIntValue("api_endpoint_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateApiRequestConstraints.ApiID = apiEndpointID + updateApiRequestConstraints.PolicyID = policyid + + if len(s) >= 4 { + apiID, errconv := strconv.Atoi(s[3]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateApiRequestConstraints.ApiID = apiID + } + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateApiRequestConstraints.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateApiRequestConstraints.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateApiRequestConstraints.PolicyID = policyid + + apiEndpointID, err := tools.GetIntValue("api_endpoint_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateApiRequestConstraints.ApiID = apiEndpointID + } action, err := tools.GetStringValue("action", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go index 173321930..f62df59ab 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go @@ -57,7 +57,7 @@ func TestAccAkamaiApiRequestConstraints_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResApiRequestConstraints/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_api_request_constraints.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_api_request_constraints.test", "id", "43253:7:AAAA_81230"), ), }, }, diff --git a/pkg/providers/appsec/resource_akamai_appsec_penalty_box.go b/pkg/providers/appsec/resource_akamai_appsec_penalty_box.go index 92523ce78..c8ba6b83a 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_penalty_box.go +++ b/pkg/providers/appsec/resource_akamai_appsec_penalty_box.go @@ -133,6 +133,14 @@ func resourcePenaltyBoxRead(ctx context.Context, d *schema.ResourceData, m inter return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("penalty_box_protection", penaltybox.PenaltyBoxProtection); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("penalty_box_action", penaltybox.Action); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%s", getPenaltyBox.ConfigID, getPenaltyBox.Version, getPenaltyBox.PolicyID)) return nil diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index eaefa30d1..d6d9103f2 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -181,16 +181,22 @@ func InitTemplates(otm map[string]*OutputTemplate) { // TF templates otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF\n {{marshal .AdvancedOptions.Logging}} EOF \n }"} otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} + + otm["ApiRequestConstraints.tf"] = &OutputTemplate{TemplateName: "ApiRequestConstraints.tf", TableTitle: "ApiRequestConstraints", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_over{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n action = \"{{.APIRequestConstraints.Action}}\" \n }\n {{range $index, $element := .APIRequestConstraints.APIEndpoints}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n api_endpoint_id = \"{{.ID}}\" \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"appsec_attack_group_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_condition_exception\" \"appsec_attack_group_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}"} otm["EvalActions.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"appsec_eval_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"appsec_eval_rule_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}}{{if $index}},{{end}}\nresource \"akamai_appsec_custom_rule\" \"appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"appsec_custom_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} - otm["MatchTarget.tf"] = &OutputTemplate{TemplateName: "MatchTarget.tf", TableTitle: "MatchTarget", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .MatchTargets.WebsiteTargets}}\nresource \"akamai_appsec_match_target\" \"appsec_match_target{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} + + otm["MatchTarget.tf"] = &OutputTemplate{TemplateName: "MatchTarget.tf", TableTitle: "MatchTarget", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .MatchTargets.WebsiteTargets}}\nresource \"akamai_appsec_match_target\" \"appsec_match_target{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}\n {{range $index, $element := .MatchTargets.APITargets}}\nresource \"akamai_appsec_match_target\" \"appsec_match_target{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} + + otm["PenaltyBox.tf"] = &OutputTemplate{TemplateName: "PenaltyBox.tf", TableTitle: "PenaltyBox", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}} \nresource \"akamai_appsec_penalty_box\" \"appsec_penalty_box{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n penalty_box_protection = \"{{.PenaltyBox.PenaltyBoxProtection}}\" \n penalty_box_action = \"{{.PenaltyBox.Action}}\" \n}\n{{end}}"} + otm["RatePolicy.tf"] = &OutputTemplate{TemplateName: "RatePolicy.tf", TableTitle: "RatePolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .RatePolicies}}\nresource \"akamai_appsec_rate_policy\" \"appsec_rate_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n rate_policy = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["RatePolicyAction.tf"] = &OutputTemplate{TemplateName: "RatePolicyAction.tf", TableTitle: "RatePolicyAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{ range $index, $element := .RatePolicyActions }}\nresource \"akamai_appsec_rate_policy_action\" \"appsec_rate_policy_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rate_policy_id = {{.ID}} \n ipv4_action = \"{{.Ipv4Action}}\" \n ipv6_action = \"{{.Ipv6Action}}\" \n }\n {{end}} {{end}}"} otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} From a94d228adfabceb7e350219a00972021e96611f3 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 08:45:45 -0600 Subject: [PATCH 130/215] Add support for advance_settings override import feature --- ...resource_akamai_appsec_advanced_settings_logging.go | 9 +++++++++ ...rce_akamai_appsec_advanced_settings_logging_test.go | 1 + pkg/providers/appsec/templates.go | 10 ++-------- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go index a7fa9635b..924d14af4 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go @@ -121,6 +121,15 @@ func resourceAdvancedSettingsLoggingRead(ctx context.Context, d *schema.Resource return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + jsonBody, err := json.Marshal(advancedsettingslogging) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("logging", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%s", getAdvancedSettingsLogging.ConfigID, getAdvancedSettingsLogging.Version, getAdvancedSettingsLogging.PolicyID)) return nil diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go index ce5166894..39df02785 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging_test.go @@ -50,6 +50,7 @@ func TestAccAkamaiAdvancedSettingsLogging_res_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("akamai_appsec_advanced_settings_logging.test", "id", "43253:7:"), ), + ExpectNonEmptyPlan: true, }, }, }) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index d6d9103f2..b8b0ce21b 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -179,24 +179,19 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["RuleConditionException"] = &OutputTemplate{TemplateName: "RuleConditionException", TableTitle: "Conditions|Exceptions", TemplateType: "TABULAR", TemplateString: "{{range $index, $element :=.Conditions}}True{{else}}False{{end}}|{{with .Exception}}True{{else}}False{{end}}"} // TF templates - otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF\n {{marshal .AdvancedOptions.Logging}} EOF \n }"} - otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} + otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF\n {{marshal .AdvancedOptions.Logging}} EOF \n } {{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_advanced_settings_logging\" \"akamai_appsec_advanced_settings_logging_override{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n logging = <<-EOF\n {{marshal .LoggingOverrides}} \n \n EOF \n \n }\n {{end}}"} + otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} otm["ApiRequestConstraints.tf"] = &OutputTemplate{TemplateName: "ApiRequestConstraints.tf", TableTitle: "ApiRequestConstraints", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_over{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n action = \"{{.APIRequestConstraints.Action}}\" \n }\n {{range $index, $element := .APIRequestConstraints.APIEndpoints}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n api_endpoint_id = \"{{.ID}}\" \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"appsec_attack_group_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_condition_exception\" \"appsec_attack_group_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}"} otm["EvalActions.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"appsec_eval_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"appsec_eval_rule_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} - otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}}{{if $index}},{{end}}\nresource \"akamai_appsec_custom_rule\" \"appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"appsec_custom_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} - otm["MatchTarget.tf"] = &OutputTemplate{TemplateName: "MatchTarget.tf", TableTitle: "MatchTarget", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .MatchTargets.WebsiteTargets}}\nresource \"akamai_appsec_match_target\" \"appsec_match_target{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}\n {{range $index, $element := .MatchTargets.APITargets}}\nresource \"akamai_appsec_match_target\" \"appsec_match_target{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} - otm["PenaltyBox.tf"] = &OutputTemplate{TemplateName: "PenaltyBox.tf", TableTitle: "PenaltyBox", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}} \nresource \"akamai_appsec_penalty_box\" \"appsec_penalty_box{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n penalty_box_protection = \"{{.PenaltyBox.PenaltyBoxProtection}}\" \n penalty_box_action = \"{{.PenaltyBox.Action}}\" \n}\n{{end}}"} - otm["RatePolicy.tf"] = &OutputTemplate{TemplateName: "RatePolicy.tf", TableTitle: "RatePolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .RatePolicies}}\nresource \"akamai_appsec_rate_policy\" \"appsec_rate_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n rate_policy = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["RatePolicyAction.tf"] = &OutputTemplate{TemplateName: "RatePolicyAction.tf", TableTitle: "RatePolicyAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{ range $index, $element := .RatePolicyActions }}\nresource \"akamai_appsec_rate_policy_action\" \"appsec_rate_policy_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rate_policy_id = {{.ID}} \n ipv4_action = \"{{.Ipv4Action}}\" \n ipv6_action = \"{{.Ipv6Action}}\" \n }\n {{end}} {{end}}"} otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} @@ -205,7 +200,6 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_rule_condition_exception\" \"appsec_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}}} \nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n mode = \"REPLACE\" \n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} - otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.Siem.EnableSiem}} \n enable_for_all_policies = {{.Siem.EnableForAllPolicies}}\n enable_botman_siem = {{.Siem.EnabledBotmanSiemEvents}}\n siem_id = {{.Siem.SiemDefinitionID}}\n security_policy_ids = [{{ range $index, $element := .Siem.FirewallPolicyIds}}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n"} otm["SlowPost.tf"] = &OutputTemplate{TemplateName: "SlowPost.tf", TableTitle: "SlowPost", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_slow_post\" \"appsec_slow_post\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n slow_rate_action = \"{{.SlowPost.Action}}\" \n slow_rate_threshold_rate = {{.SlowPost.SlowRateThreshold.Rate}}\n slow_rate_threshold_period = {{.SlowPost.SlowRateThreshold.Period}}\n duration_threshold_timeout = {{.SlowPost.DurationThreshold.Timeout}}\n \n } \n{{end}}"} otm["IPGeoFirewall.tf"] = &OutputTemplate{TemplateName: "IPGeoFirewall.tf", TableTitle: "IPGeoFirewall", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_ip_geo\" \"appsec_ip_geo\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n mode = {{if eq .IPGeoFirewall.Block \"blockSpecificIPGeo\"}}\"block\"{{else}}\"allow\"{{end}} \n geo_network_lists = [{{ range $index, $element := .IPGeoFirewall.GeoControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n exception_ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.AllowedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n{{end}}"} From eb4132a8c39c7b03e45ea6be88309d113d546778 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 09:09:31 -0600 Subject: [PATCH 131/215] Add fix to catch optional policy_id --- ..._akamai_appsec_advanced_settings_logging.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go index 924d14af4..551e75247 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_logging.go @@ -72,9 +72,11 @@ func resourceAdvancedSettingsLoggingRead(ctx context.Context, d *schema.Resource } getAdvancedSettingsLogging.Version = version - policyid := s[2] + if len(s) >= 3 { + policyid := s[2] - getAdvancedSettingsLogging.PolicyID = policyid + getAdvancedSettingsLogging.PolicyID = policyid + } } else { configid, err := tools.GetIntValue("config_id", d) @@ -158,9 +160,11 @@ func resourceAdvancedSettingsLoggingDelete(ctx context.Context, d *schema.Resour } removeAdvancedSettingsLogging.Version = version - policyid := s[2] + if len(s) >= 3 { + policyid := s[2] - removeAdvancedSettingsLogging.PolicyID = policyid + removeAdvancedSettingsLogging.PolicyID = policyid + } } else { configid, err := tools.GetIntValue("config_id", d) @@ -224,9 +228,11 @@ func resourceAdvancedSettingsLoggingUpdate(ctx context.Context, d *schema.Resour } updateAdvancedSettingsLogging.Version = version - policyid := s[2] + if len(s) >= 3 { + policyid := s[2] - updateAdvancedSettingsLogging.PolicyID = policyid + updateAdvancedSettingsLogging.PolicyID = policyid + } } else { configid, err := tools.GetIntValue("config_id", d) From e8d3117752098dd244304bb45ef38bcd8830b7fd Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 10:22:47 -0600 Subject: [PATCH 132/215] Add import for akamai_appsec_eval_rule_condition_exception --- ...rce_akamai_appsec_eval_rule_condition_exception.go | 11 +++++++---- ...kamai_appsec_eval_rule_condition_exception_test.go | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go index bbdf0b95e..08cdde879 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go @@ -130,10 +130,13 @@ func resourceEvalRuleConditionExceptionRead(ctx context.Context, d *schema.Resou } } - if err == nil { - if err := d.Set("output_text", outputtext); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } + jsonBody, err := json.Marshal(evalruleconditionexception) + if err != nil { + return diag.FromErr(err) + } + logger.Warnf("calling 'getEvalRuleConditionException JSON ': %s", string(jsonBody)) + if err := d.Set("condition_exception", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } if err := d.Set("rule_id", getEvalRuleConditionException.RuleID); err != nil { diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception_test.go index 51ec343d3..2b2bb4411 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception_test.go @@ -50,6 +50,7 @@ func TestAccAkamaiEvalRuleConditionException_res_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("akamai_appsec_eval_rule_condition_exception.test", "id", "43253"), ), + ExpectNonEmptyPlan: true, }, }, }) From a8a6b0ef9986e8be7ddfafa134a25ed94a76f8b5 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 10:34:56 -0600 Subject: [PATCH 133/215] Fix rule_condition_exception for import feature --- .../appsec/resource_akamai_appsec_rule_condition_exception.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go index 8aa77c6d6..b966ce19d 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go @@ -152,6 +152,10 @@ func resourceRuleConditionExceptionRead(ctx context.Context, d *schema.ResourceD return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("rule_id", getRuleConditionException.RuleID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%s:%d", getRuleConditionException.ConfigID, getRuleConditionException.Version, getRuleConditionException.PolicyID, getRuleConditionException.RuleID)) return nil From d9b40f4e3385fe21bef73467ac2b3f6cbe684740 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 11:33:36 -0600 Subject: [PATCH 134/215] Add filter for LoggingOverrides --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index b8b0ce21b..e3439e397 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -179,7 +179,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["RuleConditionException"] = &OutputTemplate{TemplateName: "RuleConditionException", TableTitle: "Conditions|Exceptions", TemplateType: "TABULAR", TemplateString: "{{range $index, $element :=.Conditions}}True{{else}}False{{end}}|{{with .Exception}}True{{else}}False{{end}}"} // TF templates - otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF\n {{marshal .AdvancedOptions.Logging}} EOF \n } {{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_advanced_settings_logging\" \"akamai_appsec_advanced_settings_logging_override{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n logging = <<-EOF\n {{marshal .LoggingOverrides}} \n \n EOF \n \n }\n {{end}}"} + otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF\n {{marshal .AdvancedOptions.Logging}} \n EOF \n } {{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if not .LoggingOverrides}}\nresource \"akamai_appsec_advanced_settings_logging\" \"akamai_appsec_advanced_settings_logging_override{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n logging = <<-EOF\n {{marshal .LoggingOverrides}} \n \n EOF \n \n }\n{{end}} {{end}}"} otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} otm["ApiRequestConstraints.tf"] = &OutputTemplate{TemplateName: "ApiRequestConstraints.tf", TableTitle: "ApiRequestConstraints", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_over{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n action = \"{{.APIRequestConstraints.Action}}\" \n }\n {{range $index, $element := .APIRequestConstraints.APIEndpoints}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n api_endpoint_id = \"{{.ID}}\" \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} From 507be35435e539e0091e1722644a8cdd03574ad0 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 11:37:46 -0600 Subject: [PATCH 135/215] revert if on advanced logging --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index e3439e397..958ba23a4 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -179,7 +179,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["RuleConditionException"] = &OutputTemplate{TemplateName: "RuleConditionException", TableTitle: "Conditions|Exceptions", TemplateType: "TABULAR", TemplateString: "{{range $index, $element :=.Conditions}}True{{else}}False{{end}}|{{with .Exception}}True{{else}}False{{end}}"} // TF templates - otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF\n {{marshal .AdvancedOptions.Logging}} \n EOF \n } {{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if not .LoggingOverrides}}\nresource \"akamai_appsec_advanced_settings_logging\" \"akamai_appsec_advanced_settings_logging_override{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n logging = <<-EOF\n {{marshal .LoggingOverrides}} \n \n EOF \n \n }\n{{end}} {{end}}"} + otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF\n {{marshal .AdvancedOptions.Logging}} \n EOF \n } {{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if .LoggingOverrides}}\nresource \"akamai_appsec_advanced_settings_logging\" \"akamai_appsec_advanced_settings_logging_override{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n logging = <<-EOF\n {{marshal .LoggingOverrides}} \n \n EOF \n \n }\n{{end}} {{end}}"} otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} otm["ApiRequestConstraints.tf"] = &OutputTemplate{TemplateName: "ApiRequestConstraints.tf", TableTitle: "ApiRequestConstraints", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_over{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n action = \"{{.APIRequestConstraints.Action}}\" \n }\n {{range $index, $element := .APIRequestConstraints.APIEndpoints}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n api_endpoint_id = \"{{.ID}}\" \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} From 6672970653ed53219898bf2411546115655f9540 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 11:57:44 -0600 Subject: [PATCH 136/215] Remove output_text from resourceAdvancedSettingsPrefetch --- ...ce_akamai_appsec_advanced_settings_prefetch.go | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go index ff82bd781..f59813f13 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go @@ -54,11 +54,6 @@ func resourceAdvancedSettingsPrefetch() *schema.Resource { Elem: &schema.Schema{Type: schema.TypeString}, Description: "List of extensions", }, - "output_text": { - Type: schema.TypeString, - Computed: true, - Description: "Text Export representation", - }, }, } } @@ -97,20 +92,12 @@ func resourceAdvancedSettingsPrefetchRead(ctx context.Context, d *schema.Resourc } getAdvancedSettingsPrefetch.Version = version } - advancedsettingsprefetch, err := client.GetAdvancedSettingsPrefetch(ctx, getAdvancedSettingsPrefetch) + _, err := client.GetAdvancedSettingsPrefetch(ctx, getAdvancedSettingsPrefetch) if err != nil { logger.Errorf("calling 'getAdvancedSettingsPrefetch': %s", err.Error()) return diag.FromErr(err) } - ots := OutputTemplates{} - InitTemplates(ots) - - outputtext, err := RenderTemplates(ots, "advancedSettingsPrefetchDS", advancedsettingsprefetch) - if err == nil { - d.Set("output_text", outputtext) - } - if err := d.Set("config_id", getAdvancedSettingsPrefetch.ConfigID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } From d87efddc05c14e9a8a0e09dd5f1ed25cd672474e Mon Sep 17 00:00:00 2001 From: Philip Lodine Date: Fri, 5 Feb 2021 13:05:19 -0500 Subject: [PATCH 137/215] Remove output_text from advanced_settings_prefetch --- .../appsec_advanced_settings_prefetch.md | 11 +---- .../appsec/data_akamai_appsec_custom_deny.go | 2 - ...ata_akamai_appsec_rate_protections_test.go | 43 ------------------- ...amai_appsec_reputation_protections_test.go | 43 ------------------- ...akamai_appsec_slowpost_protections_test.go | 43 ------------------- ...data_akamai_appsec_waf_protections_test.go | 43 ------------------- ...appsec_attack_group_condition_exception.go | 5 +-- ...source_akamai_appsec_custom_rule_action.go | 3 +- ...ai_appsec_eval_rule_condition_exception.go | 1 - ...ource_akamai_appsec_reputation_analysis.go | 2 - 10 files changed, 4 insertions(+), 192 deletions(-) delete mode 100644 pkg/providers/appsec/data_akamai_appsec_rate_protections_test.go delete mode 100644 pkg/providers/appsec/data_akamai_appsec_reputation_protections_test.go delete mode 100644 pkg/providers/appsec/data_akamai_appsec_slowpost_protections_test.go delete mode 100644 pkg/providers/appsec/data_akamai_appsec_waf_protections_test.go diff --git a/docs/resources/appsec_advanced_settings_prefetch.md b/docs/resources/appsec_advanced_settings_prefetch.md index 5ae4858e2..d62377dd1 100644 --- a/docs/resources/appsec_advanced_settings_prefetch.md +++ b/docs/resources/appsec_advanced_settings_prefetch.md @@ -32,10 +32,6 @@ resource "akamai_appsec_advanced_settings_prefetch" "prefetch" { enable_rate_controls = false extensions = var.extensions } - -output "prefetch_settings" { - value = akamai_appsec_advanced_settings_prefetch.prefetch.output_text -} ``` ## Argument Reference @@ -58,8 +54,5 @@ The following arguments are supported: In addition to the arguments above, the following attributes are exported: -* `output_text` - A tabular display showing the following updated prefetch settings. - * `ENABLE APP LAYER` - * `ALL EXTENSION` - * `ENABLE RATE CONTROLS` - * `EXTENSIONS` +* None + diff --git a/pkg/providers/appsec/data_akamai_appsec_custom_deny.go b/pkg/providers/appsec/data_akamai_appsec_custom_deny.go index 83743ab01..f152c6242 100644 --- a/pkg/providers/appsec/data_akamai_appsec_custom_deny.go +++ b/pkg/providers/appsec/data_akamai_appsec_custom_deny.go @@ -74,8 +74,6 @@ func dataSourceCustomDenyRead(ctx context.Context, d *schema.ResourceData, m int return diag.FromErr(err) } - logger.Errorf("calling 'getCustomDeny': %v", customdeny) - ots := OutputTemplates{} InitTemplates(ots) diff --git a/pkg/providers/appsec/data_akamai_appsec_rate_protections_test.go b/pkg/providers/appsec/data_akamai_appsec_rate_protections_test.go deleted file mode 100644 index 44cb9acba..000000000 --- a/pkg/providers/appsec/data_akamai_appsec_rate_protections_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package appsec - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiRateProtections_data_basic(t *testing.T) { - t.Run("match by RateProtections ID", func(t *testing.T) { - client := &mockappsec{} - - cv := appsec.GetRateProtectionsResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestDSRateProtections/RateProtections.json")) - json.Unmarshal([]byte(expectJS), &cv) - - client.On("GetRateProtections", - mock.Anything, // ctx is irrelevant for this test - appsec.GetRateProtectionsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, - ).Return(&cv, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestDSRateProtections/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_rate_protections.test", "id", "43253"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/appsec/data_akamai_appsec_reputation_protections_test.go b/pkg/providers/appsec/data_akamai_appsec_reputation_protections_test.go deleted file mode 100644 index 99b99dfa3..000000000 --- a/pkg/providers/appsec/data_akamai_appsec_reputation_protections_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package appsec - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiReputationProtections_data_basic(t *testing.T) { - t.Run("match by ReputationProtections ID", func(t *testing.T) { - client := &mockappsec{} - - cv := appsec.GetReputationProtectionsResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestDSReputationProtections/ReputationProtections.json")) - json.Unmarshal([]byte(expectJS), &cv) - - client.On("GetReputationProtections", - mock.Anything, // ctx is irrelevant for this test - appsec.GetReputationProtectionsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, - ).Return(&cv, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: false, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestDSReputationProtections/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_reputation_protections.test", "id", "43253"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/appsec/data_akamai_appsec_slowpost_protections_test.go b/pkg/providers/appsec/data_akamai_appsec_slowpost_protections_test.go deleted file mode 100644 index cdad43826..000000000 --- a/pkg/providers/appsec/data_akamai_appsec_slowpost_protections_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package appsec - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiSlowPostProtections_data_basic(t *testing.T) { - t.Run("match by SlowPostProtections ID", func(t *testing.T) { - client := &mockappsec{} - - cv := appsec.GetSlowPostProtectionsResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestDSSlowPostProtections/SlowPostProtections.json")) - json.Unmarshal([]byte(expectJS), &cv) - - client.On("GetSlowPostProtections", - mock.Anything, // ctx is irrelevant for this test - appsec.GetSlowPostProtectionsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, - ).Return(&cv, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestDSSlowPostProtections/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_slowpost_protections.test", "id", "43253"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/appsec/data_akamai_appsec_waf_protections_test.go b/pkg/providers/appsec/data_akamai_appsec_waf_protections_test.go deleted file mode 100644 index 305b84ec1..000000000 --- a/pkg/providers/appsec/data_akamai_appsec_waf_protections_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package appsec - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiWAFProtections_data_basic(t *testing.T) { - t.Run("match by WAFProtections ID", func(t *testing.T) { - client := &mockappsec{} - - cv := appsec.GetWAFProtectionsResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestDSWAFProtections/WAFProtections.json")) - json.Unmarshal([]byte(expectJS), &cv) - - client.On("GetWAFProtections", - mock.Anything, // ctx is irrelevant for this test - appsec.GetWAFProtectionsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ApplyApplicationLayerControls: false}, - ).Return(&cv, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestDSWAFProtections/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_waf_protection.test", "id", "43253"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go index 3da3fc1b6..05e1e8346 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go @@ -143,8 +143,6 @@ func resourceAttackGroupConditionExceptionDelete(ctx context.Context, d *schema. } removeAttackGroupConditionException.Group = attackgroup - logger.Errorf("calling 'RemoveAttackGroupConditionException': %v", removeAttackGroupConditionException) - _, errd := client.RemoveAttackGroupConditionException(ctx, removeAttackGroupConditionException) if errd != nil { logger.Errorf("calling 'RemoveAttackGroupConditionException': %s", errd.Error()) @@ -192,11 +190,10 @@ func resourceAttackGroupConditionExceptionUpdate(ctx context.Context, d *schema. } updateAttackGroupConditionException.Group = attackgroup - resp, erru := client.UpdateAttackGroupConditionException(ctx, updateAttackGroupConditionException) + _, erru := client.UpdateAttackGroupConditionException(ctx, updateAttackGroupConditionException) if erru != nil { logger.Errorf("calling 'updateAttackGroupConditionException': %s", erru.Error()) return diag.FromErr(erru) } - logger.Warnf("calling 'updateAttackGroupConditionException': %s", resp) return resourceAttackGroupConditionExceptionRead(ctx, d, m) } diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go index c4e4cc9fa..4a408e4e4 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go @@ -107,12 +107,11 @@ func resourceCustomRuleActionRead(ctx context.Context, d *schema.ResourceData, m } getCustomRuleAction.RuleID = ruleid } - customruleaction, err := client.GetCustomRuleAction(ctx, getCustomRuleAction) + _, err := client.GetCustomRuleAction(ctx, getCustomRuleAction) if err != nil { logger.Errorf("calling 'getCustomRuleAction': %s", err.Error()) return diag.FromErr(err) } - logger.Warnf("calling 'getCustomRuleAction': %s", customruleaction) if err := d.Set("custom_rule_id", getCustomRuleAction.RuleID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go index bbdf0b95e..a63943b02 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go @@ -214,7 +214,6 @@ func resourceEvalRuleConditionExceptionDelete(ctx context.Context, d *schema.Res } removeEvalRuleConditionException.RuleID = ruleid } - logger.Errorf("calling 'RemoveEvalRuleConditionException': %v", removeEvalRuleConditionException) _, errd := client.RemoveEvalRuleConditionException(ctx, removeEvalRuleConditionException) if errd != nil { diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go index 3bada4796..497e99ead 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go @@ -165,8 +165,6 @@ func resourceReputationAnalysisDelete(ctx context.Context, d *schema.ResourceDat RemoveReputationAnalysis.ForwardSharedIPToHTTPHeaderAndSIEM = false - logger.Errorf("calling 'removeReputationAnalysis': STRUCT %v", RemoveReputationAnalysis) - _, erru := client.RemoveReputationAnalysis(ctx, RemoveReputationAnalysis) if erru != nil { logger.Errorf("calling 'RemoveReputationAnalysis': %s", erru.Error()) From f8fc7b2c9be875d430d6cd3e6f8317459b364677 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 12:07:33 -0600 Subject: [PATCH 138/215] Add prefetch values for import function --- ...rce_akamai_appsec_advanced_settings_prefetch.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go index f59813f13..c3ff46caa 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go @@ -92,7 +92,7 @@ func resourceAdvancedSettingsPrefetchRead(ctx context.Context, d *schema.Resourc } getAdvancedSettingsPrefetch.Version = version } - _, err := client.GetAdvancedSettingsPrefetch(ctx, getAdvancedSettingsPrefetch) + prefetchget, err := client.GetAdvancedSettingsPrefetch(ctx, getAdvancedSettingsPrefetch) if err != nil { logger.Errorf("calling 'getAdvancedSettingsPrefetch': %s", err.Error()) return diag.FromErr(err) @@ -102,7 +102,17 @@ func resourceAdvancedSettingsPrefetchRead(ctx context.Context, d *schema.Resourc return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - if err := d.Set("version", getAdvancedSettingsPrefetch.Version); err != nil { + if err := d.Set("enable_app_layer", prefetchget.EnableAppLayer); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("all_extensions", prefetchget.AllExtensions); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + if err := d.Set("enable_rate_controls", prefetchget.EnableRateControls); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + if err := d.Set("extensions", prefetchget.Extensions); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } From 70834cdbce82181c48afad6c345e583b84455d0f Mon Sep 17 00:00:00 2001 From: Philip Lodine Date: Fri, 5 Feb 2021 13:12:03 -0500 Subject: [PATCH 139/215] Revert "Remove output_text from advanced_settings_prefetch" This reverts commit d87efddc05c14e9a8a0e09dd5f1ed25cd672474e. --- .../appsec_advanced_settings_prefetch.md | 11 ++++- .../appsec/data_akamai_appsec_custom_deny.go | 2 + ...ata_akamai_appsec_rate_protections_test.go | 43 +++++++++++++++++++ ...amai_appsec_reputation_protections_test.go | 43 +++++++++++++++++++ ...akamai_appsec_slowpost_protections_test.go | 43 +++++++++++++++++++ ...data_akamai_appsec_waf_protections_test.go | 43 +++++++++++++++++++ ...appsec_attack_group_condition_exception.go | 5 ++- ...source_akamai_appsec_custom_rule_action.go | 3 +- ...ai_appsec_eval_rule_condition_exception.go | 1 + ...ource_akamai_appsec_reputation_analysis.go | 2 + 10 files changed, 192 insertions(+), 4 deletions(-) create mode 100644 pkg/providers/appsec/data_akamai_appsec_rate_protections_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_reputation_protections_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_slowpost_protections_test.go create mode 100644 pkg/providers/appsec/data_akamai_appsec_waf_protections_test.go diff --git a/docs/resources/appsec_advanced_settings_prefetch.md b/docs/resources/appsec_advanced_settings_prefetch.md index d62377dd1..5ae4858e2 100644 --- a/docs/resources/appsec_advanced_settings_prefetch.md +++ b/docs/resources/appsec_advanced_settings_prefetch.md @@ -32,6 +32,10 @@ resource "akamai_appsec_advanced_settings_prefetch" "prefetch" { enable_rate_controls = false extensions = var.extensions } + +output "prefetch_settings" { + value = akamai_appsec_advanced_settings_prefetch.prefetch.output_text +} ``` ## Argument Reference @@ -54,5 +58,8 @@ The following arguments are supported: In addition to the arguments above, the following attributes are exported: -* None - +* `output_text` - A tabular display showing the following updated prefetch settings. + * `ENABLE APP LAYER` + * `ALL EXTENSION` + * `ENABLE RATE CONTROLS` + * `EXTENSIONS` diff --git a/pkg/providers/appsec/data_akamai_appsec_custom_deny.go b/pkg/providers/appsec/data_akamai_appsec_custom_deny.go index f152c6242..83743ab01 100644 --- a/pkg/providers/appsec/data_akamai_appsec_custom_deny.go +++ b/pkg/providers/appsec/data_akamai_appsec_custom_deny.go @@ -74,6 +74,8 @@ func dataSourceCustomDenyRead(ctx context.Context, d *schema.ResourceData, m int return diag.FromErr(err) } + logger.Errorf("calling 'getCustomDeny': %v", customdeny) + ots := OutputTemplates{} InitTemplates(ots) diff --git a/pkg/providers/appsec/data_akamai_appsec_rate_protections_test.go b/pkg/providers/appsec/data_akamai_appsec_rate_protections_test.go new file mode 100644 index 000000000..44cb9acba --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_rate_protections_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiRateProtections_data_basic(t *testing.T) { + t.Run("match by RateProtections ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetRateProtectionsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSRateProtections/RateProtections.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetRateProtections", + mock.Anything, // ctx is irrelevant for this test + appsec.GetRateProtectionsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSRateProtections/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_rate_protections.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_reputation_protections_test.go b/pkg/providers/appsec/data_akamai_appsec_reputation_protections_test.go new file mode 100644 index 000000000..99b99dfa3 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_reputation_protections_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiReputationProtections_data_basic(t *testing.T) { + t.Run("match by ReputationProtections ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetReputationProtectionsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSReputationProtections/ReputationProtections.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetReputationProtections", + mock.Anything, // ctx is irrelevant for this test + appsec.GetReputationProtectionsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: false, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSReputationProtections/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_reputation_protections.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_slowpost_protections_test.go b/pkg/providers/appsec/data_akamai_appsec_slowpost_protections_test.go new file mode 100644 index 000000000..cdad43826 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_slowpost_protections_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiSlowPostProtections_data_basic(t *testing.T) { + t.Run("match by SlowPostProtections ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetSlowPostProtectionsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSSlowPostProtections/SlowPostProtections.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetSlowPostProtections", + mock.Anything, // ctx is irrelevant for this test + appsec.GetSlowPostProtectionsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSSlowPostProtections/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_slowpost_protections.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/data_akamai_appsec_waf_protections_test.go b/pkg/providers/appsec/data_akamai_appsec_waf_protections_test.go new file mode 100644 index 000000000..305b84ec1 --- /dev/null +++ b/pkg/providers/appsec/data_akamai_appsec_waf_protections_test.go @@ -0,0 +1,43 @@ +package appsec + +import ( + "encoding/json" + "testing" + + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/stretchr/testify/mock" +) + +func TestAccAkamaiWAFProtections_data_basic(t *testing.T) { + t.Run("match by WAFProtections ID", func(t *testing.T) { + client := &mockappsec{} + + cv := appsec.GetWAFProtectionsResponse{} + expectJS := compactJSON(loadFixtureBytes("testdata/TestDSWAFProtections/WAFProtections.json")) + json.Unmarshal([]byte(expectJS), &cv) + + client.On("GetWAFProtections", + mock.Anything, // ctx is irrelevant for this test + appsec.GetWAFProtectionsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ApplyApplicationLayerControls: false}, + ).Return(&cv, nil) + + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSWAFProtections/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_appsec_waf_protection.test", "id", "43253"), + ), + }, + }, + }) + }) + + client.AssertExpectations(t) + }) + +} diff --git a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go index 05e1e8346..3da3fc1b6 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go @@ -143,6 +143,8 @@ func resourceAttackGroupConditionExceptionDelete(ctx context.Context, d *schema. } removeAttackGroupConditionException.Group = attackgroup + logger.Errorf("calling 'RemoveAttackGroupConditionException': %v", removeAttackGroupConditionException) + _, errd := client.RemoveAttackGroupConditionException(ctx, removeAttackGroupConditionException) if errd != nil { logger.Errorf("calling 'RemoveAttackGroupConditionException': %s", errd.Error()) @@ -190,10 +192,11 @@ func resourceAttackGroupConditionExceptionUpdate(ctx context.Context, d *schema. } updateAttackGroupConditionException.Group = attackgroup - _, erru := client.UpdateAttackGroupConditionException(ctx, updateAttackGroupConditionException) + resp, erru := client.UpdateAttackGroupConditionException(ctx, updateAttackGroupConditionException) if erru != nil { logger.Errorf("calling 'updateAttackGroupConditionException': %s", erru.Error()) return diag.FromErr(erru) } + logger.Warnf("calling 'updateAttackGroupConditionException': %s", resp) return resourceAttackGroupConditionExceptionRead(ctx, d, m) } diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go index 4a408e4e4..c4e4cc9fa 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go @@ -107,11 +107,12 @@ func resourceCustomRuleActionRead(ctx context.Context, d *schema.ResourceData, m } getCustomRuleAction.RuleID = ruleid } - _, err := client.GetCustomRuleAction(ctx, getCustomRuleAction) + customruleaction, err := client.GetCustomRuleAction(ctx, getCustomRuleAction) if err != nil { logger.Errorf("calling 'getCustomRuleAction': %s", err.Error()) return diag.FromErr(err) } + logger.Warnf("calling 'getCustomRuleAction': %s", customruleaction) if err := d.Set("custom_rule_id", getCustomRuleAction.RuleID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go index a63943b02..bbdf0b95e 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go @@ -214,6 +214,7 @@ func resourceEvalRuleConditionExceptionDelete(ctx context.Context, d *schema.Res } removeEvalRuleConditionException.RuleID = ruleid } + logger.Errorf("calling 'RemoveEvalRuleConditionException': %v", removeEvalRuleConditionException) _, errd := client.RemoveEvalRuleConditionException(ctx, removeEvalRuleConditionException) if errd != nil { diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go index 497e99ead..3bada4796 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go @@ -165,6 +165,8 @@ func resourceReputationAnalysisDelete(ctx context.Context, d *schema.ResourceDat RemoveReputationAnalysis.ForwardSharedIPToHTTPHeaderAndSIEM = false + logger.Errorf("calling 'removeReputationAnalysis': STRUCT %v", RemoveReputationAnalysis) + _, erru := client.RemoveReputationAnalysis(ctx, RemoveReputationAnalysis) if erru != nil { logger.Errorf("calling 'RemoveReputationAnalysis': %s", erru.Error()) From 7a6c0a489a2e705c88805b22dcfd7f238f140daa Mon Sep 17 00:00:00 2001 From: Philip Lodine Date: Fri, 5 Feb 2021 13:15:52 -0500 Subject: [PATCH 140/215] Remove output_text from appsec_advanced_settings_prefetch --- docs/resources/appsec_advanced_settings_prefetch.md | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/docs/resources/appsec_advanced_settings_prefetch.md b/docs/resources/appsec_advanced_settings_prefetch.md index 5ae4858e2..d62377dd1 100644 --- a/docs/resources/appsec_advanced_settings_prefetch.md +++ b/docs/resources/appsec_advanced_settings_prefetch.md @@ -32,10 +32,6 @@ resource "akamai_appsec_advanced_settings_prefetch" "prefetch" { enable_rate_controls = false extensions = var.extensions } - -output "prefetch_settings" { - value = akamai_appsec_advanced_settings_prefetch.prefetch.output_text -} ``` ## Argument Reference @@ -58,8 +54,5 @@ The following arguments are supported: In addition to the arguments above, the following attributes are exported: -* `output_text` - A tabular display showing the following updated prefetch settings. - * `ENABLE APP LAYER` - * `ALL EXTENSION` - * `ENABLE RATE CONTROLS` - * `EXTENSIONS` +* None + From 54e183fe6141fb2dabf747931509c3f04d07615d Mon Sep 17 00:00:00 2001 From: Edward Lynes Date: Fri, 5 Feb 2021 13:15:55 -0500 Subject: [PATCH 141/215] fail zone delete. check for SOA, NS --- CHANGELOG.md | 5 ++ pkg/providers/dns/resource_akamai_dns_zone.go | 88 ++++++++++++++++++- 2 files changed, 91 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index af38c56e3..24aeab5b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # RELEASE NOTES +## Next +* DNS + * Fail on attempted Zone deletion. Not supported. + * Create SOA and NS Records on zone read if don't exist. + ## 1.2.0 (Jan 14, 2021) Identity and Access Management support These are the operations supported in the Identity Management: User Administration API v2: diff --git a/pkg/providers/dns/resource_akamai_dns_zone.go b/pkg/providers/dns/resource_akamai_dns_zone.go index 8fd0afdd6..183baac9c 100644 --- a/pkg/providers/dns/resource_akamai_dns_zone.go +++ b/pkg/providers/dns/resource_akamai_dns_zone.go @@ -282,6 +282,26 @@ func resourceDNSv2ZoneRead(ctx context.Context, d *schema.ResourceData, m interf if strings.ToUpper(zone.Type) != strings.ToUpper(zoneType) { return diag.Errorf("zone type has changed from %s to %s", zoneType, zone.Type) } + if strings.ToUpper(zone.Type) == "PRIMARY" { + // TFP-196 - check if SOA and NS exist. If not, create + err = checkZoneSOAandNSRecords(ctx, meta, zone, logger) + if err != nil { + return append(diags, diag.Diagnostic{ + Severity: diag.Error, + Summary: "Zone is in an indeterminate state", + Detail: err.Error(), + }) + } + // Need updated state + zone, err = inst.Client(meta).GetZone(ctx, hostname) + if err != nil { + return append(diags, diag.Diagnostic{ + Severity: diag.Error, + Summary: "Zone read failure", + Detail: err.Error(), + }) + } + } if err := populateDNSv2ZoneState(d, zone); err != nil { return diag.FromErr(err) } @@ -392,6 +412,19 @@ func resourceDNSv2ZoneImport(d *schema.ResourceData, m interface{}) ([]*schema.R return nil, err } + if strings.ToUpper(zone.Type) == "PRIMARY" { + // TFP-196 - check if SOA and NS exist. If not, create + err = checkZoneSOAandNSRecords(ctx, meta, zone, logger) + if err != nil { + return nil, err + } + // Need updated state + zone, err = inst.Client(meta).GetZone(ctx, hostname) + if err != nil { + return nil, err + } + } + if err := d.Set("zone", zone.Zone); err != nil { return nil, fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error()) } @@ -409,7 +442,6 @@ func resourceDNSv2ZoneImport(d *schema.ResourceData, m interface{}) ([]*schema.R } func resourceDNSv2ZoneDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - hostname, err := tools.GetStringValue("zone", d) if err != nil { return diag.FromErr(err) @@ -420,7 +452,7 @@ func resourceDNSv2ZoneDelete(ctx context.Context, d *schema.ResourceData, m inte logger.Warn("DNS Zone deletion not allowed") // No ZONE delete operation permitted. - return schema.NoopContext(ctx, d, meta) + return diag.Errorf("DNS zone deletion is not supported via this sub provider") } // validateZoneType is a SchemaValidateFunc to validate the Zone type. @@ -600,3 +632,55 @@ func checkDNSv2Zone(d tools.ResourceDataFetcher) error { return nil } + +// Util func to create SOA and NS records +func checkZoneSOAandNSRecords(ctx context.Context, meta akamai.OperationMeta, zone *dns.ZoneResponse, logger log.Interface) error { + logger.Debugf("Checking SOA and NS records exist for zone %s", zone.Zone) + /* + if zone.ActivationState != "NEW" { + return errors.New("Zone is in an indeterminate state") // Should not have been called. + } + */ + // See if SOA and NS recs exist already. Both or none. + resp, err := inst.Client(meta).GetRecordsets(ctx, zone.Zone, dns.RecordsetQueryArgs{Types: "SOA,NS"}) + if err != nil { + return err + } + if len(resp.Recordsets) == 2 { + return nil + } + logger.Warnf("SOA and NS records don't exist. Creating ...") + nameservers, err := inst.Client(meta).GetNameServerRecordList(ctx, zone.ContractID) // ([]string, error) + if err != nil { + return err + } + if len(nameservers) < 1 { + return fmt.Errorf("No authoritative nameservers exist for zone %s contract ID", zone.Zone) + } + rs := &dns.Recordsets{Recordsets: make([]dns.Recordset, 0)} + rs.Recordsets = append(rs.Recordsets, createSOARecord(zone.Zone, nameservers, logger)) + rs.Recordsets = append(rs.Recordsets, createNSRecord(zone.Zone, nameservers, logger)) + + // create recordsets + err = inst.Client(meta).CreateRecordsets(ctx, rs, zone.Zone, true) + + return err +} + +func createSOARecord(zone string, nameservers []string, logger log.Interface) dns.Recordset { + rec := dns.Recordset{Name: zone, Type: "SOA"} + rec.TTL = 86400 + pemail := fmt.Sprintf("hostmaster.%s.", zone) + soaData := fmt.Sprintf("%s %s 1 14400 7200 604800 1200", nameservers[0], pemail) + rec.Rdata = []string{soaData} + + return rec +} + +func createNSRecord(zone string, nameservers []string, logger log.Interface) dns.Recordset { + rec := dns.Recordset{Name: zone, Type: "NS"} + rec.TTL = 86400 + rec.Rdata = nameservers + + return rec +} From 1cc709362b1d6e8623c7fea57d0d81204413a70b Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 13:43:45 -0600 Subject: [PATCH 142/215] Remove output text from penalty box --- .../appsec/resource_akamai_appsec_penalty_box.go | 15 --------------- pkg/providers/appsec/templates.go | 2 +- 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_penalty_box.go b/pkg/providers/appsec/resource_akamai_appsec_penalty_box.go index c8ba6b83a..9c013cff2 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_penalty_box.go +++ b/pkg/providers/appsec/resource_akamai_appsec_penalty_box.go @@ -53,11 +53,6 @@ func resourcePenaltyBox() *schema.Resource { None, }, false), }, - "output_text": { - Type: schema.TypeString, - Computed: true, - Description: "Text Export representation", - }, }, } } @@ -111,16 +106,6 @@ func resourcePenaltyBoxRead(ctx context.Context, d *schema.ResourceData, m inter return diag.FromErr(err) } - ots := OutputTemplates{} - InitTemplates(ots) - - outputtext, err := RenderTemplates(ots, "penaltyBoxesDS", penaltybox) - if err == nil { - if err := d.Set("output_text", outputtext); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } - } - if err := d.Set("config_id", getPenaltyBox.ConfigID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 958ba23a4..4e3c2aa1a 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -198,7 +198,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"appsec_reputation_profile_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"appsec_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_rule_condition_exception\" \"appsec_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} - otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}}} \nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} + otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}} \nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n mode = \"REPLACE\" \n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.Siem.EnableSiem}} \n enable_for_all_policies = {{.Siem.EnableForAllPolicies}}\n enable_botman_siem = {{.Siem.EnabledBotmanSiemEvents}}\n siem_id = {{.Siem.SiemDefinitionID}}\n security_policy_ids = [{{ range $index, $element := .Siem.FirewallPolicyIds}}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n"} otm["SlowPost.tf"] = &OutputTemplate{TemplateName: "SlowPost.tf", TableTitle: "SlowPost", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_slow_post\" \"appsec_slow_post\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n slow_rate_action = \"{{.SlowPost.Action}}\" \n slow_rate_threshold_rate = {{.SlowPost.SlowRateThreshold.Rate}}\n slow_rate_threshold_period = {{.SlowPost.SlowRateThreshold.Period}}\n duration_threshold_timeout = {{.SlowPost.DurationThreshold.Timeout}}\n \n } \n{{end}}"} From 6f5fd3bc64e3cbbe391ca93d2a1a2c87e9213f0c Mon Sep 17 00:00:00 2001 From: Philip Lodine Date: Fri, 5 Feb 2021 14:44:57 -0500 Subject: [PATCH 143/215] Remove output_text --- docs/resources/appsec_penalty_box.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/resources/appsec_penalty_box.md b/docs/resources/appsec_penalty_box.md index 8e479e3ce..388141d17 100644 --- a/docs/resources/appsec_penalty_box.md +++ b/docs/resources/appsec_penalty_box.md @@ -50,5 +50,5 @@ The following arguments are supported: In addition to the arguments above, the following attributes are exported: -* `output_text` - A tabular display showing the updated penalty box protection settings. +* None From 3a75ed2383859d22b5d88e118a6403a842b6c62a Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 14:04:35 -0600 Subject: [PATCH 144/215] Remove Attack group output_text --- .../resource_akamai_appsec_attack_group_action.go | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_attack_group_action.go b/pkg/providers/appsec/resource_akamai_appsec_attack_group_action.go index 6c5ce5daa..6e1b2de71 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_attack_group_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_attack_group_action.go @@ -49,11 +49,6 @@ func resourceAttackGroupAction() *schema.Resource { Required: true, ValidateFunc: ValidateActions, }, - "output_text": { - Type: schema.TypeString, - Computed: true, - Description: "Text Export representation", - }, }, } } @@ -118,16 +113,6 @@ func resourceAttackGroupActionRead(ctx context.Context, d *schema.ResourceData, return diag.FromErr(err) } - ots := OutputTemplates{} - InitTemplates(ots) - - outputtext, err := RenderTemplates(ots, "AttackGroupActionDS", attackgroupaction) - if err == nil { - if err := d.Set("output_text", outputtext); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } - } - if err := d.Set("config_id", getAttackGroupAction.ConfigID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } From 390386e3a89837d10e2dfaa2c9e4c854cd6c0183 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 14:11:28 -0600 Subject: [PATCH 145/215] Remove plural from EvalAction --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 4e3c2aa1a..a814cb2f4 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -185,7 +185,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["ApiRequestConstraints.tf"] = &OutputTemplate{TemplateName: "ApiRequestConstraints.tf", TableTitle: "ApiRequestConstraints", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_over{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n action = \"{{.APIRequestConstraints.Action}}\" \n }\n {{range $index, $element := .APIRequestConstraints.APIEndpoints}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n api_endpoint_id = \"{{.ID}}\" \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"appsec_attack_group_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_condition_exception\" \"appsec_attack_group_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}"} - otm["EvalActions.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"appsec_eval_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"appsec_eval_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"appsec_eval_rule_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}}{{if $index}},{{end}}\nresource \"akamai_appsec_custom_rule\" \"appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} From ed983d0fee3b7d6ac745cece85975c6ba4479bcf Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 14:26:42 -0600 Subject: [PATCH 146/215] Remove output text to fix import --- .../resource_akamai_appsec_rule_action.go | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_rule_action.go b/pkg/providers/appsec/resource_akamai_appsec_rule_action.go index a8b092fd7..a6a6ffcce 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rule_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rule_action.go @@ -48,11 +48,6 @@ func resourceRuleAction() *schema.Resource { Type: schema.TypeInt, Required: true, }, - "output_text": { - Type: schema.TypeString, - Computed: true, - Description: "Text Export representation", - }, }, } } @@ -117,16 +112,6 @@ func resourceRuleActionRead(ctx context.Context, d *schema.ResourceData, m inter return diag.FromErr(err) } - ots := OutputTemplates{} - InitTemplates(ots) - - outputtext, err := RenderTemplates(ots, "RuleAction", ruleaction) - if err == nil { - if err := d.Set("output_text", outputtext); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } - } - if err := d.Set("config_id", getRuleAction.ConfigID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } @@ -139,6 +124,13 @@ func resourceRuleActionRead(ctx context.Context, d *schema.ResourceData, m inter return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("rule_id", ruleaction.ID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("rule_action", ruleaction.Action); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } d.SetId(fmt.Sprintf("%d:%d:%s:%d", getRuleAction.ConfigID, getRuleAction.Version, getRuleAction.PolicyID, getRuleAction.RuleID)) return nil From 4051334f780739b4b8b847d4cf954786a6905270 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 14:34:05 -0600 Subject: [PATCH 147/215] change ruleaction.ID getRuleAction.RuleID --- pkg/providers/appsec/resource_akamai_appsec_rule_action.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_rule_action.go b/pkg/providers/appsec/resource_akamai_appsec_rule_action.go index a6a6ffcce..8ed8ef797 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rule_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rule_action.go @@ -124,7 +124,7 @@ func resourceRuleActionRead(ctx context.Context, d *schema.ResourceData, m inter return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - if err := d.Set("rule_id", ruleaction.ID); err != nil { + if err := d.Set("rule_id", getRuleAction.RuleID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } From 0ea50179ce02bed977f26cf31b4dafbc964fd823 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 14:48:23 -0600 Subject: [PATCH 148/215] Correct eval rule action for import feature --- ...resource_akamai_appsec_eval_rule_action.go | 30 +++++++++---------- ...rce_akamai_appsec_eval_rule_action_test.go | 1 + 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action.go index 916716253..6df5f01cb 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action.go @@ -2,6 +2,7 @@ package appsec import ( "context" + "encoding/json" "errors" "fmt" "strconv" @@ -48,11 +49,6 @@ func resourceEvalRuleAction() *schema.Resource { Type: schema.TypeInt, Required: true, }, - "output_text": { - Type: schema.TypeString, - Computed: true, - Description: "Text Export representation", - }, }, } } @@ -116,16 +112,6 @@ func resourceEvalRuleActionRead(ctx context.Context, d *schema.ResourceData, m i logger.Warnf("calling 'getEvalRuleAction': %s", err.Error()) } - ots := OutputTemplates{} - InitTemplates(ots) - - outputtext, err := RenderTemplates(ots, "EvalRuleAction", evalruleaction) - if err == nil { - if err := d.Set("output_text", outputtext); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } - } - if err := d.Set("rule_id", getEvalRuleAction.RuleID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } @@ -142,6 +128,19 @@ func resourceEvalRuleActionRead(ctx context.Context, d *schema.ResourceData, m i return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("rule_id", getEvalRuleAction.RuleID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + jsonBody, err := json.Marshal(evalruleaction) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("rule_action", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%s:%d", getEvalRuleAction.ConfigID, getEvalRuleAction.Version, getEvalRuleAction.PolicyID, getEvalRuleAction.RuleID)) return nil @@ -269,7 +268,6 @@ func resourceEvalRuleActionUpdate(ctx context.Context, d *schema.ResourceData, m ruleaction, err := tools.GetStringValue("rule_action", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) - return diag.FromErr(err) } updateEvalRuleAction.Action = ruleaction diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action_test.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action_test.go index 0c82ab76c..7f0fcb0b0 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action_test.go @@ -41,6 +41,7 @@ func TestAccAkamaiEvalRuleAction_res_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("akamai_appsec_eval_rule_action.test", "id", "43253:7:AAAA_81230:699989"), ), + ExpectNonEmptyPlan: true, }, }, }) From 26c0ff3371bfb7013ce62233771c1a62b5ab5b0b Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 14:55:11 -0600 Subject: [PATCH 149/215] rename action to rule_action --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index a814cb2f4..726e60a3f 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -196,7 +196,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["RatePolicyAction.tf"] = &OutputTemplate{TemplateName: "RatePolicyAction.tf", TableTitle: "RatePolicyAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{ range $index, $element := .RatePolicyActions }}\nresource \"akamai_appsec_rate_policy_action\" \"appsec_rate_policy_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rate_policy_id = {{.ID}} \n ipv4_action = \"{{.Ipv4Action}}\" \n ipv6_action = \"{{.Ipv6Action}}\" \n }\n {{end}} {{end}}"} otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"appsec_reputation_profile_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"appsec_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"appsec_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_rule_condition_exception\" \"appsec_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}} \nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n mode = \"REPLACE\" \n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} From a284cd53365eaca376d75b9d0e6ec132ad964662 Mon Sep 17 00:00:00 2001 From: Philip Lodine Date: Fri, 5 Feb 2021 15:58:38 -0500 Subject: [PATCH 150/215] Remove unneeded test files; silence some log messages. --- ...ata_akamai_appsec_rate_protections_test.go | 43 ------------------- ...amai_appsec_reputation_protections_test.go | 43 ------------------- ...akamai_appsec_slowpost_protections_test.go | 43 ------------------- ...data_akamai_appsec_waf_protections_test.go | 43 ------------------- ...appsec_attack_group_condition_exception.go | 5 +-- ...source_akamai_appsec_custom_rule_action.go | 3 +- ...ai_appsec_eval_rule_condition_exception.go | 1 - ...ource_akamai_appsec_reputation_analysis.go | 2 - 8 files changed, 2 insertions(+), 181 deletions(-) delete mode 100644 pkg/providers/appsec/data_akamai_appsec_rate_protections_test.go delete mode 100644 pkg/providers/appsec/data_akamai_appsec_reputation_protections_test.go delete mode 100644 pkg/providers/appsec/data_akamai_appsec_slowpost_protections_test.go delete mode 100644 pkg/providers/appsec/data_akamai_appsec_waf_protections_test.go diff --git a/pkg/providers/appsec/data_akamai_appsec_rate_protections_test.go b/pkg/providers/appsec/data_akamai_appsec_rate_protections_test.go deleted file mode 100644 index 44cb9acba..000000000 --- a/pkg/providers/appsec/data_akamai_appsec_rate_protections_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package appsec - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiRateProtections_data_basic(t *testing.T) { - t.Run("match by RateProtections ID", func(t *testing.T) { - client := &mockappsec{} - - cv := appsec.GetRateProtectionsResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestDSRateProtections/RateProtections.json")) - json.Unmarshal([]byte(expectJS), &cv) - - client.On("GetRateProtections", - mock.Anything, // ctx is irrelevant for this test - appsec.GetRateProtectionsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, - ).Return(&cv, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestDSRateProtections/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_rate_protections.test", "id", "43253"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/appsec/data_akamai_appsec_reputation_protections_test.go b/pkg/providers/appsec/data_akamai_appsec_reputation_protections_test.go deleted file mode 100644 index 99b99dfa3..000000000 --- a/pkg/providers/appsec/data_akamai_appsec_reputation_protections_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package appsec - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiReputationProtections_data_basic(t *testing.T) { - t.Run("match by ReputationProtections ID", func(t *testing.T) { - client := &mockappsec{} - - cv := appsec.GetReputationProtectionsResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestDSReputationProtections/ReputationProtections.json")) - json.Unmarshal([]byte(expectJS), &cv) - - client.On("GetReputationProtections", - mock.Anything, // ctx is irrelevant for this test - appsec.GetReputationProtectionsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, - ).Return(&cv, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: false, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestDSReputationProtections/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_reputation_protections.test", "id", "43253"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/appsec/data_akamai_appsec_slowpost_protections_test.go b/pkg/providers/appsec/data_akamai_appsec_slowpost_protections_test.go deleted file mode 100644 index cdad43826..000000000 --- a/pkg/providers/appsec/data_akamai_appsec_slowpost_protections_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package appsec - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiSlowPostProtections_data_basic(t *testing.T) { - t.Run("match by SlowPostProtections ID", func(t *testing.T) { - client := &mockappsec{} - - cv := appsec.GetSlowPostProtectionsResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestDSSlowPostProtections/SlowPostProtections.json")) - json.Unmarshal([]byte(expectJS), &cv) - - client.On("GetSlowPostProtections", - mock.Anything, // ctx is irrelevant for this test - appsec.GetSlowPostProtectionsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, - ).Return(&cv, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestDSSlowPostProtections/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_slowpost_protections.test", "id", "43253"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/appsec/data_akamai_appsec_waf_protections_test.go b/pkg/providers/appsec/data_akamai_appsec_waf_protections_test.go deleted file mode 100644 index 305b84ec1..000000000 --- a/pkg/providers/appsec/data_akamai_appsec_waf_protections_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package appsec - -import ( - "encoding/json" - "testing" - - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/stretchr/testify/mock" -) - -func TestAccAkamaiWAFProtections_data_basic(t *testing.T) { - t.Run("match by WAFProtections ID", func(t *testing.T) { - client := &mockappsec{} - - cv := appsec.GetWAFProtectionsResponse{} - expectJS := compactJSON(loadFixtureBytes("testdata/TestDSWAFProtections/WAFProtections.json")) - json.Unmarshal([]byte(expectJS), &cv) - - client.On("GetWAFProtections", - mock.Anything, // ctx is irrelevant for this test - appsec.GetWAFProtectionsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ApplyApplicationLayerControls: false}, - ).Return(&cv, nil) - - useClient(client, func() { - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: loadFixtureString("testdata/TestDSWAFProtections/match_by_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_appsec_waf_protection.test", "id", "43253"), - ), - }, - }, - }) - }) - - client.AssertExpectations(t) - }) - -} diff --git a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go index 3da3fc1b6..05e1e8346 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go @@ -143,8 +143,6 @@ func resourceAttackGroupConditionExceptionDelete(ctx context.Context, d *schema. } removeAttackGroupConditionException.Group = attackgroup - logger.Errorf("calling 'RemoveAttackGroupConditionException': %v", removeAttackGroupConditionException) - _, errd := client.RemoveAttackGroupConditionException(ctx, removeAttackGroupConditionException) if errd != nil { logger.Errorf("calling 'RemoveAttackGroupConditionException': %s", errd.Error()) @@ -192,11 +190,10 @@ func resourceAttackGroupConditionExceptionUpdate(ctx context.Context, d *schema. } updateAttackGroupConditionException.Group = attackgroup - resp, erru := client.UpdateAttackGroupConditionException(ctx, updateAttackGroupConditionException) + _, erru := client.UpdateAttackGroupConditionException(ctx, updateAttackGroupConditionException) if erru != nil { logger.Errorf("calling 'updateAttackGroupConditionException': %s", erru.Error()) return diag.FromErr(erru) } - logger.Warnf("calling 'updateAttackGroupConditionException': %s", resp) return resourceAttackGroupConditionExceptionRead(ctx, d, m) } diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go index c4e4cc9fa..4a408e4e4 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go @@ -107,12 +107,11 @@ func resourceCustomRuleActionRead(ctx context.Context, d *schema.ResourceData, m } getCustomRuleAction.RuleID = ruleid } - customruleaction, err := client.GetCustomRuleAction(ctx, getCustomRuleAction) + _, err := client.GetCustomRuleAction(ctx, getCustomRuleAction) if err != nil { logger.Errorf("calling 'getCustomRuleAction': %s", err.Error()) return diag.FromErr(err) } - logger.Warnf("calling 'getCustomRuleAction': %s", customruleaction) if err := d.Set("custom_rule_id", getCustomRuleAction.RuleID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go index 08cdde879..a19fdab59 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go @@ -217,7 +217,6 @@ func resourceEvalRuleConditionExceptionDelete(ctx context.Context, d *schema.Res } removeEvalRuleConditionException.RuleID = ruleid } - logger.Errorf("calling 'RemoveEvalRuleConditionException': %v", removeEvalRuleConditionException) _, errd := client.RemoveEvalRuleConditionException(ctx, removeEvalRuleConditionException) if errd != nil { diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go index 3bada4796..497e99ead 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_analysis.go @@ -165,8 +165,6 @@ func resourceReputationAnalysisDelete(ctx context.Context, d *schema.ResourceDat RemoveReputationAnalysis.ForwardSharedIPToHTTPHeaderAndSIEM = false - logger.Errorf("calling 'removeReputationAnalysis': STRUCT %v", RemoveReputationAnalysis) - _, erru := client.RemoveReputationAnalysis(ctx, RemoveReputationAnalysis) if erru != nil { logger.Errorf("calling 'RemoveReputationAnalysis': %s", erru.Error()) From dff1aa3fd6ae98a6860d4970dfd9ccbc497ffac3 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 15:04:28 -0600 Subject: [PATCH 151/215] Remove double quote around rule_id --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 726e60a3f..f85d385f1 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -185,7 +185,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["ApiRequestConstraints.tf"] = &OutputTemplate{TemplateName: "ApiRequestConstraints.tf", TableTitle: "ApiRequestConstraints", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_over{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n action = \"{{.APIRequestConstraints.Action}}\" \n }\n {{range $index, $element := .APIRequestConstraints.APIEndpoints}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n api_endpoint_id = \"{{.ID}}\" \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"appsec_attack_group_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_condition_exception\" \"appsec_attack_group_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}"} - otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"appsec_eval_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"appsec_eval_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"appsec_eval_rule_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}}{{if $index}},{{end}}\nresource \"akamai_appsec_custom_rule\" \"appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} From f4443358285eea50a92f8d668b17d34080eb6a07 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 15:21:33 -0600 Subject: [PATCH 152/215] import error of rule_action from evalruleaction --- .../appsec/resource_akamai_appsec_eval_rule_action.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action.go index 6df5f01cb..d052fb6f7 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_action.go @@ -2,7 +2,6 @@ package appsec import ( "context" - "encoding/json" "errors" "fmt" "strconv" @@ -132,12 +131,7 @@ func resourceEvalRuleActionRead(ctx context.Context, d *schema.ResourceData, m i return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - jsonBody, err := json.Marshal(evalruleaction) - if err != nil { - return diag.FromErr(err) - } - - if err := d.Set("rule_action", string(jsonBody)); err != nil { + if err := d.Set("rule_action", evalruleaction.Action); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } From 2ac9e8c135cf9207bbc458c6ab98fec90d6317d8 Mon Sep 17 00:00:00 2001 From: Philip Lodine Date: Fri, 5 Feb 2021 16:23:58 -0500 Subject: [PATCH 153/215] Quiet additional log messages --- pkg/providers/appsec/data_akamai_appsec_custom_deny.go | 2 -- .../resource_akamai_appsec_eval_rule_condition_exception.go | 1 - 2 files changed, 3 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_custom_deny.go b/pkg/providers/appsec/data_akamai_appsec_custom_deny.go index 83743ab01..f152c6242 100644 --- a/pkg/providers/appsec/data_akamai_appsec_custom_deny.go +++ b/pkg/providers/appsec/data_akamai_appsec_custom_deny.go @@ -74,8 +74,6 @@ func dataSourceCustomDenyRead(ctx context.Context, d *schema.ResourceData, m int return diag.FromErr(err) } - logger.Errorf("calling 'getCustomDeny': %v", customdeny) - ots := OutputTemplates{} InitTemplates(ots) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go index a19fdab59..63026cf31 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go @@ -134,7 +134,6 @@ func resourceEvalRuleConditionExceptionRead(ctx context.Context, d *schema.Resou if err != nil { return diag.FromErr(err) } - logger.Warnf("calling 'getEvalRuleConditionException JSON ': %s", string(jsonBody)) if err := d.Set("condition_exception", string(jsonBody)); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } From 6d3bbbb6677d980d1d1685f2608c7a67746964bf Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 15:35:55 -0600 Subject: [PATCH 154/215] Fix unit test for rule_action --- pkg/providers/appsec/resource_akamai_appsec_rule_action_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/providers/appsec/resource_akamai_appsec_rule_action_test.go b/pkg/providers/appsec/resource_akamai_appsec_rule_action_test.go index f8a9c5809..f31dcd206 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rule_action_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rule_action_test.go @@ -41,6 +41,7 @@ func TestAccAkamaiRuleAction_res_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("akamai_appsec_rule_action.test", "id", "43253:7:AAAA_81230:699989"), ), + ExpectNonEmptyPlan: true, }, }, }) From 1003e988e20078607c2d0951111d487cea2334fa Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 15:42:08 -0600 Subject: [PATCH 155/215] Import fix for custom_rule_action --- .../appsec/resource_akamai_appsec_custom_rule_action.go | 4 ++++ .../appsec/resource_akamai_appsec_custom_rule_action_test.go | 1 + 2 files changed, 5 insertions(+) diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go index c4e4cc9fa..9b2daf3e0 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go @@ -130,6 +130,10 @@ func resourceCustomRuleActionRead(ctx context.Context, d *schema.ResourceData, m return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("custom_rule_action", customruleaction.Action); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%s:%d", getCustomRuleAction.ConfigID, getCustomRuleAction.Version, getCustomRuleAction.PolicyID, getCustomRuleAction.RuleID)) return nil diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action_test.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action_test.go index 8eb9020b8..9a59edae0 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action_test.go @@ -41,6 +41,7 @@ func TestAccAkamaiCustomRuleAction_res_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("akamai_appsec_custom_rule_action.test", "id", "43253:7:AAAA_81230:60036362"), ), + ExpectNonEmptyPlan: true, }, }, }) From 0d046b6a5172b5de36b21daed53684556a431f58 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 5 Feb 2021 22:27:31 -0600 Subject: [PATCH 156/215] Fix export for API match targets and adv_settings_prefetch --- ...kamai_appsec_advanced_settings_prefetch.go | 4 ++ .../resource_akamai_appsec_match_target.go | 2 +- pkg/providers/appsec/templates.go | 46 +++++++++---------- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go index c3ff46caa..c860aa90d 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go +++ b/pkg/providers/appsec/resource_akamai_appsec_advanced_settings_prefetch.go @@ -102,6 +102,10 @@ func resourceAdvancedSettingsPrefetchRead(ctx context.Context, d *schema.Resourc return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("version", getAdvancedSettingsPrefetch.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + if err := d.Set("enable_app_layer", prefetchget.EnableAppLayer); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } diff --git a/pkg/providers/appsec/resource_akamai_appsec_match_target.go b/pkg/providers/appsec/resource_akamai_appsec_match_target.go index 4ccfd7195..8fbda6be6 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_match_target.go +++ b/pkg/providers/appsec/resource_akamai_appsec_match_target.go @@ -273,7 +273,7 @@ func resourceMatchTargetRead(ctx context.Context, d *schema.ResourceData, m inte if err != nil { return diag.FromErr(err) } - + logger.Warnf("calling 'getMatchTarget': JSON %s", string(jsonBody)) if err := d.Set("match_target", string(jsonBody)); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index f85d385f1..2afe1b627 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -179,29 +179,29 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["RuleConditionException"] = &OutputTemplate{TemplateName: "RuleConditionException", TableTitle: "Conditions|Exceptions", TemplateType: "TABULAR", TemplateString: "{{range $index, $element :=.Conditions}}True{{else}}False{{end}}|{{with .Exception}}True{{else}}False{{end}}"} // TF templates - otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF\n {{marshal .AdvancedOptions.Logging}} \n EOF \n } {{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if .LoggingOverrides}}\nresource \"akamai_appsec_advanced_settings_logging\" \"akamai_appsec_advanced_settings_logging_override{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n logging = <<-EOF\n {{marshal .LoggingOverrides}} \n \n EOF \n \n }\n{{end}} {{end}}"} - - otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} - otm["ApiRequestConstraints.tf"] = &OutputTemplate{TemplateName: "ApiRequestConstraints.tf", TableTitle: "ApiRequestConstraints", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_over{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n action = \"{{.APIRequestConstraints.Action}}\" \n }\n {{range $index, $element := .APIRequestConstraints.APIEndpoints}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n api_endpoint_id = \"{{.ID}}\" \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"appsec_attack_group_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_condition_exception\" \"appsec_attack_group_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}"} - otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"appsec_eval_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"appsec_eval_rule_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} - otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} - otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}}{{if $index}},{{end}}\nresource \"akamai_appsec_custom_rule\" \"appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} - otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"appsec_custom_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} - otm["MatchTarget.tf"] = &OutputTemplate{TemplateName: "MatchTarget.tf", TableTitle: "MatchTarget", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .MatchTargets.WebsiteTargets}}\nresource \"akamai_appsec_match_target\" \"appsec_match_target{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}\n {{range $index, $element := .MatchTargets.APITargets}}\nresource \"akamai_appsec_match_target\" \"appsec_match_target{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} - otm["PenaltyBox.tf"] = &OutputTemplate{TemplateName: "PenaltyBox.tf", TableTitle: "PenaltyBox", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}} \nresource \"akamai_appsec_penalty_box\" \"appsec_penalty_box{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n penalty_box_protection = \"{{.PenaltyBox.PenaltyBoxProtection}}\" \n penalty_box_action = \"{{.PenaltyBox.Action}}\" \n}\n{{end}}"} - otm["RatePolicy.tf"] = &OutputTemplate{TemplateName: "RatePolicy.tf", TableTitle: "RatePolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .RatePolicies}}\nresource \"akamai_appsec_rate_policy\" \"appsec_rate_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n rate_policy = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} - otm["RatePolicyAction.tf"] = &OutputTemplate{TemplateName: "RatePolicyAction.tf", TableTitle: "RatePolicyAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{ range $index, $element := .RatePolicyActions }}\nresource \"akamai_appsec_rate_policy_action\" \"appsec_rate_policy_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rate_policy_id = {{.ID}} \n ipv4_action = \"{{.Ipv4Action}}\" \n ipv6_action = \"{{.Ipv6Action}}\" \n }\n {{end}} {{end}}"} - otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} - otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"appsec_reputation_profile_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"appsec_rule_action{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_rule_condition_exception\" \"appsec_condition_exception{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} - otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}} \nresource \"akamai_appsec_security_policy\" \"appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} - otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n mode = \"REPLACE\" \n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} + otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"akamai_appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF\n {{marshal .AdvancedOptions.Logging}} \n EOF \n } \n {{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if .LoggingOverrides}}\nresource \"akamai_appsec_advanced_settings_logging\" \"akamai_appsec_advanced_settings_logging_override{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n logging = <<-EOF\n {{marshal .LoggingOverrides}} \n \n EOF \n \n }\n{{end}} {{end}}"} + + otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"akamai_appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} + otm["ApiRequestConstraints.tf"] = &OutputTemplate{TemplateName: "ApiRequestConstraints.tf", TableTitle: "ApiRequestConstraints", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if .APIRequestConstraints.Action}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_{{$prev_secpolicy}}{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n action = \"{{.APIRequestConstraints.Action}}\" \n }{{end}}\n {{range $index, $element := .APIRequestConstraints.APIEndpoints}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_override_{{.ID}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n api_endpoint_id = \"{{.ID}}\" \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"akamai_appsec_attack_group_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}"} + otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"akamai_appsec_eval_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"akamai_appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} + otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}}{{if $index}},{{end}}\nresource \"akamai_appsec_custom_rule\" \"akamai_appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} + otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"akamai_appsec_custom_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} + otm["MatchTarget.tf"] = &OutputTemplate{TemplateName: "MatchTarget.tf", TableTitle: "MatchTarget", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .MatchTargets.WebsiteTargets}}\nresource \"akamai_appsec_match_target\" \"akamai_appsec_match_target_{{.ID}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}\n {{range $index, $element := .MatchTargets.APITargets}}\nresource \"akamai_appsec_match_target\" \"akamai_appsec_match_target_{{.ID}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} + otm["PenaltyBox.tf"] = &OutputTemplate{TemplateName: "PenaltyBox.tf", TableTitle: "PenaltyBox", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if .PenaltyBox.Action}} \nresource \"akamai_appsec_penalty_box\" \"akamai_appsec_penalty_box_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n penalty_box_protection = \"{{.PenaltyBox.PenaltyBoxProtection}}\" \n penalty_box_action = \"{{.PenaltyBox.Action}}\" \n}\n{{end}}{{end}}"} + otm["RatePolicy.tf"] = &OutputTemplate{TemplateName: "RatePolicy.tf", TableTitle: "RatePolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .RatePolicies}}\nresource \"akamai_appsec_rate_policy\" \"akamai_appsec_rate_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n rate_policy = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} + otm["RatePolicyAction.tf"] = &OutputTemplate{TemplateName: "RatePolicyAction.tf", TableTitle: "RatePolicyAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{ range $index, $element := .RatePolicyActions }}\nresource \"akamai_appsec_rate_policy_action\" \"akamai_appsec_rate_policy_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rate_policy_id = {{.ID}} \n ipv4_action = \"{{.Ipv4Action}}\" \n ipv6_action = \"{{.Ipv6Action}}\" \n }\n {{end}} {{end}}"} + otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"akamai_appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} + otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"akamai_appsec_reputation_profile_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"akamai_appsec_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} + otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_rule_condition_exception\" \"akamai_appsec_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}} \nresource \"akamai_appsec_security_policy\" \"akamai_appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} + otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"akamai_appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n mode = \"REPLACE\" \n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.Siem.EnableSiem}} \n enable_for_all_policies = {{.Siem.EnableForAllPolicies}}\n enable_botman_siem = {{.Siem.EnabledBotmanSiemEvents}}\n siem_id = {{.Siem.SiemDefinitionID}}\n security_policy_ids = [{{ range $index, $element := .Siem.FirewallPolicyIds}}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n"} - otm["SlowPost.tf"] = &OutputTemplate{TemplateName: "SlowPost.tf", TableTitle: "SlowPost", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_slow_post\" \"appsec_slow_post\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n slow_rate_action = \"{{.SlowPost.Action}}\" \n slow_rate_threshold_rate = {{.SlowPost.SlowRateThreshold.Rate}}\n slow_rate_threshold_period = {{.SlowPost.SlowRateThreshold.Period}}\n duration_threshold_timeout = {{.SlowPost.DurationThreshold.Timeout}}\n \n } \n{{end}}"} - otm["IPGeoFirewall.tf"] = &OutputTemplate{TemplateName: "IPGeoFirewall.tf", TableTitle: "IPGeoFirewall", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_ip_geo\" \"appsec_ip_geo\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n mode = {{if eq .IPGeoFirewall.Block \"blockSpecificIPGeo\"}}\"block\"{{else}}\"allow\"{{end}} \n geo_network_lists = [{{ range $index, $element := .IPGeoFirewall.GeoControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n exception_ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.AllowedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n{{end}}"} + otm["SlowPost.tf"] = &OutputTemplate{TemplateName: "SlowPost.tf", TableTitle: "SlowPost", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_slow_post\" \"akamai_appsec_slow_post_{{$prev_secpolicy}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n slow_rate_action = \"{{.SlowPost.Action}}\" \n slow_rate_threshold_rate = {{.SlowPost.SlowRateThreshold.Rate}}\n slow_rate_threshold_period = {{.SlowPost.SlowRateThreshold.Period}}\n duration_threshold_timeout = {{.SlowPost.DurationThreshold.Timeout}}\n \n } \n{{end}}"} + otm["IPGeoFirewall.tf"] = &OutputTemplate{TemplateName: "IPGeoFirewall.tf", TableTitle: "IPGeoFirewall", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}}\nresource \"akamai_appsec_ip_geo\" \"akamai_appsec_ip_geo_{{$prev_secpolicy}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n mode = {{if eq .IPGeoFirewall.Block \"blockSpecificIPGeo\"}}\"block\"{{else}}\"allow\"{{end}} \n geo_network_lists = [{{ range $index, $element := .IPGeoFirewall.GeoControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.BlockedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}]\n exception_ip_network_lists = [{{ range $index, $element := .IPGeoFirewall.IPControls.AllowedIPNetworkLists.NetworkList }}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n{{end}}"} } From 09bc9ea67e754743cae72e3f90bc28a741222655 Mon Sep 17 00:00:00 2001 From: Edward Lynes Date: Mon, 8 Feb 2021 09:27:46 -0500 Subject: [PATCH 157/215] Support HTTPS, SVCB records. Tweak zone records check --- docs/resources/dns_record.md | 16 ++++ .../dns/resource_akamai_dns_record.go | 87 +++++++++++++++++++ pkg/providers/dns/resource_akamai_dns_zone.go | 18 ++-- 3 files changed, 112 insertions(+), 9 deletions(-) diff --git a/docs/resources/dns_record.md b/docs/resources/dns_record.md index 8fad44162..bd8ee46ef 100644 --- a/docs/resources/dns_record.md +++ b/docs/resources/dns_record.md @@ -137,6 +137,14 @@ The following fields are required: * hardware - Type of hardware the host uses. A machine name or CPU type may be up to 40 characters taken from the set of uppercase letters, digits, and the two punctuation characters hyphen and slash. It must start with a letter, and end with a letter. * software - Type of software the host uses. A system name may be up to 40 characters taken from the set of uppercase letters, digits, and the two punctuation characters hyphen and slash. It must start with a letter, and end with a letter or digit. +### HTTPS Record + +The following fields are required: + +* svc_priority - Service priority associated with endpoint. Value mist be between 0 and 65535. A piority of 0 enables alias mode. +* svc_params - Space seperated list of endpoint parameters. Not allowed if service priority is 0. +* target_name - Domain name of the service endpoint. + ### LOC Record The following field is required: @@ -253,6 +261,14 @@ The following fields are required: * expiry - A time value between 0 and 214748364 that specifies the upper limit on the time interval that can elapse before the zone is no longer authoritative. * nxdomain_ttl - The unsigned minimum TTL between 0 and 214748364 that should be exported with any resource record from this zone. +### SVCB Record + +The following fields are required: + +* svc_priority - Service priority associated with endpoint. Value mist be between 0 and 65535. A piority of 0 enables alias mode. +* svc_params - Space seperated list of endpoint parameters. Not allowed if service priority is 0. +* target_name - Domain name of the service endpoint. + ### TLSA Record The following fields are required: diff --git a/pkg/providers/dns/resource_akamai_dns_record.go b/pkg/providers/dns/resource_akamai_dns_record.go index 38fa73283..394443511 100644 --- a/pkg/providers/dns/resource_akamai_dns_record.go +++ b/pkg/providers/dns/resource_akamai_dns_record.go @@ -81,6 +81,8 @@ func resourceDNSv2Record() *schema.Resource { RRTypeCaa, RRTypeCert, RRTypeTlsa, + RRTypeSvcb, + RRTypeHttps, }, false), }, "ttl": { @@ -310,6 +312,18 @@ func resourceDNSv2Record() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "svc_priority": { + Type: schema.TypeInt, + Optional: true, + }, + "svc_params": { + Type: schema.TypeString, + Optional: true, + }, + "target_name": { + Type: schema.TypeString, + Optional: true, + }, }, } } @@ -571,6 +585,8 @@ var recordCreateLock = map[string]*sync.Mutex{ "NSEC3": {}, "NSEC3PARAM": {}, "RRSIG": {}, + "SVCB": {}, + "HTTPS": {}, } // Retrieves record lock per record type @@ -1933,6 +1949,22 @@ func newRecordCreate(ctx context.Context, meta akamai.OperationMeta, d *schema.R records := []string{strconv.Itoa(usage) + " " + strconv.Itoa(selector) + " " + strconv.Itoa(matchtype) + " " + certificate} recordCreate = dns.RecordBody{Name: host, RecordType: recordType, TTL: ttl, Target: records} + case RRTypeSvcb, RRTypeHttps: + pri, err := tools.GetIntValue("svc_priority", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return dns.RecordBody{}, err + } + tname, err := tools.GetStringValue("target_name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return dns.RecordBody{}, err + } + params, err := tools.GetStringValue("svc_params", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return dns.RecordBody{}, err + } + records := []string{strconv.Itoa(pri) + " " + tname + " " + params} + recordCreate = dns.RecordBody{Name: host, RecordType: recordType, TTL: ttl, Target: records} + default: return dns.RecordBody{}, fmt.Errorf("unable to create a Record Body for %s : %s", host, recordType) } @@ -2045,6 +2077,10 @@ func validateRecord(d *schema.ResourceData) error { return checkCertRecord(d) case RRTypeTlsa: return checkTlsaRecord(d) + case RRTypeSvcb: + return checkSvcbRecord(d) + case RRTypeHttps: + return checkHttpsRecord(d) default: return fmt.Errorf("invalid recordtype %v", recordType) } @@ -2713,6 +2749,55 @@ func checkTlsaRecord(d *schema.ResourceData) error { } +func checkSvcbRecord(d *schema.ResourceData) error { + + return checkServiceRecord(d, "SVCB") +} + +func checkHttpsRecord(d *schema.ResourceData) error { + + return checkServiceRecord(d, "HTTPS") +} + +func checkServiceRecord(d *schema.ResourceData, rtype string) error { + + pri, err := tools.GetIntValue("svc_priority", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return err + } + tname, err := tools.GetStringValue("target_name", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return err + } + params, err := tools.GetStringValue("svc_params", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return err + } + + if err := checkBasicRecordTypes(d); err != nil { + return err + } + + if pri < 0 || pri > 65535 { + return fmt.Errorf("configuration argument svc_priority must be positive int for %s", rtype) + } + + if tname == "" { + return fmt.Errorf("configuration argument target_name must be set for %s", rtype) + } + + if params == "" && pri > 0 { + return fmt.Errorf("configuration argument svc_params must be set for %s", rtype) + } + + if pri == 0 && params != "" { + return fmt.Errorf("configuration argument svc_params cannot be set for %s if svc_priority is zero", rtype) + } + + return nil + +} + // Resource record types supported by the Akamai Edge DNS API const ( RRTypeA = "A" @@ -2741,4 +2826,6 @@ const ( RRTypeNsec3Param = "NSEC3PARAM" RRTypeRrsig = "RRSIG" RRTypeCert = "CERT" + RRTypeHttps = "HTTPS" + RRTypeSvcb = "SVCB" ) diff --git a/pkg/providers/dns/resource_akamai_dns_zone.go b/pkg/providers/dns/resource_akamai_dns_zone.go index 183baac9c..d999b167d 100644 --- a/pkg/providers/dns/resource_akamai_dns_zone.go +++ b/pkg/providers/dns/resource_akamai_dns_zone.go @@ -636,19 +636,19 @@ func checkDNSv2Zone(d tools.ResourceDataFetcher) error { // Util func to create SOA and NS records func checkZoneSOAandNSRecords(ctx context.Context, meta akamai.OperationMeta, zone *dns.ZoneResponse, logger log.Interface) error { logger.Debugf("Checking SOA and NS records exist for zone %s", zone.Zone) - /* - if zone.ActivationState != "NEW" { - return errors.New("Zone is in an indeterminate state") // Should not have been called. + var resp *dns.RecordSetResponse + var err error + if zone.ActivationState != "NEW" { + // See if SOA and NS recs exist already. Both or none. + resp, err = inst.Client(meta).GetRecordsets(ctx, zone.Zone, dns.RecordsetQueryArgs{Types: "SOA,NS"}) + if err != nil { + return err } - */ - // See if SOA and NS recs exist already. Both or none. - resp, err := inst.Client(meta).GetRecordsets(ctx, zone.Zone, dns.RecordsetQueryArgs{Types: "SOA,NS"}) - if err != nil { - return err } - if len(resp.Recordsets) == 2 { + if len(resp.Recordsets) >= 2 { return nil } + logger.Warnf("SOA and NS records don't exist. Creating ...") nameservers, err := inst.Client(meta).GetNameServerRecordList(ctx, zone.ContractID) // ([]string, error) if err != nil { From 0a9ced0662cf613cda9e7466fbae67f455f460fd Mon Sep 17 00:00:00 2001 From: Edward Lynes Date: Mon, 8 Feb 2021 09:47:59 -0500 Subject: [PATCH 158/215] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24aeab5b6..b2494ad25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * DNS * Fail on attempted Zone deletion. Not supported. * Create SOA and NS Records on zone read if don't exist. + * Add HTTPS, SVCB record support ## 1.2.0 (Jan 14, 2021) Identity and Access Management support From 15b7feda603ed971fe56c796812eaf8786fa4cc9 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Mon, 8 Feb 2021 11:47:21 -0600 Subject: [PATCH 159/215] Add customruleaction to response --- .../appsec/resource_akamai_appsec_custom_rule_action.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go index 0d110b31d..4af85e70a 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_action.go @@ -107,7 +107,7 @@ func resourceCustomRuleActionRead(ctx context.Context, d *schema.ResourceData, m } getCustomRuleAction.RuleID = ruleid } - _, err := client.GetCustomRuleAction(ctx, getCustomRuleAction) + customruleaction, err := client.GetCustomRuleAction(ctx, getCustomRuleAction) if err != nil { logger.Errorf("calling 'getCustomRuleAction': %s", err.Error()) return diag.FromErr(err) From 8f6c053f8695010146cddc359b64d2b02377ee8f Mon Sep 17 00:00:00 2001 From: Philip Lodine Date: Tue, 9 Feb 2021 09:20:37 -0500 Subject: [PATCH 160/215] Remove leftover protection data source markdown file --- docs/data-sources/appsec_waf_protection.md | 57 ---------------------- 1 file changed, 57 deletions(-) delete mode 100644 docs/data-sources/appsec_waf_protection.md diff --git a/docs/data-sources/appsec_waf_protection.md b/docs/data-sources/appsec_waf_protection.md deleted file mode 100644 index 8b32ce3ec..000000000 --- a/docs/data-sources/appsec_waf_protection.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: "akamai" -page_title: "Akamai: WAF Protection" -subcategory: "Application Security" -description: |- - WAF Protection ---- - -# akamai_appsec_waf_protection - -Use the `akamai_appsec_waf_protection` data source to retrieve the current protection settings for a given security configuration version and policy - - -## Example Usage - -Basic usage: - -```hcl -provider "akamai" { - appsec_section = "default" -} -data "akamai_appsec_configuration" "configuration" { - name = var.security_configuration -} -data "akamai_appsec_waf_protection" "waf_protection" { - config_id = data.akamai_appsec_configuration.configuration.config_id - version = data.akamai_appsec_configuration.configuration.latest_version - policy_id = var.policy_id -} -output "output_text" { - value = data.akamai_appsec_waf_protection.waf_protection.output_text -} -``` - -## Argument Reference - -The following arguments are supported: - -* `config_id` - (Required) The ID of the security configuration to use. - -* `version` - (Required) The version number of the security configuration to use. - -* `policy_id` - (Required) The ID of the security policy to use - -## Attributes Reference - -In addition to the arguments above, the following attributes are exported: - -* `output_text` - A tabular display showing the enabled status (true or false) of the following protection features: - * applyApiConstraints - * applyApplicationLayerControls - * applyBotmanControls - * applyNetworkLayerControls - * applyRateControls - * applyReputationControls - * applySlowPostControls - From 15924e235f5dae1c658f5ffc902ada929d82cb1c Mon Sep 17 00:00:00 2001 From: Neha Ghate Date: Tue, 9 Feb 2021 11:45:28 -0500 Subject: [PATCH 161/215] bug/DEVOPSPROV-1394_restriction_on_adding_snippet_files_to_a_folder:added validation on folder and unit test --- .../data_akamai_property_rules_template.go | 12 +++++++++--- .../data_akamai_property_rules_template_test.go | 15 +++++++++++++++ .../property-snippets/template_invalid_json.json | 1 + .../property-snippets/template_out.json | 8 ++++++++ .../plain_json.json | 0 .../snippets/some-template.json | 0 .../snippets/sub/another-template.json | 0 .../template_file_not_found.json | 0 .../template_in.json | 0 .../template_file_not_found.tf | 2 +- .../TestDSRulesTemplate/template_invalid_json.tf | 2 +- .../template_invalid_snippets_folder_json.tf | 7 +++++++ .../TestDSRulesTemplate/template_null_values.tf | 2 +- .../TestDSRulesTemplate/template_var_not_found.tf | 2 +- .../TestDSRulesTemplate/template_vars_conflict.tf | 2 +- .../TestDSRulesTemplate/template_vars_file.tf | 2 +- .../template_vars_file_not_found.tf | 2 +- .../template_vars_invalid_type.tf | 2 +- .../template_vars_invalid_value.tf | 2 +- .../TestDSRulesTemplate/template_vars_map.tf | 2 +- 20 files changed, 50 insertions(+), 13 deletions(-) create mode 100644 pkg/providers/property/testdata/TestDSRulesTemplate/property-snippets/template_invalid_json.json create mode 100644 pkg/providers/property/testdata/TestDSRulesTemplate/property-snippets/template_out.json rename pkg/providers/property/testdata/TestDSRulesTemplate/rules/{templates => property-snippets}/plain_json.json (100%) rename pkg/providers/property/testdata/TestDSRulesTemplate/rules/{templates => property-snippets}/snippets/some-template.json (100%) rename pkg/providers/property/testdata/TestDSRulesTemplate/rules/{templates => property-snippets}/snippets/sub/another-template.json (100%) rename pkg/providers/property/testdata/TestDSRulesTemplate/rules/{templates => property-snippets}/template_file_not_found.json (100%) rename pkg/providers/property/testdata/TestDSRulesTemplate/rules/{templates => property-snippets}/template_in.json (100%) create mode 100644 pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_snippets_folder_json.tf diff --git a/pkg/providers/property/data_akamai_property_rules_template.go b/pkg/providers/property/data_akamai_property_rules_template.go index dcfe4502e..278b97b36 100644 --- a/pkg/providers/property/data_akamai_property_rules_template.go +++ b/pkg/providers/property/data_akamai_property_rules_template.go @@ -132,6 +132,11 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m return diag.FromErr(err) } dir := filepath.Dir(file) + folders := snippetsFolderRegexp.FindStringSubmatch(file) + if folders[1] != "property-snippets" { + logger.Warnf("Snippets file should be under 'property-snippets' folder instead of: %s", folders[1]) + return diag.FromErr(fmt.Errorf("Snippets file should be under 'property-snippets' folder instead of %s folder", folders[1])) + } templateFiles := make(map[string]string) err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { @@ -189,9 +194,10 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m } var ( - includeRegexp = regexp.MustCompile(`"#include:.+"`) - varRegexp = regexp.MustCompile(`"\${.+}"`) - jsonFileRegexp = regexp.MustCompile(`\.json+$`) + includeRegexp = regexp.MustCompile(`"#include:.+"`) + varRegexp = regexp.MustCompile(`"\${.+}"`) + jsonFileRegexp = regexp.MustCompile(`\.json+$`) + snippetsFolderRegexp = regexp.MustCompile(`.*\/(.*)\/`) ) var ( diff --git a/pkg/providers/property/data_akamai_property_rules_template_test.go b/pkg/providers/property/data_akamai_property_rules_template_test.go index 4b13a8a5b..c747fedb7 100644 --- a/pkg/providers/property/data_akamai_property_rules_template_test.go +++ b/pkg/providers/property/data_akamai_property_rules_template_test.go @@ -172,6 +172,21 @@ func TestDataAkamaiPropertyRulesRead(t *testing.T) { }) }) }) + + t.Run("snippets files are under incorrect folder", func(t *testing.T) { + client := mockpapi{} + useClient(&client, func() { + resource.UnitTest(t, resource.TestCase{ + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSRulesTemplate/template_invalid_snippets_folder_json.tf"), + ExpectError: regexp.MustCompile(`Error: Snippets file should be under 'property-snippets' folder instead of output`), + }, + }, + }) + }) + }) } func TestFormatValue(t *testing.T) { diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/property-snippets/template_invalid_json.json b/pkg/providers/property/testdata/TestDSRulesTemplate/property-snippets/template_invalid_json.json new file mode 100644 index 000000000..6b7f8497d --- /dev/null +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/property-snippets/template_invalid_json.json @@ -0,0 +1 @@ +invalid json \ No newline at end of file diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/property-snippets/template_out.json b/pkg/providers/property/testdata/TestDSRulesTemplate/property-snippets/template_out.json new file mode 100644 index 000000000..ad321cfda --- /dev/null +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/property-snippets/template_out.json @@ -0,0 +1,8 @@ +{ + "rules": { + "name": @+#.name#+@, + "children": [ + @+#template "snippets/some-template.json" .#+@ + ] + } +} diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/plain_json.json b/pkg/providers/property/testdata/TestDSRulesTemplate/rules/property-snippets/plain_json.json similarity index 100% rename from pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/plain_json.json rename to pkg/providers/property/testdata/TestDSRulesTemplate/rules/property-snippets/plain_json.json diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/snippets/some-template.json b/pkg/providers/property/testdata/TestDSRulesTemplate/rules/property-snippets/snippets/some-template.json similarity index 100% rename from pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/snippets/some-template.json rename to pkg/providers/property/testdata/TestDSRulesTemplate/rules/property-snippets/snippets/some-template.json diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/snippets/sub/another-template.json b/pkg/providers/property/testdata/TestDSRulesTemplate/rules/property-snippets/snippets/sub/another-template.json similarity index 100% rename from pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/snippets/sub/another-template.json rename to pkg/providers/property/testdata/TestDSRulesTemplate/rules/property-snippets/snippets/sub/another-template.json diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/template_file_not_found.json b/pkg/providers/property/testdata/TestDSRulesTemplate/rules/property-snippets/template_file_not_found.json similarity index 100% rename from pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/template_file_not_found.json rename to pkg/providers/property/testdata/TestDSRulesTemplate/rules/property-snippets/template_file_not_found.json diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/template_in.json b/pkg/providers/property/testdata/TestDSRulesTemplate/rules/property-snippets/template_in.json similarity index 100% rename from pkg/providers/property/testdata/TestDSRulesTemplate/rules/templates/template_in.json rename to pkg/providers/property/testdata/TestDSRulesTemplate/rules/property-snippets/template_in.json diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_file_not_found.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_file_not_found.tf index ad4a6490f..3c1009311 100644 --- a/pkg/providers/property/testdata/TestDSRulesTemplate/template_file_not_found.tf +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_file_not_found.tf @@ -3,7 +3,7 @@ provider "akamai" { } data "akamai_property_rules_template" "test" { - template_file = "testdata/TestDSRulesTemplate/rules/templates/template_file_not_found.json" + template_file = "testdata/TestDSRulesTemplate/rules/property-snippets/template_file_not_found.json" variables { name = "criteriaMustSatisfy" value = "all" diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_json.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_json.tf index 294b2b927..fe5d0b141 100644 --- a/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_json.tf +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_json.tf @@ -3,5 +3,5 @@ provider "akamai" { } data "akamai_property_rules_template" "test" { - template_file = "testdata/TestDSRulesTemplate/output/template_invalid_json.json" + template_file = "testdata/TestDSRulesTemplate/property-snippets/template_invalid_json.json" } diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_snippets_folder_json.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_snippets_folder_json.tf new file mode 100644 index 000000000..294b2b927 --- /dev/null +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_snippets_folder_json.tf @@ -0,0 +1,7 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_property_rules_template" "test" { + template_file = "testdata/TestDSRulesTemplate/output/template_invalid_json.json" +} diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_null_values.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_null_values.tf index 0ac3154f6..c8a2059fd 100644 --- a/pkg/providers/property/testdata/TestDSRulesTemplate/template_null_values.tf +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_null_values.tf @@ -3,7 +3,7 @@ provider "akamai" { } data "akamai_property_rules_template" "test" { - template_file = "testdata/TestDSRulesTemplate/rules/templates/template_in.json" + template_file = "testdata/TestDSRulesTemplate/rules/property-snippets/template_in.json" var_definition_file = "testdata/TestDSRulesTemplate/rules/variables/variableDefinitions.json" var_values_file = "testdata/TestDSRulesTemplate/rules/variables/null_values.json" } diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_var_not_found.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_var_not_found.tf index 72a29716c..0765bcdbf 100644 --- a/pkg/providers/property/testdata/TestDSRulesTemplate/template_var_not_found.tf +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_var_not_found.tf @@ -3,7 +3,7 @@ provider "akamai" { } data "akamai_property_rules_template" "test" { - template_file = "testdata/TestDSRulesTemplate/rules/templates/template_in.json" + template_file = "testdata/TestDSRulesTemplate/rules/property-snippets/template_in.json" variables { name = "criteriaMustSatisfy" value = "all" diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_conflict.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_conflict.tf index 03fe38b48..ad08edb65 100644 --- a/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_conflict.tf +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_conflict.tf @@ -3,7 +3,7 @@ provider "akamai" { } data "akamai_property_rules_template" "test" { - template_file = "testdata/TestDSRulesTemplate/rules/templates/template_in.json" + template_file = "testdata/TestDSRulesTemplate/rules/property-snippets/template_in.json" var_definition_file = "testdata/TestDSRulesTemplate/rules/variables/variableDefinitions.json" var_values_file = "testdata/TestDSRulesTemplate/rules/variables/variables.json" variables { diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_file.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_file.tf index b972bb02b..b1c507843 100644 --- a/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_file.tf +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_file.tf @@ -3,7 +3,7 @@ provider "akamai" { } data "akamai_property_rules_template" "test" { - template_file = "testdata/TestDSRulesTemplate/rules/templates/template_in.json" + template_file = "testdata/TestDSRulesTemplate/rules/property-snippets/template_in.json" var_definition_file = "testdata/TestDSRulesTemplate/rules/variables/variableDefinitions.json" var_values_file = "testdata/TestDSRulesTemplate/rules/variables/variables.json" } diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_file_not_found.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_file_not_found.tf index 7dc98306a..1770b528d 100644 --- a/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_file_not_found.tf +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_file_not_found.tf @@ -3,7 +3,7 @@ provider "akamai" { } data "akamai_property_rules_template" "test" { - template_file = "testdata/TestDSRulesTemplate/rules/templates/template_in.json" + template_file = "testdata/TestDSRulesTemplate/rules/property-snippets/template_in.json" var_definition_file = "invalid_path" var_values_file = "testdata/TestDSRulesTemplate/rules/variables/variables.json" } diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_invalid_type.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_invalid_type.tf index 9e535a6bf..ac654eb40 100644 --- a/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_invalid_type.tf +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_invalid_type.tf @@ -3,7 +3,7 @@ provider "akamai" { } data "akamai_property_rules_template" "test" { - template_file = "testdata/TestDSRulesTemplate/rules/templates/template_in.json" + template_file = "testdata/TestDSRulesTemplate/rules/property-snippets/template_in.json" variables { name = "criteriaMustSatisfy" value = "all" diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_invalid_value.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_invalid_value.tf index 1ecbc2d6f..9d0395abd 100644 --- a/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_invalid_value.tf +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_invalid_value.tf @@ -3,7 +3,7 @@ provider "akamai" { } data "akamai_property_rules_template" "test" { - template_file = "testdata/TestDSRulesTemplate/rules/templates/template_in.json" + template_file = "testdata/TestDSRulesTemplate/rules/property-snippets/template_in.json" variables { name = "criteriaMustSatisfy" value = "all" diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_map.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_map.tf index 975295ad3..4c3132802 100644 --- a/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_map.tf +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_vars_map.tf @@ -3,7 +3,7 @@ provider "akamai" { } data "akamai_property_rules_template" "test" { - template_file = "testdata/TestDSRulesTemplate/rules/templates/template_in.json" + template_file = "testdata/TestDSRulesTemplate/rules/property-snippets/template_in.json" variables { name = "criteriaMustSatisfy" value = "all" From 0bf14ff5eb0a5a6eb547b8509267c48f0fe9f112 Mon Sep 17 00:00:00 2001 From: Neha Ghate Date: Tue, 9 Feb 2021 11:58:30 -0500 Subject: [PATCH 162/215] bug/DEVOPSPROV-1394_restriction_on_adding_snippet_files_to_a_folder:added document --- docs/data-sources/property_rules_template.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/data-sources/property_rules_template.md b/docs/data-sources/property_rules_template.md index decb83126..17da07401 100644 --- a/docs/data-sources/property_rules_template.md +++ b/docs/data-sources/property_rules_template.md @@ -24,7 +24,7 @@ You can pass user-defined variables by supplying either: You can split each template out into a series of smaller template files. To add them to this data source, you need to include them in the currently loaded file, which corresponds to the value in the `template_file` argument. For example, to -include `example-file.json` from the `template` directory, use this syntax +include `example-file.json` from the `property-snippets` directory, use this syntax including the quotes: `"#include:example-file.json"`. All files are resolved in relation to the directory that contains the starting template file. @@ -56,7 +56,7 @@ In this second example, the variables defined refer to files shared with a [Prop ```hcl data "akamai_property_rules_template" "akarules" { - template_file = abspath("${path.root}/templates/main.json") + template_file = abspath("${path.root}/property-snippets/main.json") var_definition_file = abspath("${path.root}/environments/variableDefinitions.json") var_values_file = abspath("${path.root}/environments/dev.example.com/variables.json") } @@ -66,7 +66,7 @@ data "akamai_property_rules_template" "akarules" { Here's an example of what a JSON-based template file with its nested templates might look like: -templates/main.json: +property-snippets/main.json: ```json { "rules": { @@ -94,7 +94,7 @@ You can then define a Terraform configuration file like this, which pulls in the ```hcl data "akamai_property_rules_template" "example" { - template_file = abspath("${path.root}/templates/main.json") + template_file = abspath("${path.root}/property-snippets/main.json") variables { name = "secure" value = "false" From 7bab224dbf72fd89624ea32da98d42b945ea2e46 Mon Sep 17 00:00:00 2001 From: Edward Lynes Date: Tue, 9 Feb 2021 13:49:37 -0500 Subject: [PATCH 163/215] property type check. fix zone bug. fix dc error msg --- CHANGELOG.md | 2 ++ pkg/providers/dns/resource_akamai_dns_zone.go | 2 +- .../gtm/resource_akamai_gtm_datacenter.go | 4 +-- .../gtm/resource_akamai_gtm_property.go | 29 +++++++++++++++---- 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2494ad25..241f5acc5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ * Fail on attempted Zone deletion. Not supported. * Create SOA and NS Records on zone read if don't exist. * Add HTTPS, SVCB record support +* GTM + * Add validation for property type and traffic targets combination ## 1.2.0 (Jan 14, 2021) Identity and Access Management support diff --git a/pkg/providers/dns/resource_akamai_dns_zone.go b/pkg/providers/dns/resource_akamai_dns_zone.go index d999b167d..04b6c9416 100644 --- a/pkg/providers/dns/resource_akamai_dns_zone.go +++ b/pkg/providers/dns/resource_akamai_dns_zone.go @@ -645,7 +645,7 @@ func checkZoneSOAandNSRecords(ctx context.Context, meta akamai.OperationMeta, zo return err } } - if len(resp.Recordsets) >= 2 { + if resp != nil && len(resp.Recordsets) >= 2 { return nil } diff --git a/pkg/providers/gtm/resource_akamai_gtm_datacenter.go b/pkg/providers/gtm/resource_akamai_gtm_datacenter.go index b7d10a0ed..c86a29c74 100644 --- a/pkg/providers/gtm/resource_akamai_gtm_datacenter.go +++ b/pkg/providers/gtm/resource_akamai_gtm_datacenter.go @@ -194,7 +194,7 @@ func resourceGTMv1DatacenterCreate(ctx context.Context, d *schema.ResourceData, logger.Errorf("Datacenter Create failed: %s", err.Error()) return append(diags, diag.Diagnostic{ Severity: diag.Error, - Summary: "Datacenter Create failed: %s", + Summary: "Datacenter Create failed", Detail: err.Error(), }) } @@ -222,7 +222,7 @@ func resourceGTMv1DatacenterCreate(ctx context.Context, d *schema.ResourceData, logger.Errorf("Datacenter Create failed [%s]", err.Error()) return append(diags, diag.Diagnostic{ Severity: diag.Error, - Summary: "Datacenter Create failed: %s", + Summary: "Datacenter Create failed", Detail: err.Error(), }) } diff --git a/pkg/providers/gtm/resource_akamai_gtm_property.go b/pkg/providers/gtm/resource_akamai_gtm_property.go index 29556fcc7..d9e037296 100644 --- a/pkg/providers/gtm/resource_akamai_gtm_property.go +++ b/pkg/providers/gtm/resource_akamai_gtm_property.go @@ -175,7 +175,7 @@ func resourceGTMv1Property() *schema.Resource { }, "traffic_target": { Type: schema.TypeList, - Required: true, + Optional: true, MinItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -364,6 +364,21 @@ func resourceGTMv1PropertyCreate(ctx context.Context, d *schema.ResourceData, m return diag.FromErr(err) } + propertyType, err := tools.GetStringValue("type", d) + if err != nil { + return diag.FromErr(err) + } + // Static properties cannot have traffic_targets. Non Static properties must + traffTargList, err := tools.GetInterfaceArrayValue("traffic_target", d) + if strings.ToUpper(propertyType) == "STATIC" && err == nil && (traffTargList != nil && len(traffTargList) > 0) { + logger.Errorf("Property %s Create failed. Static property cannot have traffic targets", propertyName) + return diag.FromErr(fmt.Errorf("Property Create failed. Static property cannot have traffic targets")) + } + if strings.ToUpper(propertyType) != "STATIC" && (err != nil || (traffTargList == nil || len(traffTargList) < 1)) { + logger.Errorf("Property %s Create failed. Property must have one or more traffic targets", propertyName) + return diag.FromErr(fmt.Errorf("Property Create failed. Property must have one or more traffic targets")) + } + logger.Infof("Creating property [%s] in domain [%s]", propertyName, domain) newProp, err := populateNewPropertyObject(ctx, meta, d, m) if err != nil { @@ -596,9 +611,9 @@ func populatePropertyObject(ctx context.Context, d *schema.ResourceData, prop *g if err == nil { prop.Name = vstr } - vstr, err = tools.GetStringValue("type", d) + ptype, err := tools.GetStringValue("type", d) if err == nil { - prop.Type = vstr + prop.Type = ptype } vstr, err = tools.GetStringValue("score_aggregation_type", d) if err == nil { @@ -794,7 +809,9 @@ func populatePropertyObject(ctx context.Context, d *schema.ResourceData, prop *g return fmt.Errorf("Property Object could not be populated: %v", err.Error()) } - populateTrafficTargetObject(ctx, d, prop, m) + if strings.ToUpper(ptype) != "STATIC" { + populateTrafficTargetObject(ctx, d, prop, m) + } populateStaticRRSetObject(ctx, meta, d, prop) populateLivenessTestObject(ctx, meta, d, prop) @@ -856,7 +873,9 @@ func populateTerraformPropertyState(d *schema.ResourceData, prop *gtm.Property, logger.Errorf("Invalid configuration: %s", err.Error()) } } - populateTerraformTrafficTargetState(d, prop, m) + if strings.ToUpper(prop.Type) != "STATIC" { + populateTerraformTrafficTargetState(d, prop, m) + } populateTerraformStaticRRSetState(d, prop, m) populateTerraformLivenessTestState(d, prop, m) From bc022ec4cc9f57408f58b7a7d8e35b1f66942f25 Mon Sep 17 00:00:00 2001 From: Neha Ghate Date: Tue, 9 Feb 2021 14:28:23 -0500 Subject: [PATCH 164/215] bug/DEVOPSPROV-1394_restriction_on_adding_snippet_files_to_a_folder:added restriction for snippets files to be json --- .../data_akamai_property_rules_template.go | 2 ++ .../data_akamai_property_rules_template_test.go | 15 +++++++++++++++ .../property-snippets/sub/some-template.tmpl | 1 + .../property-snippets/template_invalid_json.json | 8 ++++++++ .../template_invalid_snippets_file_not_json.tf | 7 +++++++ 5 files changed, 33 insertions(+) create mode 100644 pkg/providers/property/testdata/TestDSRulesTemplate/output/property-snippets/sub/some-template.tmpl create mode 100644 pkg/providers/property/testdata/TestDSRulesTemplate/output/property-snippets/template_invalid_json.json create mode 100644 pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_snippets_file_not_json.tf diff --git a/pkg/providers/property/data_akamai_property_rules_template.go b/pkg/providers/property/data_akamai_property_rules_template.go index 278b97b36..3f8d517da 100644 --- a/pkg/providers/property/data_akamai_property_rules_template.go +++ b/pkg/providers/property/data_akamai_property_rules_template.go @@ -161,6 +161,8 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m logger.Warnf("invalid JSON result found in template snippet json here %s: ", f) diags = append(diags, diag.Errorf("invalid JSON result found in template snippet json here %s: %s", f, err)...) } + } else { + return diag.FromErr(fmt.Errorf("Snippets file under 'property-snippets' folder should have .json files. Invalid file %s ",f )) } templateStr, err := convertToTemplate(f) if err != nil { diff --git a/pkg/providers/property/data_akamai_property_rules_template_test.go b/pkg/providers/property/data_akamai_property_rules_template_test.go index c747fedb7..0221d0792 100644 --- a/pkg/providers/property/data_akamai_property_rules_template_test.go +++ b/pkg/providers/property/data_akamai_property_rules_template_test.go @@ -187,6 +187,21 @@ func TestDataAkamaiPropertyRulesRead(t *testing.T) { }) }) }) + + t.Run("snippets files are non-json invalid error", func(t *testing.T) { + client := mockpapi{} + useClient(&client, func() { + resource.UnitTest(t, resource.TestCase{ + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSRulesTemplate/template_invalid_snippets_file_not_json.tf"), + ExpectError: regexp.MustCompile(`Error: Snippets file under 'property-snippets' folder should have .json files`), + }, + }, + }) + }) + }) } func TestFormatValue(t *testing.T) { diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/output/property-snippets/sub/some-template.tmpl b/pkg/providers/property/testdata/TestDSRulesTemplate/output/property-snippets/sub/some-template.tmpl new file mode 100644 index 000000000..6b7f8497d --- /dev/null +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/output/property-snippets/sub/some-template.tmpl @@ -0,0 +1 @@ +invalid json \ No newline at end of file diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/output/property-snippets/template_invalid_json.json b/pkg/providers/property/testdata/TestDSRulesTemplate/output/property-snippets/template_invalid_json.json new file mode 100644 index 000000000..b735f877d --- /dev/null +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/output/property-snippets/template_invalid_json.json @@ -0,0 +1,8 @@ +{ + "rules": { + "name": "${env.name}", + "children": [ + "#include:snippets/sub/some-template.tmpl" + ] + } +} \ No newline at end of file diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_snippets_file_not_json.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_snippets_file_not_json.tf new file mode 100644 index 000000000..75baad3e7 --- /dev/null +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_snippets_file_not_json.tf @@ -0,0 +1,7 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_property_rules_template" "test" { + template_file = "testdata/TestDSRulesTemplate/output/property-snippets/template_invalid_json.json" +} From ddaac9a0a4845dad4d9fd55e66200152828af057 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Tue, 9 Feb 2021 14:40:12 -0600 Subject: [PATCH 165/215] Add support for attack group condition exception white space diff suppress --- pkg/providers/appsec/diff_suppress_funcs.go | 29 +++ ...appsec_attack_group_condition_exception.go | 222 +++++++++++++----- ...source_akamai_appsec_reputation_profile.go | 7 +- 3 files changed, 191 insertions(+), 67 deletions(-) diff --git a/pkg/providers/appsec/diff_suppress_funcs.go b/pkg/providers/appsec/diff_suppress_funcs.go index a31c9b6f0..7916e83b6 100644 --- a/pkg/providers/appsec/diff_suppress_funcs.go +++ b/pkg/providers/appsec/diff_suppress_funcs.go @@ -1,6 +1,7 @@ package appsec import ( + "bytes" "encoding/json" "reflect" "sort" @@ -9,6 +10,34 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) +func suppressEquivalentJsonDiffsGeneric(k, old, new string, d *schema.ResourceData) bool { + ob := bytes.NewBufferString("") + if err := json.Compact(ob, []byte(old)); err != nil { + return false + } + + nb := bytes.NewBufferString("") + if err := json.Compact(nb, []byte(new)); err != nil { + return false + } + + return jsonBytesEqual(ob.Bytes(), nb.Bytes()) +} + +func jsonBytesEqual(b1, b2 []byte) bool { + var o1 interface{} + if err := json.Unmarshal(b1, &o1); err != nil { + return false + } + + var o2 interface{} + if err := json.Unmarshal(b2, &o2); err != nil { + return false + } + + return reflect.DeepEqual(o1, o2) +} + func suppressEquivalentJSONDiffs(k, old, new string, d *schema.ResourceData) bool { return compareMatchTargetsJSON(old, new) diff --git a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go index 05e1e8346..470866838 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "strconv" + "strings" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/appsec" "github.com/akamai/terraform-provider-akamai/v2/pkg/akamai" @@ -45,9 +46,10 @@ func resourceAttackGroupConditionException() *schema.Resource { Required: true, }, "condition_exception": { - Type: schema.TypeString, - Required: true, - ValidateFunc: validation.StringIsJSON, + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringIsJSON, + DiffSuppressFunc: suppressEquivalentJsonDiffsGeneric, }, "output_text": { Type: schema.TypeString, @@ -64,31 +66,54 @@ func resourceAttackGroupConditionExceptionRead(ctx context.Context, d *schema.Re logger := meta.Log("APPSEC", "resourceAttackGroupConditionExceptionRead") getAttackGroupConditionException := appsec.GetAttackGroupConditionExceptionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAttackGroupConditionException.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + getAttackGroupConditionException.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAttackGroupConditionException.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + getAttackGroupConditionException.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAttackGroupConditionException.PolicyID = policyid + policyid := s[2] - attackgroup, err := tools.GetStringValue("attack_group", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - getAttackGroupConditionException.Group = attackgroup + getAttackGroupConditionException.PolicyID = policyid + + attackgroup := s[3] + + getAttackGroupConditionException.Group = attackgroup + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAttackGroupConditionException.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAttackGroupConditionException.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAttackGroupConditionException.PolicyID = policyid + attackgroup, err := tools.GetStringValue("attack_group", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + getAttackGroupConditionException.Group = attackgroup + } attackgroupconditionexception, err := client.GetAttackGroupConditionException(ctx, getAttackGroupConditionException) if err != nil { logger.Errorf("calling 'getAttackGroupConditionException': %s", err.Error()) @@ -105,8 +130,31 @@ func resourceAttackGroupConditionExceptionRead(ctx context.Context, d *schema.Re return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } } + if err := d.Set("config_id", getAttackGroupConditionException.ConfigID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("version", getAttackGroupConditionException.Version); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("security_policy_id", getAttackGroupConditionException.PolicyID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if err := d.Set("attack_group", getAttackGroupConditionException.Group); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } - d.SetId(strconv.Itoa(getAttackGroupConditionException.ConfigID)) + jsonBody, err := json.Marshal(attackgroupconditionexception) + if err != nil { + return diag.FromErr(err) + } + if err := d.Set("condition_exception", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + d.SetId(fmt.Sprintf("%d:%d:%s:%s", getAttackGroupConditionException.ConfigID, getAttackGroupConditionException.Version, getAttackGroupConditionException.PolicyID, getAttackGroupConditionException.Group)) return nil } @@ -118,31 +166,54 @@ func resourceAttackGroupConditionExceptionDelete(ctx context.Context, d *schema. logger := meta.Log("APPSEC", "resourceAttackGroupConditionExceptionRemove") removeAttackGroupConditionException := appsec.RemoveAttackGroupConditionExceptionRequest{} + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeAttackGroupConditionException.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeAttackGroupConditionException.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeAttackGroupConditionException.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + removeAttackGroupConditionException.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeAttackGroupConditionException.PolicyID = policyid + policyid := s[2] - attackgroup, err := tools.GetStringValue("attack_group", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - removeAttackGroupConditionException.Group = attackgroup + removeAttackGroupConditionException.PolicyID = policyid + + attackgroup := s[3] + + removeAttackGroupConditionException.Group = attackgroup + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeAttackGroupConditionException.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeAttackGroupConditionException.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeAttackGroupConditionException.PolicyID = policyid + attackgroup, err := tools.GetStringValue("attack_group", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + removeAttackGroupConditionException.Group = attackgroup + } _, errd := client.RemoveAttackGroupConditionException(ctx, removeAttackGroupConditionException) if errd != nil { logger.Errorf("calling 'RemoveAttackGroupConditionException': %s", errd.Error()) @@ -165,31 +236,54 @@ func resourceAttackGroupConditionExceptionUpdate(ctx context.Context, d *schema. rawJSON := (json.RawMessage)(jsonPayloadRaw) updateAttackGroupConditionException.JsonPayloadRaw = rawJSON + if d.Id() != "" && strings.Contains(d.Id(), ":") { + s := strings.Split(d.Id(), ":") - configid, err := tools.GetIntValue("config_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAttackGroupConditionException.ConfigID = configid + configid, errconv := strconv.Atoi(s[0]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateAttackGroupConditionException.ConfigID = configid - version, err := tools.GetIntValue("version", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAttackGroupConditionException.Version = version + version, errconv := strconv.Atoi(s[1]) + if errconv != nil { + return diag.FromErr(errconv) + } + updateAttackGroupConditionException.Version = version - policyid, err := tools.GetStringValue("security_policy_id", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAttackGroupConditionException.PolicyID = policyid + policyid := s[2] - attackgroup, err := tools.GetStringValue("attack_group", d) - if err != nil && !errors.Is(err, tools.ErrNotFound) { - return diag.FromErr(err) - } - updateAttackGroupConditionException.Group = attackgroup + updateAttackGroupConditionException.PolicyID = policyid + + attackgroup := s[3] + updateAttackGroupConditionException.Group = attackgroup + + } else { + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAttackGroupConditionException.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAttackGroupConditionException.Version = version + + policyid, err := tools.GetStringValue("security_policy_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAttackGroupConditionException.PolicyID = policyid + + attackgroup, err := tools.GetStringValue("attack_group", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + updateAttackGroupConditionException.Group = attackgroup + } _, erru := client.UpdateAttackGroupConditionException(ctx, updateAttackGroupConditionException) if erru != nil { logger.Errorf("calling 'updateAttackGroupConditionException': %s", erru.Error()) diff --git a/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go b/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go index 35b432775..a229bec61 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go +++ b/pkg/providers/appsec/resource_akamai_appsec_reputation_profile.go @@ -39,9 +39,10 @@ func resourceReputationProfile() *schema.Resource { Required: true, }, "reputation_profile": { - Type: schema.TypeString, - Required: true, - ValidateFunc: validation.StringIsJSON, + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringIsJSON, + DiffSuppressFunc: suppressEquivalentJsonDiffsGeneric, }, "reputation_profile_id": { Type: schema.TypeInt, From 6546cd2ea87bf0b0d144d0a6e0f66f5e02d4f065 Mon Sep 17 00:00:00 2001 From: Neha Ghate Date: Tue, 9 Feb 2021 15:57:44 -0500 Subject: [PATCH 166/215] added doc changes --- docs/data-sources/property_rules_template.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/data-sources/property_rules_template.md b/docs/data-sources/property_rules_template.md index 17da07401..cc343b22e 100644 --- a/docs/data-sources/property_rules_template.md +++ b/docs/data-sources/property_rules_template.md @@ -25,7 +25,8 @@ You can split each template out into a series of smaller template files. To add them to this data source, you need to include them in the currently loaded file, which corresponds to the value in the `template_file` argument. For example, to include `example-file.json` from the `property-snippets` directory, use this syntax -including the quotes: `"#include:example-file.json"`. All files are resolved in +including the quotes: `"#include:example-file.json"`. Please make sure the `property-snippets` +folder only contain `.json` files. All files are resolved in relation to the directory that contains the starting template file. ## Inserting variables in a template From a1ac1b3aa10a72ce644ebb2408865a6342cfb3a5 Mon Sep 17 00:00:00 2001 From: Neha Ghate Date: Wed, 10 Feb 2021 10:33:12 -0500 Subject: [PATCH 167/215] changes in doc --- docs/data-sources/property_rules_template.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/data-sources/property_rules_template.md b/docs/data-sources/property_rules_template.md index cc343b22e..cbdffaadb 100644 --- a/docs/data-sources/property_rules_template.md +++ b/docs/data-sources/property_rules_template.md @@ -25,9 +25,8 @@ You can split each template out into a series of smaller template files. To add them to this data source, you need to include them in the currently loaded file, which corresponds to the value in the `template_file` argument. For example, to include `example-file.json` from the `property-snippets` directory, use this syntax -including the quotes: `"#include:example-file.json"`. Please make sure the `property-snippets` -folder only contain `.json` files. All files are resolved in -relation to the directory that contains the starting template file. +including the quotes: `"#include:example-file.json"`. Make sure the property-snippets folder contains only .json files. +All files are resolved in relation to the directory that contains the starting template file. ## Inserting variables in a template You can also add variables to a template by using a string like `“${env.}"`. You'll need the quotes here too. From 607554633ba786ac3bbba90f14b1afdd76c393a1 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 10 Feb 2021 09:45:42 -0600 Subject: [PATCH 168/215] Fix custom rules import export --- .../appsec/resource_akamai_appsec_custom_rule.go | 16 +++++++++++++--- pkg/providers/appsec/templates.go | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go index ed03b7859..ba66cc0d1 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule.go @@ -34,9 +34,10 @@ func resourceCustomRule() *schema.Resource { Required: true, }, "custom_rule": { - Type: schema.TypeString, - Required: true, - ValidateFunc: validation.StringIsJSON, + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringIsJSON, + DiffSuppressFunc: suppressEquivalentJsonDiffsGeneric, }, "custom_rule_id": { Type: schema.TypeInt, @@ -226,6 +227,15 @@ func resourceCustomRuleRead(ctx context.Context, d *schema.ResourceData, m inter return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + jsonBody, err := json.Marshal(customrule) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("custom_rule", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d", getCustomRule.ConfigID, customrule.ID)) return nil diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 2afe1b627..a701f23b9 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -188,7 +188,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"akamai_appsec_eval_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"akamai_appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} - otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}}{{if $index}},{{end}}\nresource \"akamai_appsec_custom_rule\" \"akamai_appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} + otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}} \nresource \"akamai_appsec_custom_rule\" \"akamai_appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"akamai_appsec_custom_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} otm["MatchTarget.tf"] = &OutputTemplate{TemplateName: "MatchTarget.tf", TableTitle: "MatchTarget", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .MatchTargets.WebsiteTargets}}\nresource \"akamai_appsec_match_target\" \"akamai_appsec_match_target_{{.ID}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}\n {{range $index, $element := .MatchTargets.APITargets}}\nresource \"akamai_appsec_match_target\" \"akamai_appsec_match_target_{{.ID}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n match_target = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} otm["PenaltyBox.tf"] = &OutputTemplate{TemplateName: "PenaltyBox.tf", TableTitle: "PenaltyBox", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if .PenaltyBox.Action}} \nresource \"akamai_appsec_penalty_box\" \"akamai_appsec_penalty_box_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n penalty_box_protection = \"{{.PenaltyBox.PenaltyBoxProtection}}\" \n penalty_box_action = \"{{.PenaltyBox.Action}}\" \n}\n{{end}}{{end}}"} From 30f99055dd6c6212c34a485cfcd2aa74eded0342 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 10 Feb 2021 10:12:21 -0600 Subject: [PATCH 169/215] Remove rule_id quotes from EvalRuleConditionException.tf output --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index a701f23b9..443ecf7b2 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -186,7 +186,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"akamai_appsec_attack_group_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}"} otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"akamai_appsec_eval_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = \"{{.ID}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"akamai_appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}} \nresource \"akamai_appsec_custom_rule\" \"akamai_appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"akamai_appsec_custom_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} From b720886ba76700158297044dcb3be894357ea27a Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 10 Feb 2021 10:23:42 -0600 Subject: [PATCH 170/215] Fix import export for custom_deny --- .../appsec/resource_akamai_appsec_custom_deny.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go b/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go index c50c2f360..81e8a0aa8 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_deny.go @@ -39,9 +39,10 @@ func resourceCustomDeny() *schema.Resource { Required: true, }, "custom_deny": { - Type: schema.TypeString, - Required: true, - ValidateFunc: validation.StringIsJSON, + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringIsJSON, + DiffSuppressFunc: suppressEquivalentJsonDiffsGeneric, }, "custom_deny_id": { Type: schema.TypeString, @@ -255,6 +256,15 @@ func resourceCustomDenyRead(ctx context.Context, d *schema.ResourceData, m inter return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + jsonBody, err := json.Marshal(customdeny) + if err != nil { + return diag.FromErr(err) + } + + if err := d.Set("custom_deny", string(jsonBody)); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + d.SetId(fmt.Sprintf("%d:%d:%s", getCustomDeny.ConfigID, getCustomDeny.Version, customdeny.ID)) return nil From 653f0f6c9b82eff1cca2c5f71a4867f4cb21c4d1 Mon Sep 17 00:00:00 2001 From: "Narra, Vinnuth" Date: Wed, 10 Feb 2021 11:36:51 -0500 Subject: [PATCH 171/215] Switching back to previous version when activation produce errors --- pkg/providers/property/resource_akamai_property_activation.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/providers/property/resource_akamai_property_activation.go b/pkg/providers/property/resource_akamai_property_activation.go index fac5de7dc..4e259a83a 100644 --- a/pkg/providers/property/resource_akamai_property_activation.go +++ b/pkg/providers/property/resource_akamai_property_activation.go @@ -134,6 +134,7 @@ func resourcePropertyActivationCreate(ctx context.Context, d *schema.ResourceDat ValidateRules: true, }) if err != nil { + d.Partial(true) return diag.FromErr(err) } @@ -532,6 +533,8 @@ func resourcePropertyActivationUpdate(ctx context.Context, d *schema.ResourceDat ValidateRules: true, }) if err != nil { + // Reverting to previous state(property version in this case) when error occurs. + d.Partial(true) return diag.FromErr(err) } From 7b249d5a0472c28fdb3870ba2d4b29b01ce84a48 Mon Sep 17 00:00:00 2001 From: Neha Ghate Date: Wed, 10 Feb 2021 11:39:57 -0500 Subject: [PATCH 172/215] bug/DEVOPSPROV-1394_restriction_on_adding_snippet_files_to_a_folder:changes in doc --- docs/data-sources/property_rules_template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data-sources/property_rules_template.md b/docs/data-sources/property_rules_template.md index cbdffaadb..3f3cd6fca 100644 --- a/docs/data-sources/property_rules_template.md +++ b/docs/data-sources/property_rules_template.md @@ -25,7 +25,7 @@ You can split each template out into a series of smaller template files. To add them to this data source, you need to include them in the currently loaded file, which corresponds to the value in the `template_file` argument. For example, to include `example-file.json` from the `property-snippets` directory, use this syntax -including the quotes: `"#include:example-file.json"`. Make sure the property-snippets folder contains only .json files. +including the quotes: `"#include:example-file.json"`. Make sure the `property-snippets` folder contains only `.json` files. All files are resolved in relation to the directory that contains the starting template file. ## Inserting variables in a template From 18d31040127886a0e905b887349e0b3fc2517d19 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 10 Feb 2021 13:22:11 -0600 Subject: [PATCH 173/215] Add if or condition to rules --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 443ecf7b2..2c2e7ad7d 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -197,7 +197,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"akamai_appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"akamai_appsec_reputation_profile_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"akamai_appsec_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_rule_condition_exception\" \"akamai_appsec_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if or .Conditions .Exception}}\nresource \"akamai_appsec_rule_condition_exception\" \"akamai_appsec_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}} \nresource \"akamai_appsec_security_policy\" \"akamai_appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"akamai_appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n mode = \"REPLACE\" \n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.Siem.EnableSiem}} \n enable_for_all_policies = {{.Siem.EnableForAllPolicies}}\n enable_botman_siem = {{.Siem.EnabledBotmanSiemEvents}}\n siem_id = {{.Siem.SiemDefinitionID}}\n security_policy_ids = [{{ range $index, $element := .Siem.FirewallPolicyIds}}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n"} From ebdac47653d02b17a2cf400ec5ae49b99f97a7c3 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 10 Feb 2021 16:55:13 -0600 Subject: [PATCH 174/215] Correct attack groups datasource text output --- .../data_akamai_appsec_attack_group_condition_exception.go | 2 +- pkg/providers/appsec/templates.go | 6 ++++-- .../AttackGroupConditionException.json | 3 +-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_attack_group_condition_exception.go b/pkg/providers/appsec/data_akamai_appsec_attack_group_condition_exception.go index e9d75e5c5..d29a11ca0 100644 --- a/pkg/providers/appsec/data_akamai_appsec_attack_group_condition_exception.go +++ b/pkg/providers/appsec/data_akamai_appsec_attack_group_condition_exception.go @@ -87,7 +87,7 @@ func dataSourceAttackGroupConditionExceptionRead(ctx context.Context, d *schema. ots := OutputTemplates{} InitTemplates(ots) - outputtext, err := RenderTemplates(ots, "RuleConditionException", attackgroupconditionexception) + outputtext, err := RenderTemplates(ots, "AttackGroupConditionException", attackgroupconditionexception) if err == nil { if err := d.Set("output_text", outputtext); err != nil { diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 2c2e7ad7d..3d9e43d06 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -22,10 +22,10 @@ type OutputTemplate struct { func GetTemplate(ots map[string]*OutputTemplate, key string) (*OutputTemplate, error) { if f, ok := ots[key]; ok && f != nil { - // fmt.Printf("%s is in the OutputTemplate >> %+v\n", key, f) + //fmt.Printf("%s is in the OutputTemplate >> %+v\n", key, f) return f, nil } else { - // fmt.Printf("%s is NOT in the OutputTemplate!\n", key) + //fmt.Printf("%s is NOT in the OutputTemplate!\n", key) return nil, fmt.Errorf("Error not found") } } @@ -125,6 +125,8 @@ func InitTemplates(otm map[string]*OutputTemplate) { //Extensions otm["apiEndpointsDS"] = &OutputTemplate{TemplateName: "apiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} + otm["AttackGroupConditionException"] = &OutputTemplate{TemplateName: "AttackGroupConditionException", TableTitle: "Exceptions|Advanced Exceptions", TemplateType: "TABULAR", TemplateString: "{{if .Exception}}True{{else}}False{{end}}|{{if .AdvancedExceptionsList }}True{{else}}False{{end}}"} + otm["policyApiEndpointsDS"] = &OutputTemplate{TemplateName: "policyApiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} otm["apiHostnameCoverageDS"] = &OutputTemplate{TemplateName: "apiHostnameCoverageDS", TableTitle: "Config ID|Config Name|Version|Status|Has Match Target|Hostname", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .HostnameCoverage}}{{if $index}},{{end}}{{.Configuration.ID}}|{{.Configuration.Name}}|{{.Configuration.Version}}|{{.Status}}|{{.HasMatchTarget}}|{{.Hostname}}{{end}}"} otm["apiRequestConstraintsDS"] = &OutputTemplate{TemplateName: "apiRequestConstraintsDS", TableTitle: "ID|Action", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Action}}{{end}}"} diff --git a/pkg/providers/appsec/testdata/TestDSAttackGroupConditionException/AttackGroupConditionException.json b/pkg/providers/appsec/testdata/TestDSAttackGroupConditionException/AttackGroupConditionException.json index d3c6f6c52..c137d6dae 100644 --- a/pkg/providers/appsec/testdata/TestDSAttackGroupConditionException/AttackGroupConditionException.json +++ b/pkg/providers/appsec/testdata/TestDSAttackGroupConditionException/AttackGroupConditionException.json @@ -1,4 +1,4 @@ -[ + { "ruleActions": [ { @@ -1283,4 +1283,3 @@ } ] } -] \ No newline at end of file From 00dd3091a9c014b5f8fe98a98237d71c038dfdd6 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 10 Feb 2021 17:15:23 -0600 Subject: [PATCH 175/215] Fix export for advanced exceptions --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 3d9e43d06..a12f07d09 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -186,7 +186,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"akamai_appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} otm["ApiRequestConstraints.tf"] = &OutputTemplate{TemplateName: "ApiRequestConstraints.tf", TableTitle: "ApiRequestConstraints", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if .APIRequestConstraints.Action}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_{{$prev_secpolicy}}{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n action = \"{{.APIRequestConstraints.Action}}\" \n }{{end}}\n {{range $index, $element := .APIRequestConstraints.APIEndpoints}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_override_{{.ID}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n api_endpoint_id = \"{{.ID}}\" \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"akamai_appsec_attack_group_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}"} + otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}{{ if or .Exception .AdvancedExceptionsList }}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"akamai_appsec_eval_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"akamai_appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} From 8d743ca8d5941504b73b6f526582ea8ac6e9c88f Mon Sep 17 00:00:00 2001 From: Corin Caliendo Date: Thu, 11 Feb 2021 09:45:44 -0500 Subject: [PATCH 176/215] Editorial standard updates --- docs/data-sources/dns_authorities_set.md | 2 +- docs/guides/faq.md | 6 +- docs/resources/dns_record.md | 271 ++++++++++++----------- docs/resources/dns_zone.md | 32 +-- docs/resources/gtm_asmap.md | 40 ++-- docs/resources/gtm_cidrmap.md | 43 ++-- docs/resources/gtm_datacenter.md | 69 +++--- docs/resources/gtm_domain.md | 107 +++++---- docs/resources/gtm_geomap.md | 41 ++-- docs/resources/gtm_property.md | 171 +++++++------- docs/resources/gtm_resource.md | 68 +++--- 11 files changed, 421 insertions(+), 429 deletions(-) diff --git a/docs/data-sources/dns_authorities_set.md b/docs/data-sources/dns_authorities_set.md index 7549a3170..7137032ac 100644 --- a/docs/data-sources/dns_authorities_set.md +++ b/docs/data-sources/dns_authorities_set.md @@ -8,7 +8,7 @@ description: |- # akamai_authorities_set -Use `akamai_authorities_set` data source to retrieve a contract's authorities set. You use the authorities set when creating new zones. +Use the `akamai_authorities_set` data source to retrieve a contract's authorities set. You use the authorities set when creating new zones. ## Example usage diff --git a/docs/guides/faq.md b/docs/guides/faq.md index 598c4c214..0357d34b7 100644 --- a/docs/guides/faq.md +++ b/docs/guides/faq.md @@ -36,7 +36,7 @@ Each step will produce or update existing files. ### Via Step By Step Construction 1. Download your existing zone master file configuration (using the API or Control Center) as a backup and reference. -2. Using the zone master file as a reference, create a Terraform configuration representing the existing zone and all contained recordsets. Note: In creating each resource block, make note of `required`, `optional` and `computed` fields. +2. Using the zone master file as a reference, create a Terraform configuration representing the existing zone and all contained recordsets. Note: In creating each resource block, make note of required, optional and computed fields. 3. Use the Terraform Import command to import the existing zone and contained recordsets; singularly and in serial order. 4. (Optional, Recommended) Review and compare the zone master file content and created `terraform.tfstate` to confirm the zone and all recordsets are represented correctly. 5. Execute a `Terraform Plan` on the configuration. The plan should be empty. If not, correct accordingly and repeat until plan is empty and configuration is in sync with the Edge DNS Backend. @@ -66,7 +66,7 @@ Each step will produce or update existing files. ### Via Step By Step Construction 1. Download your existing domain configuration (using the API or Control Center) as a backup and reference. -2. Using the domain download as a reference, create a Terraform configuration representing the existing domain and all contained GTM objects. Note: In creating each resource block, make note of `required`, `optional`, and `computed` fields. +2. Using the domain download as a reference, create a Terraform configuration representing the existing domain and all contained GTM objects. Note: In creating each resource block, make note of required, optional, and computed fields. 3. Run `terraform import`. This command imports the existing domain and contained objects one at a time based on the order in the configuration. 4. (Optional, Recommended) Review domain download content and created `terraform.tfstate` to confirm the domain and all objects are represented correctly. 5. Run `terraform plan` on the configuration. The plan should be empty. If not, correct accordingly and repeat until plan is empty and configuration is in sync with the GTM Backend. @@ -75,4 +75,4 @@ Since Terraform assumes it is the de facto state for any resource it leverages, ## GTM Terraform Resource Field Representation During Plan and/or Apply -When using `terraform plan` or `terraform apply`, Terraform presents fields defined in the configuration and all defined resource fields. Fields are either required, optional or computed as specified in each resource description. Default values for fields will display if not explicitly configured. In many cases, the default will be zero, empty string, or empty list depending on the type. These default or empty values are informational and not included in resource updates. +When using `terraform plan` or `terraform apply`, Terraform presents fields defined in the configuration and all defined resource fields. Fields are either required, optional, or computed as specified in each resource description. Default values for fields will display if not explicitly configured. In many cases, the default will be zero, empty string, or empty list depending on the type. These default or empty values are informational and not included in resource updates. diff --git a/docs/resources/dns_record.md b/docs/resources/dns_record.md index 80a0c6ec8..2a68dafa5 100644 --- a/docs/resources/dns_record.md +++ b/docs/resources/dns_record.md @@ -12,10 +12,11 @@ Use the `akamai_dns_record` resource to configure a DNS record that can integrat ## Example usage -Basic usage: +Here are examples of an A record and a CNAME record. -```hcl -### A Record Example +### An A record example + +``` resource "akamai_dns_record" "origin" { zone = "origin.org" name = "origin.example.org" @@ -24,8 +25,11 @@ resource "akamai_dns_record" "origin" { ttl = 30 target = ["192.0.2.42"] } +``` ### CNAME Record Example + +``` resource "akamai_dns_record" "www" { zone = "example.com" name = "www.example.com" @@ -36,234 +40,233 @@ resource "akamai_dns_record" "www" { } ``` -## Argument reference +## Argument reference [argument-reference] This resource supports these arguments: * `name` - (Required) The DNS record name. This is the node this DNS record is associated with. Also known as an owner name. * `zone` - (Required) The domain zone, including any nested subdomains. * `recordType` - (Required) The DNS record type. -* `ttl` - (Required, Boolean) The time to live. This is a 32-bit signed integer for the time the resource record is cached.
A value of `0` means that the resource record is not cached. It's only used for the transaction in progress and may be useful for extremely volatile data. +* `ttl` - (Required) A boolean indicating whether the time to live (TTL). This is a 32-bit signed integer for the time the resource record is cached.
A value of `0` means that the resource record is not cached. It's only used for the transaction in progress and may be useful for extremely volatile data. -## Required fields per record type +## Additional arguments by record type -This section lists required arguments by record type. These are needed in addition to the ones listed in the argument reference above. +This section lists additional required and optional arguments for specific record types. ### A record An A record requires this argument: -* target - One or more IPv4 addresses, for example, 1.2.3.4. +* `target` - One or more IPv4 addresses, for example, 192.0.2.0. ### AAAA record An AAAA record requires this argument: -* target - One or more IPv6 addresses, for example, 2001:0db8::ff00:0042:8329. +* `target` - One or more IPv6 addresses, for example, 2001:0db8::ff00:0042:8329. ### AFSDB record -An A record requires these arguments: +An AFSDB record requires these arguments: -* target - The domain name of the host having a server for the cell named by the owner name of the resource record. -* subtype- An integer between 0 and 65535, indicating the type of service provided by the host. +* `target` - The domain name of the host having a server for the cell named by the owner name of the resource record. +* `subtype` - An integer between `0` and `65535` that indicates the type of service provided by the host. -### AKAMAICDN Record +### AKAMAICDN record -The following field is required: +An AKAMAICDN record requires this argument: -* target - DNS name representing selected Edge Hostname name+domain. +* `target` - A DNS name representing the selected edge hostname and domain. -### AKAMAITLC Record +### AKAMAITLC record -No additional fields are required. The following fields are Computed. +No additional arguments are needed for AKAMAITLC records. This resource returns these computed fields for this record type: -* dns_name - valid DNS name. -* answer_type - answer type. +* `dns_name` - A valid DNS name. +* `answer_type` - The answer type. -### CAA Record +### CAA record -The following field are required: +A certificate authority authorization (CAA) record requires this argument: -* target - One or more CA Authorizations. Each authorization contains three attributes: flags, property tag and property value. +* `target` - One or more certificate authority authorizations. Each authorization contains three attributes: flags, property tag, and property value. Example: ``` target = ["0 issue \"caa1.example.net\"", "0 issuewild \"ca2.example.org\"", "0 issue ca1.example.net"] ``` -### CERT Record - -The following fields are required: +### CERT record -* type_value - numeric certificate type value -* type_mnemonic - mnemonic certificate type value. -* keytag - value computed for the key embedded in the certificate -* algorithm - identifies the cryptographic algorithm used to create the signature. -* certificate - certificate data +A CERT record requires these arguments: -Note: Type can be configured either as a numeric OR menmonic value. With both set, type_mnemonic takes precedence. +* `type_value` - A numeric certificate type value. +* `type_mnemonic` - A mnemonic certificate type value. +* `keytag` - A value computed for the key embedded in the certificate. +* `algorithm` - The cryptographic algorithm used to create the signature. +* `certificate` - Certificate data. -### CNAME Record +> **Note:** When entering the certificate type, you can enter `type_value`, `type_mnemonic`, or both arguments. If you use both, `type_mnemonic` takes precedence. -The following field is required: +### CNAME record -* target - A domain name that specifies the canonical or primary name for the owner. The owner name is an alias. +A CNAME record requires this argument: -### DNSKEY Record +* `target `- A domain name that specifies the canonical or primary name for the owner. The owner name is an alias. -The following fields are required: +### DNSKEY record -* flags -* protocol - Must have the value 3. The DNSKEY resource record must be treated as invalid during signature verification if it contains a value other than 3. -* algorithm - The public key’s cryptographic algorithm that determines the format of the public key field. -* key - Base 64 encoded value representing the public key, the format of which depends on the algorithm. +A DNSKEY record requires these arguments: -### DS Record +* `flags` +* `protocol` - Set to `3`. If the value isn't `3`, the DNSKEY resource record is treated as invalid during signature verification. +* `algorithm` - The public key’s cryptographic algorithm. This algorithm determines the format of the public key field. +* `key` - A Base64 encoded value representing the public key. The format used depends on the `algorithm`. -The following fields are required: +### DS record -* keytag - The key tag of the DNSKEY resource record referred to by the DS record, in network byte order. -* algorithm - The algorithm number of the DNSKEY resource record referred to by the DS record. -* digest_type - Identifies the algorithm used to construct the digest. -* digest - The base 16 encoded DS record refers to a DNSKEY RR by including a digest of that DNSKEY RR. The digest is calculated by concatenating the canonical form of the fully qualified owner name of the DNSKEY RR with the DNSKEY RDATA, and then applying the digest algorithm. +A DS record requires these arguments: -### HINFO Record +* `keytag` - The key tag of the DNSKEY record that the DS record refers to, in network byte order. +* `algorithm` - The algorithm number of the DNSKEY resource record referred to by the DS record. +* `digest_type` - Identifies the algorithm used to construct the digest. +* `digest` - A base 16 encoded DS record includes a digest of the DNSKEY record it refers to. The digest is conifgured the canonical form of the DNSKEY record's fully qualified owner name with the DNSKEY RDATA, and then applying the digest algorithm. -The following fields are required: +### HINFO record -* hardware - Type of hardware the host uses. A machine name or CPU type may be up to 40 characters taken from the set of uppercase letters, digits, and the two punctuation characters hyphen and slash. It must start with a letter, and end with a letter. -* software - Type of software the host uses. A system name may be up to 40 characters taken from the set of uppercase letters, digits, and the two punctuation characters hyphen and slash. It must start with a letter, and end with a letter or digit. +A HINFO record requires these arguments: -### LOC Record +* `hardware` - The type of hardware the host uses. A machine name or CPU type may be up to 40 characters long and include uppercase letters, digits, hyphens, and slashes. The entry needs to start and to end with an uppercase letter. +* `software` - The type of software the host uses. A system name may be up to 40 characters long and include uppercase letters, digits, hyphens, and slashes. The entry needs to start with an uppercase letter and end with an uppercase letter or a digit. -The following field is required: +### LOC record -* target - A geographical location associated with a domain name. +A LOC record requires this argument: -### MX Record +* `target` - A geographical location associated with a domain name. -The following field is required: +### MX record -* target - One or more domain names that specify a host willing to act as a mail exchange for the owner name. +An MX record supports these arguments: -The following fields are optional depending on configuration type. See [DNS Getting Started Guide](../guides/get_started_dns_zone#working-with-mx-records) for more information. +* `target` - (Required) One or more domain names that specify a host willing to act as a mail exchange for the owner name. +* `priority` - (Optional) The preference value given to this MX record in relation to all other MX records. When a mailer needs to send mail to a certain DNS domain, it first contacts a DNS server for that domain and retrieves all the MX records. It then contacts the mailer with the lowest preference value. This value is ignored if an embedded priority exists in the target. +* `priority_increment` - (Optional) An auto priority increment when multiple targets are provided with no embedded priority. -* priority - The preference value given to the MX record among MX records. When a mailer needs to send mail to a certain DNS domain, it first contacts a DNS server for that domain and retrieves all the MX records. It then contacts the mailer with the lowest preference value. Ignored if an embedded priority exists in the target. -* priority_increment - auto priority increment when multiple targets are provided with no embedded priority. +See [Working with MX records](../guides/get_started_dns_zone#working-with-mx-records) in the [DNS Getting Started Guide](../guides/get_started_dns_zone) for more information. -### NAPTR Record +### NAPTR record -The following fields are required: +An NAPTR record requires these arguments: -* order - A 16-bit unsigned integer specifying the order in which the NAPTR records MUST be processed to ensure the correct ordering of rules. Low numbers are processed before high numbers, and once a NAPTR is found whose rule “matches” the target, the client MUST NOT consider any NAPTRs with a higher value for order (except as noted below for the flagsnapter field). -* preference - A 16-bit unsigned integer that specifies the order in which NAPTR records with equal order values should be processed with low numbers being processed before high numbers. -* flagsnaptr - A containing flags to control aspects of the rewriting and interpretation of the fields in the record. Flags are single characters from the set [A-Z0-9]. The case of the alphabetic characters is not significant. -* service - Specifies the services available down this rewrite path. -* regexp - A String containing a substitution expression that is applied to the original string held by the client in order to construct the next domain name to lookup. -* replacement - The next NAME to query for NAPTR, SRV, or address records depending on the value of the flags field. This MUST be a fully qualified domain name. +* `order` - A 16-bit unsigned integer specifying the order in which the NAPTR records need to be processed to ensure the correct ordering of rules. Low numbers are processed before high numbers. Once a NAPTR is found whose rule matches the target, the client shouldn't consider any NAPTRs with a higher value for order (except as noted below for the flagsnapter field). +* `preference` - A 16-bit unsigned integer that specifies the order in which NAPTR records with equal order values are processed. Low numbers are processed before high numbers. +* `flagsnaptr` - A character string containing flags that control how fields in the record are rewritten and interpreted. Flags are single alphanumeric characters. +* `service` - Specifies the services available down this rewrite path. +* `regexp` - A regular expression string containing a substitution expression. This substitution expression is applied to the original client string in order to construct the next domain name to lookup. +* `replacement` - Depending on the value of the `flags` attribute, the next NAME to query for NAPTR, SRV, or address records. Enter a fully qualified domain name as the value. -### NS Record +### NS record -The following field is required: +An NS record requires these arguments: -* target - One or more domain names that specify authoritative hosts for the specified class and domain. +* `target` - One or more domain names that specify authoritative hosts for the specified class and domain. -### NSEC3 Record +### NSEC3 record -The following fields are required: +An NSEC3 record requires these arguments: -* algorithm - The cryptographic hash algorithm used to construct the hash-value. -* flags - Eight (8) one-bit flags that can be used to indicate different processing. All undefined flags must be zero. -* iterations - The number of additional times the hash function has been performed. -* salt - The base 16 encoded salt value, which is appended to the original owner name before hashing in order to defend against pre-calculated dictionary attacks. -* next_hashed_owner_name - Base 32 encoded. The next hashed owner name in hash order. This value is in binary format. Given the ordered set of all hashed owner names, the Next Hashed Owner Name field contains the hash of an owner name that immediately follows the owner name of the given NSEC3 RR. -* type_bitmaps - The resource record set types that exist at the original owner name of the NSEC3 RR. +* `algorithm` - The cryptographic hash algorithm used to construct the hash-value. +* `flags` - Eight one-bit flags you can use to indicate different processing. All undefined flags must be zero. +* `iterations` - The number of additional times the hash function has been performed. +* `salt` - The base 16 encoded salt value, which is appended to the original owner name before hashing. Used to defend against pre-calculated dictionary attacks. +* `next_hashed_owner_name` - Base 32 encoded. The next hashed owner name in hash order. This value is in binary format. Given the ordered set of all hashed owner names, the Next Hashed Owner Name field contains the hash of an owner name that immediately follows the owner name of the given NSEC3 RR. +* `type_bitmaps` - The resource record set types that exist at the original owner name of the NSEC3 RR. -### NSEC3PARAM Record +### NSEC3PARAM record -The following fields are required: +An NSEC3PARAM record requires these arguments: -* algorithm - The cryptographic hash algorithm used to construct the hash-value. -* flags - Eight (8) one-bit flags that can be used to indicate different processing. All undefined flags must be zero. -* iterations - The number of additional times the hash function has been performed. -* salt - The base 16 encoded salt value, which is appended to the original owner name before hashing in order to defend against pre-calculated dictionary attacks. +* `algorithm` - The cryptographic hash algorithm used to construct the hash-value. +* `flags` - Eight one-bit flags that can be used to indicate different processing. All undefined flags must be zero. +* `iterations` - The number of additional times the hash function has been performed. +* `salt` - The base 16 encoded salt value, which is appended to the original owner name before hashing in order to defend against pre-calculated dictionary attacks. -### PTR Record +### PTR record -The following field is required: +A PTR record requires this argument: -* target - A domain name that points to some location in the domain name space. +* `target` - A domain name that points to some location in the domain name space. -### RP Record +### RP record -The following fields are required: +An RP record requires these arguments: -* mailbox - A domain name that specifies the mailbox for the responsible person. -* txt - A domain name for which TXT resource records exist. +* `mailbox` - A domain name that specifies the mailbox for the responsible person. +* `txt` - A domain name for which TXT resource records exist. -### RRSIG Record +### RRSIG record -The following fields are required: +An RRSIG record requires these arguments: -* type_covered - The resource record set type covered by this signature. -* algorithm - The Algorithm Number field identifies the cryptographic algorithm used to create the signature. -* original_ttl - The TTL of the covered record set as it appears in the authoritative zone. -* expiration - The end point of this signature’s validity. The signature cannot be used for authentication past this point in time. -* inception - The start point of this signature’s validity. The signature cannot be used for authentication prior to this point in time. -* keytag - The Key Tag field contains the key tag value of the DNSKEY RR that validates this signature, in network byte order. -* signer - The owner of the DNSKEY resource record who validates this signature. -* signature - The base 64 encoded cryptographic signature that covers the RRSIG RDATA and covered record set. Format depends on the TSIG algorithm in use. -* labels - The Labels field specifies the number of labels in the original RRSIG RR owner name. The significance of this field is that a validator uses it to determine whether the answer was synthesized from a wildcard. If so, it can be used to determine what owner name was used in generating the signature. +* `type_covered` - The resource record set type covered by this signature. +* `algorithm` - Identifies the cryptographic algorithm used to create the signature. +* `original_ttl` - The TTL of the covered record set as it appears in the authoritative zone. +* `expiration` - The end point of this signature’s validity. The signature can`t be used for authentication past this point in time. +* `inception` - The start point of this signature’s validity. The signature can`t be used for authentication prior to this point in time. +* `keytag` - The Key Tag field contains the key tag value of the DNSKEY RR that validates this signature, in network byte order. +* `signer` - The owner of the DNSKEY resource record who validates this signature. +* `signature` - The base 64 encoded cryptographic signature that covers the RRSIG RDATA and covered record set. Format depends on the TSIG algorithm in use. +* `labels` - The Labels field specifies the number of labels in the original RRSIG RR owner name. The significance of this field is that a validator uses it to determine whether the answer was synthesized from a wildcard. If so, it can be used to determine what owner name was used in generating the signature. -### SPF Record +### SPF record -The following field is required: +An SPF record requires this argument: -* target - Indicates which hosts are, and are not, authorized to use a domain name for the “HELO” and “MAIL FROM” identities. +* `target` - Indicates which hosts are, and are not, authorized to use a domain name for the “HELO” and “MAIL FROM” identities. -### SRV Record +### SRV record -The following fields are required: +An SRV record requires these arguments: -* target - The domain name of the target host. -* priority - A 16-bit integer that specifies the preference given to this resource record among others at the same owner. Lower values are preferred. -* weight - A server selection mechanism, specifying a relative weight for entries with the same priority. Larger weights should be given a proportionately higher probability of being selected. The range of this number is 0–65535, a 16-bit unsigned integer in network byte order. Domain administrators should use Weight 0 when there isn’t any server selection to do, to make the RR easier to read for humans. In the presence of records containing weights greater than 0, records with weight 0 should have a very small chance of being selected. -* port - The port on this target of this service. The range of this number is 0–65535, a 16-bit unsigned integer in network byte order. +* `target` - The domain name of the target host. +* `priority` - A 16-bit integer that specifies the preference given to this resource record among others at the same owner. Lower values are preferred. +* `weight` - A server selection mechanism that specifies a relative weight for entries with the same priority. Larger weights are given a proportionately higher probability of being selected. The range of this number is 0–65535, a 16-bit unsigned integer in network byte order. Domain administrators should use Weight 0 when there isn’t any server selection to do, to make the RR easier to read for humans. In the presence of records containing weights greater than 0, records with weight 0 should have a very small chance of being selected. +* `port` - The port on this target of this service. The range of this number is 0–65535, a 16-bit unsigned integer in network byte order. -### SSHFP Record +### SSHFP record -The following fields are required: +An SSHFP record requires these arguments: -* algorithm - Describes the algorithm of the public key. The following values are assigned: 0 = reserved; 1 = RSA; 2 = DSS, 3 = ECDSA. -* fingerprint_type - Describes the message-digest algorithm used to calculate the fingerprint of the public key. The following values are assigned: 0 = reserved, 1 = SHA-1, 2 = SHA-256. -* fingerprint - The base 16 encoded fingerprint as calculated over the public key blob. The message-digest algorithm is presumed to produce an opaque octet string output, which is placed as-is in the RDATA fingerprint field. +* `algorithm` - Describes the algorithm of the public key. The following values are assigned: `0` is reserved, `1` is for RSA, `2` is for DSS, and `3` is for ECDSA. +* `fingerprint_type` - Describes the message-digest algorithm used to calculate the fingerprint of the public key. The following values are assigned: 0 = reserved, 1 = SHA-1, 2 = SHA-256. +* `fingerprint` - The base 16 encoded fingerprint as calculated over the public key blob. The message-digest algorithm is presumed to produce an opaque octet string output, which is placed as-is in the RDATA fingerprint field. -### SOA Record +### SOA record -The following fields are required: +An SOA record requires these arguments: -* name_server - The domain name of the name server that was the original or primary source of data for this zone. -* email_address - A domain name that specifies the mailbox of this person responsible for this zone. -* serial - The unsigned version number between 0 and 214748364 of the original copy of the zone. -* refresh - A time interval between 0 and 214748364 before the zone should be refreshed. -* retry - A time interval between 0 and 214748364 that should elapse before a failed refresh should be retried. -* expiry - A time value between 0 and 214748364 that specifies the upper limit on the time interval that can elapse before the zone is no longer authoritative. -* nxdomain_ttl - The unsigned minimum TTL between 0 and 214748364 that should be exported with any resource record from this zone. +* `name_server` - The domain name of the name server that was the original or primary source of data for this zone. +* `email_address` - A domain name that specifies the mailbox of this person responsible for this zone. +* `serial` - The unsigned version number between 0 and 214748364 of the original copy of the zone. +* `refresh` - A time interval between 0 and 214748364 before the zone should be refreshed. +* `retry` - A time interval between 0 and 214748364 that should elapse before a failed refresh should be retried. +* `expiry` - A time value between 0 and 214748364 that specifies the upper limit on the time interval that can elapse before the zone is no longer authoritative. +* `nxdomain_ttl` - The unsigned minimum TTL between 0 and 214748364 that should be exported with any resource record from this zone. -### TLSA Record +### TLSA record -The following fields are required: +A TLSA record requires these arguments: -* usage - specifies the provided association that will be used to match the certificate presented in the TLS handshake. -* selector - specifies which part of the TLS certificate presented by the server will be matched against the association data. -* match_type - specifies how the certificate association is presented. -* certificate - specifies the "certificate association data" to be matched. +* `usage` - Specifies the association used to match the certificate presented in the TLS handshake. +* `selector` - Specifies the part of the TLS certificate presented by the server that is matched against the association data. +* `match_type` - Specifies how the certificate association is presented. +* `certificate` - Specifies the certificate association data to be matched. -### TXT Record +### TXT record -The following field is required: +A TXT record requires this argument: -* target - One or more character strings. TXT RRs are used to hold descriptive text. The semantics of the text depends on the domain where it is found. +* `target` - One or more character strings. TXT resource records hold descriptive text. The semantics of the text depends on the domain where it is found. diff --git a/docs/resources/dns_zone.md b/docs/resources/dns_zone.md index 07bf57309..31b3d3eba 100644 --- a/docs/resources/dns_zone.md +++ b/docs/resources/dns_zone.md @@ -8,9 +8,9 @@ description: |- # akamai_dns_zone -The `akamai_dns_zone` provides the resource for configuring a DNS zone to integrate easily with your existing DNS infrastructure to provide a secure, high performance, highly available and scalable solution for DNS hosting. +Use the `akamai_dns_zone` resource to configure a DNS zone that integrates with your existing DNS infrastructure. -## Example Usage +## Example usage Basic usage: @@ -29,21 +29,21 @@ resource "akamai_dns_zone" "demozone" { } ``` -## Argument Reference +## Argument reference -The following arguments are supported: +This resource supports these arguments: +* `comment` - (Required) A descriptive comment. * `contract` - (Required) The contract ID. * `group` - (Required) The currently selected group ID. -* `zone` - (Required) Domain zone, encapsulating any nested subdomains. -* `type` - (Required) Whether the zone is `primary`, `secondary` or `alias`. -* `masters` - (Required for `secondary`) The names or addresses of the customer’s nameservers from which the zone data should be retrieved. -* `comment` - (Required) A descriptive comment. -* `sign_and_serve` - (Optional) Whether DNSSEC Sign&Serve is enabled. -* `sign_and_serve_algorithm` - (Optional) Algorithm used by Sign&Serve. -* `target` - (Required for Alias zones) The name of the zone whose configuration this zone will copy. -* `tsig_key` - (Optional) TSIG Key used in secure zone transfers. - * `name` - key name. - * `algorithm` - hashing algorithm. - * `secret` - string known between transfer endpoints. -* `end_customer_id` - (Optional) free form identifier for the zone. +* `zone` - (Required) The domain zone, encapsulating any nested subdomains. +* `type` - (Required) Whether the zone is `primary`, `secondary`, or `alias`. +* `masters` - (Required for `secondary` zones) The names or IP addresses of the nameservers that the zone data should be retrieved from. +* `target` - (Required for `alias` zones) The name of the zone whose configuration this zone will copy. +* `sign_and_serve` - (Optional) Whether DNSSEC Sign and Serve is enabled. +* `sign_and_serve_algorithm` - (Optional) The algorithm used by Sign and Serve. +* `tsig_key` - (Optional) The TSIG Key used in secure zone transfers. If used, requires these arguments: + * `name` - The key name. + * `algorithm` - The hashing algorithm. + * `secret` - String known between transfer endpoints. +* `end_customer_id` - (Optional) A free form identifier for the zone. diff --git a/docs/resources/gtm_asmap.md b/docs/resources/gtm_asmap.md index 00f941e05..d911b3ac4 100644 --- a/docs/resources/gtm_asmap.md +++ b/docs/resources/gtm_asmap.md @@ -8,13 +8,17 @@ description: |- # akamai_gtm_asmap -`akamai_gtm_asmap` provides the resource for creating, configuring and importing a GTM Autonomous System Map. Autonomous System (AS) mapping lets you configure a GTM property that returns a CNAME based on the AS number of the IP address of the requester. You can reuse maps for multiple properties or create new ones. AS maps split the Internet into multiple AS block zones. Properties that use AS maps can specify handout integers for each zone. AS mapping lets you configure a property that directs users to a specific environment or to the origin. Note: Import requires an ID of the format: `existing_domain_name`:`existing_map_name`. +Use the `akamai_gtm_asmap` resource to create, configure, and import a GTM Autonomous System (AS) map. AS mapping lets you configure a GTM property that returns a CNAME based on the AS number associated with the requester's IP address. -## Example Usage +You can reuse maps for multiple properties or create new ones. AS maps split the Internet into multiple AS block zones. Properties that use AS maps can specify handout integers for each zone. AS mapping lets you configure a property that directs users to a specific environment or to the origin. + +~> **Note** Import requires an ID with this format: `existing_domain_name`:`existing_map_name`. + +## Example usage Basic usage: -```hcl +```hlc resource "akamai_gtm_asmap" "demo_asmap" { domain = "demo_domain.akadns.net" name = "demo_as" @@ -23,29 +27,25 @@ resource "akamai_gtm_asmap" "demo_asmap" { nickname = "All Other AS numbers" } } -``` -## Argument Reference - -The following arguments are supported: +``` -### Required +## Argument reference -* `domain` - GTM Domain name for the AS Map. -* `name` - A descriptive label for the AS map. Properties set up for asmapping can use this as reference. -* `default_datacenter` - A placeholder for all other AS zones not found in these AS zones. - * `datacenter_id` - A unique identifier for an existing data center in the domain. - * `nickname` - A descriptive label for all other AS zones, up to 128 characters. +This resource supports these arguments: -### Optional - -* `wait_on_complete` - (Boolean, Default: `true`) Wait for transaction to complete. -* `assignment` - (multiple allowed) Contains information about the AS zone groupings of AS IDs. +* `domain` - (Required) The GTM Domain name for the AS map. +* `name` - (Required) A descriptive label for the AS map. Properties set up for AS mapping can use this as reference. +* `default_datacenter` - (Required) A placeholder for all other AS zones not found in these AS zones. Requires these additional arguments: + * `datacenter_id` - (Required) A unique identifier for an existing data center in the domain. + * `nickname` - (Required) A descriptive label for all other AS zones, up to 128 characters. +* `wait_on_complete` - (Optional) A boolean that, if `true`, waits for transaction to complete. +* `assignment` - (Optional) Contains information about the AS zone groupings of AS IDs. You can have multiple entries with this argument. If used, requires these arguments: * `datacenter_id` - A unique identifier for an existing data center in the domain. * `nickname` - A descriptive label for the group. - * `as_numbers` - (List) Specifies an array of AS numbers. + * `as_numbers` - Specifies an array of AS numbers. -### Schema Reference +### Schema reference -The GTM AS Map backing schema and more complete element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#asmap) +You can download the GTM AS Map backing schema from the [Global Traffic Management API](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#asmap) page. diff --git a/docs/resources/gtm_cidrmap.md b/docs/resources/gtm_cidrmap.md index 5fe58ecdd..f53429801 100644 --- a/docs/resources/gtm_cidrmap.md +++ b/docs/resources/gtm_cidrmap.md @@ -8,13 +8,17 @@ description: |- # akamai_gtm_cidrmap -`akamai_gtm_cidrmap` provides the resource for creating, configuring and importing a GTM Classless Inter-Domain Routing (CIDR) Map. CIDR mapping uses the IP addresses of the requesting name server to provide IP-specific CNAME entries, which lets you direct internal users to a specific environment or direct to the origin. This provides different responses to an internal corporate DNS infrastructure such as internal test environments and another answer for all other (defaultDatacenter) name servers. CIDR maps split the Internet into multiple CIDR block zones. Properties that use a map can specify a handout CNAME for each zone on the property’s editing page. To configure a property for CIDR mapping, your domain needs at least one CIDR map defined.. Note: Import requires an ID of the format: `existing_domain_name`:`existing_map_name`. +Use the `akamai_gtm_cidrmap` resource to create, configure, and import a GTM Classless Inter-Domain Routing (CIDR) map. CIDR mapping uses the IP addresses of the requesting name server to provide IP-specific CNAME entries. CNAMEs let you direct internal users to a specific environment or direct them to the origin. This lets you provide different responses to an internal corporate DNS infrastructure, such as internal test environments and another answer for all other name servers (`default_datacenter`). -## Example Usage + CIDR maps split the Internet into multiple CIDR block zones. Properties that use a map can specify a handout CNAME for each zone on the property’s editing page. To configure a property for CIDR mapping, your domain needs at least one CIDR map defined. + +~> **Note** Import requires an ID with this format: `existing_domain_name`:`existing_map_name`. + +## Example usage Basic usage: -```hcl +``` resource "akamai_gtm_cidrmap" "demo_cidrmap" { domain = "demo_domain.akadns.net" name = "demo_cidr" @@ -25,27 +29,22 @@ resource "akamai_gtm_cidrmap" "demo_cidrmap" { } ``` -## Argument Reference +## Argument reference -The following arguments are supported: +This resource supports these arguments: -### Required - -* `domain` - GTM Domain name for the AS Map. -* `name` - A descriptive label for the CIDR map, up to 255 characters. -* `default_datacenter` - A placeholder for all other CIDR zones not found in these CIDR zones. - * `datacenter_id` - For each property, an identifier for all other CIDR zones. - * `nickname` - A descriptive label for the all other CIDR blocks. - -### Optional - -* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. -* `assignment` - (multiple allowed) Contains information about the CIDR zone groupings of CIDR blocks. - * `datacenter_id` - A unique identifier for an existing data center in the domain. - * `nickname` - A descriptive label for the CIDR zone group, up to 256 characters. - * `blocks` - (List) Specifies an array of CIDR blocks. +* `domain` - (Required) GTM Domain name for the AS Map. +* `name` - (Required) A descriptive label for the CIDR map, up to 255 characters. +* `default_datacenter` - (Required) A placeholder for all other CIDR zones not found in these CIDR zones. Requires these additional arguments: + * `datacenter_id` - (Required) For each property, an identifier for all other CIDR zones. + * `nickname` - (Required) A descriptive label for the all other CIDR blocks. +* `wait_on_complete` - (Optional) A boolean that, if set to `true`, waits for transaction to complete. +* `assignment` - (Optional) Contains information about the CIDR zone groupings of CIDR blocks. You can have multiple entries with this argument. Requires these additional arguments: + * `datacenter_id` - (Optional) A unique identifier for an existing data center in the domain. + * `nickname` - (Optional) A descriptive label for the CIDR zone group, up to 256 characters. + * `blocks` - (Optional, list) Specifies an array of CIDR blocks. -### Schema Reference +## Schema reference -The GTM Cidr Map backing schema and more complete element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#cidrmap). +You can download the GTM CIDR Map backing schema from the [Global Traffic Management API](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#cidrmap) page. diff --git a/docs/resources/gtm_datacenter.md b/docs/resources/gtm_datacenter.md index 3fd3a44e7..7a83410e3 100644 --- a/docs/resources/gtm_datacenter.md +++ b/docs/resources/gtm_datacenter.md @@ -8,9 +8,13 @@ description: |- # akamai_gtm_datacenter -`akamai_gtm_datacenter` provides the resource for creating, configuring and importing a GTM datacenter that represents a customer data center, also known as a traffic target, which is a location that contains many servers to which GTM directs traffic. More generally, a data center is a name for a set of possible answers that GTM can return for a query and the unit GTM uses to scale load balancing. For example, you might have data centers in New York and in Amsterdam, and want to balance load between them, but prefer that U.S. users are sent to the New York data center and European users are sent to the Amsterdam data center. Note: Import requires an ID of the format: `existing_domain_name`:`existing_datacenter_id`. +Use the `akamai_gtm_datacenter` resource to create, configure, and import a GTM data center. A GTM data center represents a customer data center and is also known as a traffic target, a location containing many servers GTM can direct traffic to. -## Example Usage +GTM uses data centers to scale load balancing. For example, you might have data centers in both New York and Amsterdam and want to balance load between them. You can configure GTM to send US users to the New York data center and European users to the data center in Amsterdam. + +~> **Note** Import requires an ID with this format: `existing_domain_name`:`existing_datacenter_id`. + +## Example usage Basic usage: @@ -21,45 +25,40 @@ resource "akamai_gtm_datacenter" "demo_datacenter" { } ``` -## Argument Reference - -The following arguments are supported: - -### Required +## Argument reference -* `domain` - GTM Domain name for the Datacenter. +This resource supports these arguments: -### Optional - -* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. -* `nickname` - A descriptive label for the data center. -* `default_load_object` - Specifies the load reporting interface between you and the GTM system. +* `domain` - (Required) The GTM domain name for the data center. +* `wait_on_complete` - (Optional) A boolean, that if set to `true`, waits for transaction to complete. +* `nickname` - (Optional) A descriptive label for the data center. +* `default_load_object` - (Optional) Specifies the load reporting interface between you and the GTM system. Requires these additional arguments: * `load_object` - A load object is a file that provides real-time information about the current load, maximum allowable load, and target load on each resource. * `load_object_port` - Specifies the TCP port to connect to when requesting the load object. - * `load_servers` - (List) Specifies a list of servers to request the load object from. -* `city` - The name of the city where the data center is located. -* `clone_of` - Identifies the data center’s datacenterId of which this data center is a clone. -* `cloud_server_targeting` - (Boolean) Balances load between two or more servers in a cloud environment. -* `cloud_server_host_header_override` - (Boolean) Akamai's liveness test agents will populate the Host header with the host header value configured in the liveness test. -* `continent` - A two-letter code that specifies the continent where the data center maps to. -* `country` - A two-letter ISO 3166 country code that specifies the country where the data center maps to. -* `latitude` - Specifies the geographical latitude of the data center’s position. See also longitude within this object. -* `longitude` - Specifies the geographic longitude of the data center’s position. See also latitude within this object. -* `state_or_province` - Specifies a two-letter ISO 3166 country code for the state or province where the data center is located. + * `load_servers` - Specifies a list of servers to request the load object from. +* `city` - (Optional) The name of the city where the data center is located. +* `clone_of` - (Optional) Identifies the data center’s `datacenter_id` of which this data center is a clone. +* `cloud_server_targeting` - (Optional) A boolean indicating whether to balance load between two or more servers in a cloud environment. +* `cloud_server_host_header_override` - (Optional) A boolean that, if set to `true`, Akamai's liveness test agents use the Host header configured in the liveness test. +* `continent` - (Optional) A two-letter code that specifies the continent where the data center maps to. +* `country` - (Optional) A two-letter ISO 3166 country code that specifies the country where the data center maps to. +* `latitude` - (Optional) Specifies the geographical latitude of the data center’s position. See also longitude within this object. +* `longitude` - (Optional) Specifies the geographic longitude of the data center’s position. See also latitude within this object. +* `state_or_province` - (Optional) Specifies a two-letter ISO 3166 country code for the state or province where the data center is located. -### Computed +### Computed argument reference -The following arguments will be found in `terraform.tfstate` and can be referenced throughout the configuration. The values cannot be changed. +This resource returns these computed arguments in the `terraform.tfstate` file: -* `datacenter_id`. -* `ping_interval`. -* `ping_packet_size`. -* `score_penalty`. -* `servermonitor_liveness_count`. -* `servermonitor_load_count`. -* `servermonitor_pool`. -* `virtual` - (Boolean). +* `datacenter_id` - A unique identifier for an existing data center in the domain. +* `ping_interval` +* `ping_packet_size` +* `score_penalty` +* `servermonitor_liveness_count` +* `servermonitor_load_count` +* `servermonitor_pool` +* `virtual` - A boolean indicating whether the data center is `virtual` or physical, the latter meaning the data center has an Akamai Network Agent installed, and its physical location (`latitude`, `longitude`) is fixed. Either `true` if `virtual` or `false` if physical. -### Schema Reference +## Schema reference -The GTM Datacenter backing schema and more complete element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#datacenter). +You can download the GTM Data Center backing schema from the [Global Traffic Management API](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#datacenter) page. diff --git a/docs/resources/gtm_domain.md b/docs/resources/gtm_domain.md index 42eb10da3..f8066dcaa 100644 --- a/docs/resources/gtm_domain.md +++ b/docs/resources/gtm_domain.md @@ -8,9 +8,11 @@ description: |- # akamai_gtm_domain -`akamai_gtm_domain` provides the resource for creating, configuring and importing a GTM Domain, a basic building block of a traffic management configuration. Note: Import requires an ID of the format: `existing_domain_name`. +Use the `akamai_gtm_domain` resource to create, configure, and import a GTM Domain, which is a basic building block of a traffic management configuration. -## Example Usage +~> **Note** Import requires an ID with this format: `existing_domain_name`. + +## Example usage Basic usage: @@ -24,56 +26,51 @@ resource "akamai_gtm_domain" "demodomain" { } ``` -## Argument Reference - -The following arguments are supported: - -### Required - -* `contract` - The contract ID (if creating domain). -* `group` - The currently selected group ID (if creating domain). -* `name` - DNS name for a collection of GTM Properties. -* `type` - GTM Domain type of `failover-only`, `static`, `weighted`, `basic` or `full`. - -### Optional - -* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. -* `comment` - A descriptive note about changes to the domain. The maximum is 4000 characters. -* `email_notification_list` - (List) A list of email addresses to notify when a change is made to the domain. -* `default_timeout_penalty` - (Default: 25) Specifies the timeout penalty score. -* `load_imbalance_percentage` - Indicates the percent of load imbalance factor (LIF) for the domain. -* `default_ssl_client_private_key` - Specifies an optional Base64-encoded private key that corresponds with the TLS certificate for TLS-based liveness tests (HTTPS, SMTPS, POPS, and TCPS). -* `default_error_penalty` - (Default: 75) Specifies the download penalty score. If the download encounters an error, the web agent computes a score that is either the download time in seconds or a penalty score. -* `cname_coalescing_enabled` - (Boolean) If enabled, GTM collapses CNAME redirections in DNS answers when it knows the target of the CNAME. -* `load_feedback` - (Boolean) Indicates whether one or more measurements of load (resources) are defined by you and supplied by each data center in real time to balance load. -* `default_ssl_client_certificate` - Specifies an optional Base64-encoded certificate that corresponds with the private key for TLS-based liveness tests (HTTPS, SMTPS, POPS, and TCPS). -* `end_user_mapping_enabled` - (Boolean) Indicates whether the GTM Domain is using end user client subnet mapping. - -### Computed - -The following arguments will be found in `terraform.tfstate` and can be referenced throughout the configuration. The values cannot be changed. - -* `default_unreachable_threshold`. -* `min_pingable_region_fraction`. -* `servermonitor_liveness_count`. -* `round_robin_prefix`. -* `servermonitor_load_count`. -* `ping_interval`. -* `max_ttl`. -* `default_health_max`. -* `map_update_interval`. -* `max_properties`. -* `max_resources`. -* `default_error_penalty`. -* `max_test_timeout`. -* `default_health_multiplier`. -* `servermonitor_pool`. -* `min_ttl`. -* `default_max_unreachable_penalty`. -* `default_health_threshold`. -* `min_test_interval`. -* `ping_packet_size`. - -### Schema Reference - -The GTM Domain backing schema and more complete element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#domain). +## Argument reference + +This resource supports these arguments: + +* `contract` - (Required) If creating a domain, the contract ID. +* `group` - (Required) If creating a domain, the currently selected group ID. +* `name` - (Required) The DNS name for a collection of GTM Properties. +* `type` - (Required) Th type of GTM domain. Options include `failover-only`, `static`, `weighted`, `basic`, or `full`. +* `wait_on_complete` - (Optional) A boolean that, if set to `true`, waits for transaction to complete. +* `comment` - (Optional) A descriptive note about changes to the domain. The maximum is 4000 characters. +* `email_notification_list` - (Optional) A list of email addresses to notify when a change is made to the domain. +* `default_timeout_penalty` - (Optional) Specifies the timeout penalty score. Default is `25`. +* `load_imbalance_percentage` - (Optional) Indicates the percentage of load imbalance factor (LIF) for the domain. +* `default_ssl_client_private_key` - (Optional) Specifies a Base64-encoded private key that corresponds with the TLS certificate for HTTPS, SMTPS, POPS, and TCPS liveness tests. +* `default_error_penalty` - (Optional) Specifies the download penalty score. The default is `75`. If the download encounters an error, the web agent computes a score that is either the download time in seconds or a penalty score. +* `cname_coalescing_enabled` - (Optional) A boolean that if set to `true`, GTM collapses CNAME redirections in DNS answers when it knows the target of the CNAME. +* `load_feedback` - (Optional) A boolean indicating whether one or more measurements of load (resources) are defined by you and supplied by each data center in real time to balance load. +* `default_ssl_client_certificate` - (Optional) Specifies an optional Base64-encoded certificate that corresponds with the private key for TLS-based liveness tests (HTTPS, SMTPS, POPS, and TCPS). +* `end_user_mapping_enabled` - (Optional) A boolean indicating whether whether the GTM Domain is using end user client subnet mapping. + +### Computed argument reference + +This resource returns these computed arguments in the `terraform.tfstate` file: + +* `default_unreachable_threshold` +* `min_pingable_region_fraction` +* `servermonitor_liveness_count` +* `round_robin_prefix` +* `servermonitor_load_count` +* `ping_interval` +* `max_ttl` +* `default_health_max` +* `map_update_interval` +* `max_properties` +* `max_resources` +* `default_error_penalty` +* `max_test_timeout` +* `default_health_multiplier` +* `servermonitor_pool` +* `min_ttl` +* `default_max_unreachable_penalty` +* `default_health_threshold` +* `min_test_interval` +* `ping_packet_size` + +### Schema reference + +You can download the GTM Domain backing schema from the [Global Traffic Management API](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#domain) page. diff --git a/docs/resources/gtm_geomap.md b/docs/resources/gtm_geomap.md index 9c3fe3868..c9e6be706 100644 --- a/docs/resources/gtm_geomap.md +++ b/docs/resources/gtm_geomap.md @@ -8,9 +8,13 @@ description: |- # akamai_gtm_geomap -`akamai_gtm_geomap` provides the resource for creating, configuring and importing a GTM Geographic map. Geographic mapping lets you configure a property that returns a CNAME based on the geographic location of the request. You can reuse maps for multiple properties or create new ones. To configure a property for geographic mapping, your domain needs at least one geographic map defined. Each map needs at least two definitions. This ensures that at least one definition maps one or more countries to a data center, and the second definition routes all other traffic. Note: Import requires an ID of the format: `existing_domain_name`:`existing_map_name`. +Use the `akamai_gtm_geomap` resource to create, configure, and import a GTM Geographic map. Geographic mapping lets you configure a property that returns a CNAME based on the geographic location of the request. -## Example Usage +You can reuse maps for multiple properties or create new ones. To configure a property for geographic mapping, you need to define at least one geographic map for your domain. Each map needs at least two definitions. For example, you can have one definition that maps a set of countries to a specific data center, and a second definition that routes all other traffic. + +~> **Note** Import requires an ID with this format: `existing_domain_name`:`existing_map_name`. + +## Example usage Basic usage: @@ -25,26 +29,21 @@ resource "akamai_gtm_geomap" "demo_geomap" { } ``` -## Argument Reference - -The following arguments are supported: - -### Required +## Argument reference -* `domain` - GTM Domain name for the Geographic Map. -* `name` - A descriptive label for the Geographic map. -* `default_datacenter` - A placeholder for all other geographic zones. - * `datacenter_id` - For each property, an identifier for all other geographic zones. - * `nickname` - A descriptive label for all other geographic zones. +This resource supports these arguments: -### Optional - -* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. -* `assignment` - (multiple allowed) Contains information about the geographic zone groupings of countries. - * `datacenter_id` - A unique identifier for an existing data center in the domain. - * `nickname` - A descriptive label for the group. - * `countries` - (List) Specifies an array of two-letter ISO 3166 country codes, or for finer subdivisions, the two-letter country code and the two-letter stateOrProvince code separated by a forward slash. +* `domain` - (Required) GTM Domain name for the Geographic Map. +* `name` - (Required) A descriptive label for the Geographic map. +* `default_datacenter` - (Required) A placeholder for all other geographic zones. Requires these additional arguments: + * `datacenter_id` - (Required) For each property, an identifier for all other geographic zones. + * `nickname` - (Required) A descriptive label for all other geographic zones. +* `wait_on_complete` - (Optional) A boolean indicating whether to wait for transaction to complete. Set to `true` by default. +* `assignment` - (Optional) Contains information about the geographic zone groupings of countries. You can have multiple `assignment` arguments. Requires these additional arguments: + * `datacenter_id` - (Optional) A unique identifier for an existing data center in the domain. + * `nickname` - (Optional) A descriptive label for the group. + * `countries` - (Optional) Specifies an array of two-letter ISO 3166 country codes, or for finer subdivisions, the two-letter country code and the two-letter stateOrProvince code separated by a forward slash. -### Schema Reference +## Schema reference -The GTM Geographic Map backing schema and more complete element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#geographicmap). +You can download the GTM Geographic Map backing schema from the [Global Traffic Management API](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#geographicmap) page. diff --git a/docs/resources/gtm_property.md b/docs/resources/gtm_property.md index e95e4ed9c..5f6cf55f5 100644 --- a/docs/resources/gtm_property.md +++ b/docs/resources/gtm_property.md @@ -8,9 +8,11 @@ description: |- # akamai_gtm_property -`akamai_gtm_property` provides the resource for creating, configuring and importing a GTM property, a set of IP addresses or CNAMEs that GTM provides in response to DNS queries based on a set of rules. Note: Import requires an ID of the format: `existing_domain_name`:`existing_property_name`. +Use the `akamai_gtm_property` resource provides the resource for creating, configuring and importing a GTM property, a set of IP addresses or CNAMEs that GTM provides in response to DNS queries based on a set of rules. -## Example Usage +~> **Note** Import requires an ID with this format: `existing_domain_name`:`existing_property_name`. + +## Example usage Basic usage: @@ -28,89 +30,84 @@ resource "akamai_gtm_property" "demo_property" { } ``` -## Argument Reference - -The following arguments are supported: - -### Required - -* `domain` - DNS name for the GTM Domain set that includes this Property. -* `name` - DNS name for a collection of IP address or CNAME responses. The value, together with the GTM domainName, forms the Property’s hostname. -* `type` - Specifies the load balancing behavior for the property. Either failover, geographic, cidrmapping, weighted-round-robin, weighted-hashed, weighted-round-robin-load-feedback, qtr, or performance. -* `score_aggregation_type` - Specifies how GTM aggregates liveness test scores across different tests, when multiple tests are configured. -* `handout_limit` - Indicates the limit for the number of live IPs handed out to a DNS request. -* `handout_mode` - Specifies how IPs are returned when more than one IP is alive and available. -* `traffic_target` - (multiple allowed) Contains information about where to direct data center traffic. - * `datacenter_id` - A unique identifier for an existing data center in the domain. - * `enabled` - (Boolean) Indicates whether the traffic target is used. You can also omit the traffic target, which has the same result as the false value. - * `weight` - Specifies the traffic weight for the target. - * `servers` - (List) Identifies the IP address or the hostnames of the servers. - * `name` - An alternative label for the traffic target. - * `handout_cname` - Specifies an optional data center for the property. The handoutCName is used when there are no servers configured for the property. - -### Optional - -* `liveness_test` - (multiple allowed) Contains information about the liveness tests, which are run periodically to determine whether your servers respond to requests. - * `name` - A descriptive name for the liveness test. - * `test_interval` - Indicates the interval at which the liveness test is run, in seconds. Requires a minimum of 10 seconds. - * `test_object_protocol` - Specifies the test protocol. EitherDNS, HTTP, HTTPS, FTP, POP, POPS, SMTP, SMTPS, TCP, or TCPS. - * `test_timeout` - Specifies the duration of the liveness test before it fails. The range is from 0.001 to 60 seconds. - * `answers_required` - (Boolean) If testObjectProtocol is DNS, requires an answer to the DNS query to be considered a success. - * `disabled` - (Boolean) Disables the liveness test. When disabled, GTM will cease to run the test, effectively treating it as if it no longer exists. - * `disable_nonstandard_port_warning` - (Boolean) Disables warnings when non-standard ports are used. - * `error_penalty` - Specifies the score that’s reported if the liveness test encounters an error other than timeout, such as connection refused, and 404. - * `http_header` - (multiple allowed) Contains HTTP headers to send if the testObjectProtocol is http or https. - `name` - Name of HTTP header. - `value` - Value of HTTP header. - * `http_error3xx` - (Boolean) Treats a 3xx HTTP response as a failure if the testObjectProtocol is http, https, or ftp. - * `http_error4xx` - (Boolean) Treats a 4xx HTTP response as a failure if the testObjectProtocol is http, https, or ftp. - * `http_error5xx` - (Boolean) Treats a 5xx HTTP response as a failure if the testObjectProtocol is http, https, or ftp. - * `peer_certificate_verification` - (Boolean) Validates the origin certificate. Applies only to tests with testObjectProtocol of https. - * `recursion_requested` - (Boolean) Indicates that testObjectProtocol is DNS. The DNS query is recursive. - * `request_string` - Specifies a request string. - * `resource_type` - Specifies the query type, if testObjectProtocol is DNS. - * `response_string` - Specifies a response string. - * `ssl_client_certificate` - Indicates a Base64-encoded certificate. SSL client certificates are available for livenessTests that use secure protocols. - * `ssl_client_private_key` - Indicates a Base64-encoded private key. The private key used to generate or request a certificate for livenessTests can’t have a passphrase nor be used for any other purpose. - * `test_object` - Specifies the static text that acts as a stand-in for the data that you’re sending on the network. - * `test_object_password` - Specifies the test object’s password. It is required if testObjectProtocol is ftp. - * `test_object_port` - Specifies the port number for the testObject. - * `test_object_username` - A descriptive name for the testObject. - * `timeout_penalty`- Specifies the score to be reported if the liveness test times out. -* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. -* `failover_delay` - Specifies the failover delay in seconds. -* `failback_delay` - Specifies the failback delay in seconds. -* `ipv6` - (Boolean) Indicates the type of IP address handed out by a Property. -* `stickiness_bonus_percentage` - Specifies a percentage used to configure data center affinity. -* `stickiness_bonus_constant` - Specifies a constant used to configure data center affinity. -* `health_threshold` - Configures a cutoff value that is computed from the median scores. -* `use_computed_targets` - (Boolean) For load-feedback domains only, this specifies that you want GTM to automatically compute target load. +## Argument reference + +This resource supports these arguments: + +* `domain` - (Required) DNS name for the GTM Domain set that includes this Property. +* `name` - (Required) DNS name for a collection of IP address or CNAME responses. The value, together with the GTM domainName, forms the Property’s hostname. +* `type` - (Required) Specifies the load balancing behavior for the property. Either failover, geographic, cidrmapping, weighted-round-robin, weighted-hashed, weighted-round-robin-load-feedback, qtr, or performance. +* `score_aggregation_type` - (Required) Specifies how GTM aggregates liveness test scores across different tests, when multiple tests are configured. +* `handout_limit` - (Required) Indicates the limit for the number of live IPs handed out to a DNS request. +* `handout_mode` - (Required) Specifies how IPs are returned when more than one IP is alive and available. +* `traffic_target` - (Required) Contains information about where to direct data center traffic. You can have multiple `traffic_target` arguments. If used, requires these arguments: + * `datacenter_id` - (Required) A unique identifier for an existing data center in the domain. + * `enabled` - (Required) A boolean indicating whether the traffic target is used. You can also omit the traffic target, which has the same result as the false value. + * `weight` - (Required) Specifies the traffic weight for the target. + * `servers` - (Required) (List) Identifies the IP address or the hostnames of the servers. + * `name` - (Required) An alternative label for the traffic target. + * `handout_cname` - (Required) Specifies an optional data center for the property. Used when there are no servers configured for the property. +* `liveness_test` - (Optional) Contains information about the liveness tests, which are run periodically to determine whether your servers respond to requests. You can have multiple `liveness_test` arguments. If used, requires these arguments: + * `name` - (Optional) A descriptive name for the liveness test. + * `test_interval` - (Optional) Indicates the interval at which the liveness test is run, in seconds. Requires a minimum of 10 seconds. + * `test_object_protocol` - (Optional) Specifies the test protocol. Possible values include `DNS`, `HTTP`, `HTTPS`, `FTP`, `POP`, `POPS`, `SMTP`, `SMTPS`, `TCP`, or `TCPS`. + * `test_timeout` - (Optional) Specifies the duration of the liveness test before it fails. The range is from 0.001 to 60 seconds. + * `answers_required` - (Optional) If `test_object_protocol` is DNS, enter a boolean value if an answer is needed for the DNS query to be successful. + * `disabled` - (Optional) A boolean indicating whether the liveness test is disabled. When disabled, GTM stops running the test, effectively treating it as if it no longer exists. + * `disable_nonstandard_port_warning` - (Optional) A boolean that if set to `true`, disables warnings when non-standard ports are used. + * `error_penalty` - (Optional) Specifies the score that’s reported if the liveness test encounters an error other than timeout, such as connection refused, and 404. + * `http_header` - (Optional) Contains HTTP headers to send if the `test_object_protocol` is `http` or `https`. You can have multiple `http_header` entries. Requires these arguments: + * `name` - Name of HTTP header. + * `value` - Value of HTTP header. + * `http_error3xx` - (Optional) A boolean that if set to `true`, treats a 3xx HTTP response as a failure if the `test_object_protocol` is `http`, `https`, or `ftp`. + * `http_error4xx` - (Optional) A boolean that if set to `true`, treats a 4xx HTTP response as a failure if the `test_object_protocol` is `http`, `https`, or `ftp`. + * `http_error5xx` - (Optional) A boolean that if set to `true`, treats a 5xx HTTP response as a failure if the `test_object_protocol` is `http`, `https`, or `ftp`. + * `peer_certificate_verification` - (Optional) A boolean that if set to `true`, validates the origin certificate. Applies only to tests with `test_object_protocol` of https. + * `recursion_requested` - (Optional) A boolean indicating whether the `test_object_protocol` is DNS. The DNS query is recursive. + * `request_string` - (Optional) Specifies a request string. + * `resource_type` - (Optional) Specifies the query type, if `test_object_protocol` is DNS. + * `response_string` - (Optional) Specifies a response string. + * `ssl_client_certificate` - (Optional) Indicates a Base64-encoded certificate. SSL client certificates are available for livenessTests that use secure protocols. + * `ssl_client_private_key` - (Optional) Indicates a Base64-encoded private key. The private key used to generate or request a certificate for livenessTests can’t have a passphrase nor be used for any other purpose. + * `test_object` - (Optional) Specifies the static text that acts as a stand-in for the data that you’re sending on the network. + * `test_object_password` - (Optional) Specifies the test object’s password. It is required if testObjectProtocol is ftp. + * `test_object_port` - (Optional) Specifies the port number for the testObject. + * `test_object_username` - (Optional) A descriptive name for the testObject. + * `timeout_penalty`- (Optional) Specifies the score to be reported if the liveness test times out. +* `wait_on_complete` - (Optional) A boolean indicating whether to wait for transaction to complete. Set to `true` by default. +* `failover_delay` - (Optional) Specifies the failover delay in seconds. +* `failback_delay` - (Optional) Specifies the failback delay in seconds. +* `ipv6` - (Optional) A boolean that indicates the type of IP address handed out by a GTM property. +* `stickiness_bonus_percentage` - (Optional) Specifies a percentage used to configure data center affinity. +* `stickiness_bonus_constant` - (Optional) Specifies a constant used to configure data center affinity. +* `health_threshold` - (Optional) Configures a cutoff value that is computed from the median scores. +* `use_computed_targets` - (Optional) For load-feedback domains only, a boolean that indicates whether you want GTM to automatically compute target load. * `backup_ip` - Specifies a backup IP. When GTM declares that all of the targets are down, the backupIP is handed out. -* `balance_by_download_score` - (Boolean) Indicates whether download score based load balancing is enabled. -* `static_ttl` - Specifies the TTL in seconds for static resource records that do not change based on the requesting name server IP. -* `unreachable_threshold` - For performance domains, this specifies a penalty value that’s added to liveness test scores when data centers have an aggregated loss fraction higher than this value. -* `health_multiplier` - Configures a cutoff value that is computed from the median scores. -* `dynamic_ttl` - Indicates the TTL in seconds for records that might change dynamically based on liveness and load balancing such as A and AAAA records, and CNAMEs. -* `max_unreachable_penalty` - For performance domains, this specifies a penalty value that’s added to liveness test scores when data centers show an aggregated loss fraction higher than the penalty value. -* `map_name` - A descriptive label for a GeographicMap or a CidrMap that’s required if the property is either geographic or cidrmapping, in which case mapName needs to reference either an existing GeographicMap or CidrMap in the same domain. -* `load_imbalance_percentage` - Indicates the percent of load imbalance factor (LIF) for the property. -* `health_max` - Defines the absolute limit beyond which IPs are declared unhealthy. -* `cname` - Indicates the fully qualified name aliased to a particular property. -* `comments` - A descriptive note about changes to the domain. The maximum is 4000 characters. -* `ghost_demand_reporting` - Use load estimates from Akamai Ghost utilization messages. -* `min_live_fraction` - Specifies what fraction of the servers need to respond to requests so GTM considers the data center up and able to receive traffic. -* `static_rr_set` - (multiple allowed) Contains static recordsets. - * `type` - The record type. - * `ttl` - The number of seconds that this record should live in a resolver’s cache before being refetched. - * `rdata` - (List) An array of data strings, representing multiple records within a set. - -Computed - -The following arguments will be found in `terraform.tfstate` and can be referenced throughout the configuration. The values cannot be changed. - -* `weighted_hash_bits_for_ipv4`. -* `weighted_hash_bits_for_ipv6`. - -### Schema Reference - -The GTM Property backing schema and more complete element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#property). +* `balance_by_download_score` - (Optional) A boolean that indicates whether download score based load balancing is enabled. +* `static_ttl` - (Optional) Specifies the TTL in seconds for static resource records that do not change based on the requesting name server IP. +* `unreachable_threshold` - (Optional) For performance domains, this specifies a penalty value that’s added to liveness test scores when data centers have an aggregated loss fraction higher than this value. +* `health_multiplier` - (Optional) Configures a cutoff value that is computed from the median scores. +* `dynamic_ttl` - (Optional) Indicates the TTL in seconds for records that might change dynamically based on liveness and load balancing such as A and AAAA records, and CNAMEs. +* `max_unreachable_penalty` - (Optional) For performance domains, this specifies a penalty value that’s added to liveness test scores when data centers show an aggregated loss fraction higher than the penalty value. +* `map_name` - (Optional) A descriptive label for a GeographicMap or a CidrMap that’s required if the property is either geographic or cidrmapping, in which case mapName needs to reference either an existing GeographicMap or CidrMap in the same domain. +* `load_imbalance_percentage` - (Optional) Indicates the percent of load imbalance factor (LIF) for the property. +* `health_max` - (Optional) Defines the absolute limit beyond which IPs are declared unhealthy. +* `cname` - (Optional) Indicates the fully qualified name aliased to a particular property. +* `comments` - (Optional) A descriptive note about changes to the domain. The maximum is 4000 characters. +* `ghost_demand_reporting` - (Optional) Use load estimates from Akamai Ghost utilization messages. +* `min_live_fraction` - (Optional) Specifies what fraction of the servers need to respond to requests so GTM considers the data center up and able to receive traffic. +* `static_rr_set` - (Optional) Contains static record sets. You can have multiple `static_rr_set` entries. Requires these arguments: + * `type` - (Optional) The record type. + * `ttl` - (Optional) The number of seconds that this record should live in a resolver’s cache before being refetched. + * `rdata` - (Optional) (List) An array of data strings, representing multiple records within a set. + +### Computed argument reference + +This resource returns these computed arguments in the `terraform.tfstate` file: + +* `weighted_hash_bits_for_ipv4` +* `weighted_hash_bits_for_ipv6` + +### Schema reference + +You can download the GTM Property backing schema from the [Global Traffic Management API](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#property) page. diff --git a/docs/resources/gtm_resource.md b/docs/resources/gtm_resource.md index af5df31b6..d549bcf39 100644 --- a/docs/resources/gtm_resource.md +++ b/docs/resources/gtm_resource.md @@ -8,9 +8,12 @@ description: |- # akamai_gtm_resource -`akamai_gtm_resource` provides the resource for creating, configuring and importing a GTM resource that represents a constraint on how much load a data center can absorb. Consider a Resource as something that can impose a capacity constraint on the load associated with one or more Properties in a Datacenter. Examples of Resources include: bandwidth, CPU load average, database queries per second, or disk operations per second. Note: Import requires an ID of the format: `existing_domain_name`:`existing_resource_name`. +The `akamai_gtm_resource` lets you create, configure, and import a GTM resource. In GTM, a resource is anything you can measure whose scarcity affects load balancing. Examples of resources include bandwidth, CPU load average, database queries per second, or disk operations per second. -## Example Usage +~> **Note** Import requires an ID with this format: `existing_domain_name`: +`existing_resource_name`. + +## Example usage Basic usage: @@ -23,36 +26,31 @@ resource "akamai_gtm_resource" "demo_resource" { } ``` -## Argument Reference - -The following arguments are supported: - -### Required - -* `domain` - DNS name for the GTM Domain set that includes this Property. -* `name` - A descriptive label for the Resource. -* `aggregation_type` - Specifies how GTM handles different load numbers when multiple load servers are used for a data center or property. -* `type` - Indicates the kind of loadObject format used to determine the load on the resource. - -### Optional - -* `wait_on_complete` - (Boolean, Default: true) Wait for transaction to complete. -* `resource_instance` - (multiple allowed) Contains information about the resources that constrain the properties within the data center. - * `datacenter_id` - A unique identifier for an existing data center in the domain. - * `load_object` - Identifies the load object file used to report real-time information about the current load, maximum allowable load, and target load on each resource. - * `load_object_port` - Specifies the TCP port of the loadObject. - * `load_servers` - (List) Specifies a list of servers from which to request the load object. - * `use_default_load_object` - (Boolean) Indicates whether a default loadObject is used for the resources. -* `host_header` - Optionally specifies the host header used when fetching the load object. -* `least_squares_decay` - For internal use only. Unless Akamai indicates otherwise, omit the value or set it to null. -* `upper_bound` - An optional sanity check that specifies the maximum allowed value for any component of the load object. -* `description` - A descriptive note to help you track what the resource constrains. -* `leader_string` - Specifies the text that comes before the loadObject. -* `constrained_property` - Specifies the name of the property that this resource constrains, or ** to constrain all properties. -* `load_imbalance_percent` - Indicates the percent of load imbalance factor (LIF) for the property. -* `max_u_multiplicative_increment` - For internal use only. Unless Akamai indicates otherwise, omit the value or set it to null. -* `decay_rate` - For internal use only. Unless Akamai indicates otherwise, omit the value or set it to null. - -### Schema Reference - -The GTM Resource backing schema and more element descriptions can be found at [Akamai Developer Website](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#resource) +## Argument reference + +This resource supports these arguments: + +* `domain` - (Required) DNS name for the GTM Domain set that includes this property. +* `name` - (Required) A descriptive label for the GTM resource. +* `aggregation_type` - (Required) Specifies how GTM handles different load numbers when multiple load servers are used for a data center or property. +* `type` - (Required) Indicates the kind of `load_object` format used to determine the load on the resource. +* `wait_on_complete` - (Optional) A boolean indicating whether to wait for transaction to complete. Set to `true` by default. +* `resource_instance` - (Optional) (multiple allowed) Contains information about the resources that constrain the properties within the data center. You can have multiple `resource_instance` entries. Requires these arguments: + * `datacenter_id` - (Optional) A unique identifier for an existing data center in the domain. + * `load_object` - (Optional) Identifies the load object file used to report real-time information about the current load, maximum allowable load, and target load on each resource. + * `load_object_port` - (Optional) Specifies the TCP port of the `load_object`. + * `load_servers` - (Optional) (List) Specifies a list of servers from which to request the load object. + * `use_default_load_object` - (Optional) A boolean that indicates whether a default `load_object` is used for the resources. +* `host_header` - (Optional) Optionally specifies the host header used when fetching the load object. +* `least_squares_decay` - (Optional) For internal use only. Unless Akamai indicates otherwise, omit the value or set it to null. +* `upper_bound` - (Optional) An optional sanity check that specifies the maximum allowed value for any component of the load object. +* `description` - (Optional) A descriptive note to help you track what the resource constrains. +* `leader_string` - (Optional) Specifies the text that comes before the `load_object`. +* `constrained_property` - (Optional) Specifies the name of the property that this resource constrains, enter `**` to constrain all properties. +* `load_imbalance_percent` - (Optional) Indicates the percent of load imbalance factor (LIF) for the property. +* `max_u_multiplicative_increment` - (Optional) For Akamai internal use only. You can omit the value or set it to `null`. +* `decay_rate` - (Optional) For Akamai internal use only. You can omit the value or set it to `null`. + +### Schema reference + +You can download the GTM Resource backing schema from the [Global Traffic Management API](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#resource) page. From da96af11f0c548d129ccc7ef542d297481b77192 Mon Sep 17 00:00:00 2001 From: Corin Caliendo Date: Thu, 11 Feb 2021 10:11:09 -0500 Subject: [PATCH 177/215] Minor updates for consistency --- docs/resources/dns_record.md | 2 +- docs/resources/gtm_cidrmap.md | 2 +- docs/resources/gtm_datacenter.md | 6 +++--- docs/resources/gtm_geomap.md | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/resources/dns_record.md b/docs/resources/dns_record.md index 2a68dafa5..093a84b6b 100644 --- a/docs/resources/dns_record.md +++ b/docs/resources/dns_record.md @@ -47,7 +47,7 @@ This resource supports these arguments: * `name` - (Required) The DNS record name. This is the node this DNS record is associated with. Also known as an owner name. * `zone` - (Required) The domain zone, including any nested subdomains. * `recordType` - (Required) The DNS record type. -* `ttl` - (Required) A boolean indicating whether the time to live (TTL). This is a 32-bit signed integer for the time the resource record is cached.
A value of `0` means that the resource record is not cached. It's only used for the transaction in progress and may be useful for extremely volatile data. +* `ttl` - (Required) The time to live (TTL) is a 32-bit signed integer for the time the resource record is cached.
A value of `0` means that the resource record is not cached. It's only used for the transaction in progress and may be useful for extremely volatile data. ## Additional arguments by record type diff --git a/docs/resources/gtm_cidrmap.md b/docs/resources/gtm_cidrmap.md index f53429801..00bda24fe 100644 --- a/docs/resources/gtm_cidrmap.md +++ b/docs/resources/gtm_cidrmap.md @@ -39,7 +39,7 @@ This resource supports these arguments: * `datacenter_id` - (Required) For each property, an identifier for all other CIDR zones. * `nickname` - (Required) A descriptive label for the all other CIDR blocks. * `wait_on_complete` - (Optional) A boolean that, if set to `true`, waits for transaction to complete. -* `assignment` - (Optional) Contains information about the CIDR zone groupings of CIDR blocks. You can have multiple entries with this argument. Requires these additional arguments: +* `assignment` - (Optional) Contains information about the CIDR zone groupings of CIDR blocks. You can have multiple entries with this argument. If used, requires these additional arguments: * `datacenter_id` - (Optional) A unique identifier for an existing data center in the domain. * `nickname` - (Optional) A descriptive label for the CIDR zone group, up to 256 characters. * `blocks` - (Optional, list) Specifies an array of CIDR blocks. diff --git a/docs/resources/gtm_datacenter.md b/docs/resources/gtm_datacenter.md index 7a83410e3..05088dca6 100644 --- a/docs/resources/gtm_datacenter.md +++ b/docs/resources/gtm_datacenter.md @@ -32,7 +32,7 @@ This resource supports these arguments: * `domain` - (Required) The GTM domain name for the data center. * `wait_on_complete` - (Optional) A boolean, that if set to `true`, waits for transaction to complete. * `nickname` - (Optional) A descriptive label for the data center. -* `default_load_object` - (Optional) Specifies the load reporting interface between you and the GTM system. Requires these additional arguments: +* `default_load_object` - (Optional) Specifies the load reporting interface between you and the GTM system. If used, requires these additional arguments: * `load_object` - A load object is a file that provides real-time information about the current load, maximum allowable load, and target load on each resource. * `load_object_port` - Specifies the TCP port to connect to when requesting the load object. * `load_servers` - Specifies a list of servers to request the load object from. @@ -46,7 +46,7 @@ This resource supports these arguments: * `longitude` - (Optional) Specifies the geographic longitude of the data center’s position. See also latitude within this object. * `state_or_province` - (Optional) Specifies a two-letter ISO 3166 country code for the state or province where the data center is located. -### Computed argument reference +### Computed arguments This resource returns these computed arguments in the `terraform.tfstate` file: @@ -57,7 +57,7 @@ This resource returns these computed arguments in the `terraform.tfstate` file: * `servermonitor_liveness_count` * `servermonitor_load_count` * `servermonitor_pool` -* `virtual` - A boolean indicating whether the data center is `virtual` or physical, the latter meaning the data center has an Akamai Network Agent installed, and its physical location (`latitude`, `longitude`) is fixed. Either `true` if `virtual` or `false` if physical. +* `virtual` - A boolean indicating whether the data center is virtual or physical, the latter meaning the data center has an Akamai Network Agent installed, and its physical location (`latitude`, `longitude`) is fixed. Either `true` if virtual or `false` if physical. ## Schema reference diff --git a/docs/resources/gtm_geomap.md b/docs/resources/gtm_geomap.md index c9e6be706..cbaed119a 100644 --- a/docs/resources/gtm_geomap.md +++ b/docs/resources/gtm_geomap.md @@ -39,7 +39,7 @@ This resource supports these arguments: * `datacenter_id` - (Required) For each property, an identifier for all other geographic zones. * `nickname` - (Required) A descriptive label for all other geographic zones. * `wait_on_complete` - (Optional) A boolean indicating whether to wait for transaction to complete. Set to `true` by default. -* `assignment` - (Optional) Contains information about the geographic zone groupings of countries. You can have multiple `assignment` arguments. Requires these additional arguments: +* `assignment` - (Optional) Contains information about the geographic zone groupings of countries. You can have multiple `assignment` arguments. If used, requires these additional arguments: * `datacenter_id` - (Optional) A unique identifier for an existing data center in the domain. * `nickname` - (Optional) A descriptive label for the group. * `countries` - (Optional) Specifies an array of two-letter ISO 3166 country codes, or for finer subdivisions, the two-letter country code and the two-letter stateOrProvince code separated by a forward slash. From 81d918e0c24ce649561160a9f74cc502b4cfac05 Mon Sep 17 00:00:00 2001 From: Corin Caliendo Date: Thu, 11 Feb 2021 10:20:20 -0500 Subject: [PATCH 178/215] Heading edits for consistency --- docs/resources/dns_record.md | 16 ++++++++++++++++ docs/resources/gtm_domain.md | 2 +- docs/resources/gtm_property.md | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/docs/resources/dns_record.md b/docs/resources/dns_record.md index 093a84b6b..e8e6d4e28 100644 --- a/docs/resources/dns_record.md +++ b/docs/resources/dns_record.md @@ -140,6 +140,14 @@ A HINFO record requires these arguments: * `hardware` - The type of hardware the host uses. A machine name or CPU type may be up to 40 characters long and include uppercase letters, digits, hyphens, and slashes. The entry needs to start and to end with an uppercase letter. * `software` - The type of software the host uses. A system name may be up to 40 characters long and include uppercase letters, digits, hyphens, and slashes. The entry needs to start with an uppercase letter and end with an uppercase letter or a digit. +### HTTPS Record + +The following fields are required: + +* `svc_priority` - Service priority associated with endpoint. Value mist be between 0 and 65535. A piority of 0 enables alias mode. +* `svc_params` - Space seperated list of endpoint parameters. Not allowed if service priority is 0. +* `target_name` - Domain name of the service endpoint. + ### LOC record A LOC record requires this argument: @@ -255,6 +263,14 @@ An SOA record requires these arguments: * `expiry` - A time value between 0 and 214748364 that specifies the upper limit on the time interval that can elapse before the zone is no longer authoritative. * `nxdomain_ttl` - The unsigned minimum TTL between 0 and 214748364 that should be exported with any resource record from this zone. +### SVCB record + +An SVDB record requires these arguments: + +* `svc_priority` - Service priority associated with endpoint. Value mist be between 0 and 65535. A piority of 0 enables alias mode. +* `svc_params` - Space seperated list of endpoint parameters. Not allowed if service priority is 0. +* `target_name` - Domain name of the service endpoint. + ### TLSA record A TLSA record requires these arguments: diff --git a/docs/resources/gtm_domain.md b/docs/resources/gtm_domain.md index f8066dcaa..acfb27632 100644 --- a/docs/resources/gtm_domain.md +++ b/docs/resources/gtm_domain.md @@ -46,7 +46,7 @@ This resource supports these arguments: * `default_ssl_client_certificate` - (Optional) Specifies an optional Base64-encoded certificate that corresponds with the private key for TLS-based liveness tests (HTTPS, SMTPS, POPS, and TCPS). * `end_user_mapping_enabled` - (Optional) A boolean indicating whether whether the GTM Domain is using end user client subnet mapping. -### Computed argument reference +### Computed arguments This resource returns these computed arguments in the `terraform.tfstate` file: diff --git a/docs/resources/gtm_property.md b/docs/resources/gtm_property.md index 5f6cf55f5..bf715d2e1 100644 --- a/docs/resources/gtm_property.md +++ b/docs/resources/gtm_property.md @@ -101,7 +101,7 @@ This resource supports these arguments: * `ttl` - (Optional) The number of seconds that this record should live in a resolver’s cache before being refetched. * `rdata` - (Optional) (List) An array of data strings, representing multiple records within a set. -### Computed argument reference +### Computed arguments This resource returns these computed arguments in the `terraform.tfstate` file: From 4b3bb97a95030e081eef003f93699f5af22bb6db Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 11 Feb 2021 10:07:42 -0600 Subject: [PATCH 179/215] Add support for filtering RuleConditionException --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index a12f07d09..0af633966 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -199,7 +199,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"akamai_appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"akamai_appsec_reputation_profile_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"akamai_appsec_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if or .Conditions .Exception}}\nresource \"akamai_appsec_rule_condition_exception\" \"akamai_appsec_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if or .Conditions .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue}}\nresource \"akamai_appsec_rule_condition_exception\" \"akamai_appsec_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}} \nresource \"akamai_appsec_security_policy\" \"akamai_appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"akamai_appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n mode = \"REPLACE\" \n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.Siem.EnableSiem}} \n enable_for_all_policies = {{.Siem.EnableForAllPolicies}}\n enable_botman_siem = {{.Siem.EnabledBotmanSiemEvents}}\n siem_id = {{.Siem.SiemDefinitionID}}\n security_policy_ids = [{{ range $index, $element := .Siem.FirewallPolicyIds}}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n"} From 1a036c0eb63bdd00477e02214dd9ebc28957c164 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 11 Feb 2021 10:26:18 -0600 Subject: [PATCH 180/215] Add support for filtering eval_condiftions_exceptions --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 0af633966..f2449fdae 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -188,7 +188,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"akamai_appsec_attack_group_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}{{ if or .Exception .AdvancedExceptionsList }}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"akamai_appsec_eval_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if .Conditions }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if or .Conditions .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"akamai_appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}} \nresource \"akamai_appsec_custom_rule\" \"akamai_appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"akamai_appsec_custom_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} From 45ff467c038bda3ac37afd09b2f2575e53830d8b Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 11 Feb 2021 10:34:23 -0600 Subject: [PATCH 181/215] Remove loop from conditions template --- pkg/providers/appsec/templates.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index f2449fdae..e3ba73944 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -178,7 +178,8 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["rateProtectionDS"] = &OutputTemplate{TemplateName: "rateProtection", TableTitle: "APIConstraints|ApplicationLayerControls|BotmanControls|NetworkLayerControls|RateControls|ReputationControls|SlowPostControls", TemplateType: "TABULAR", TemplateString: "{{.ApplyAPIConstraints}}|{{.ApplyApplicationLayerControls}}|{{.ApplyBotmanControls}}|{{.ApplyNetworkLayerControls}}|{{.ApplyRateControls}}|{{.ApplyReputationControls}}|{{.ApplySlowPostControls}}"} otm["reputationProtectionDS"] = &OutputTemplate{TemplateName: "reputationProtection", TableTitle: "APIConstraints|ApplicationLayerControls|BotmanControls|NetworkLayerControls|RateControls|ReputationControls|SlowPostControls", TemplateType: "TABULAR", TemplateString: "{{.ApplyAPIConstraints}}|{{.ApplyApplicationLayerControls}}|{{.ApplyBotmanControls}}|{{.ApplyNetworkLayerControls}}|{{.ApplyRateControls}}|{{.ApplyReputationControls}}|{{.ApplySlowPostControls}}"} otm["slowpostProtectionDS"] = &OutputTemplate{TemplateName: "slowpostProtection", TableTitle: "APIConstraints|ApplicationLayerControls|BotmanControls|NetworkLayerControls|RateControls|ReputationControls|SlowPostControls", TemplateType: "TABULAR", TemplateString: "{{.ApplyAPIConstraints}}|{{.ApplyApplicationLayerControls}}|{{.ApplyBotmanControls}}|{{.ApplyNetworkLayerControls}}|{{.ApplyRateControls}}|{{.ApplyReputationControls}}|{{.ApplySlowPostControls}}"} - otm["RuleConditionException"] = &OutputTemplate{TemplateName: "RuleConditionException", TableTitle: "Conditions|Exceptions", TemplateType: "TABULAR", TemplateString: "{{range $index, $element :=.Conditions}}True{{else}}False{{end}}|{{with .Exception}}True{{else}}False{{end}}"} + + otm["RuleConditionException"] = &OutputTemplate{TemplateName: "RuleConditionException", TableTitle: "Conditions|Exceptions", TemplateType: "TABULAR", TemplateString: "{{if .Conditions}}True{{else}}False{{end}}|{{if .Exception}}True{{else}}False{{end}}"} // TF templates otm["AdvancedSettingsLogging.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsLogging.tf", TableTitle: "AdvancedSettingsLogging", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_logging\" \"akamai_appsec_advanced_settings_logging\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n logging = <<-EOF\n {{marshal .AdvancedOptions.Logging}} \n EOF \n } \n {{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if .LoggingOverrides}}\nresource \"akamai_appsec_advanced_settings_logging\" \"akamai_appsec_advanced_settings_logging_override{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n logging = <<-EOF\n {{marshal .LoggingOverrides}} \n \n EOF \n \n }\n{{end}} {{end}}"} From 44bf77903c801a2d67abca69525aecc15205e360 Mon Sep 17 00:00:00 2001 From: Corin Caliendo Date: Thu, 11 Feb 2021 11:57:36 -0500 Subject: [PATCH 182/215] fold FAQ info into DNS and GTM guides --- docs/guides/get_started_dns_zone.md | 63 +++++++++++++++++++++++++-- docs/guides/get_started_gtm_domain.md | 49 +++++++++++++++++++-- 2 files changed, 105 insertions(+), 7 deletions(-) diff --git a/docs/guides/get_started_dns_zone.md b/docs/guides/get_started_dns_zone.md index 60c9826be..8b00fcb30 100644 --- a/docs/guides/get_started_dns_zone.md +++ b/docs/guides/get_started_dns_zone.md @@ -15,9 +15,50 @@ To get more information about Edge DNS, see: * Developer - [API documentation](https://developer.akamai.com/api/cloud_security/edge_dns_zone_management/v2.html). * User Guide - [Official Documentation](https://learn.akamai.com/en-us/products/cloud_security/edge_dns.html). -Remember to start with the Get Started with the [Akamai Terraform Provider Guide](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_provider). You should have an API Client and a valid `akamai.tf` Terraform configuration at this point before adding the DNS module configuration. -## Creating a DNS Zone +## Prerequisites + +Before starting with the DNS module, you need to: + +1. Complete the tasks in [Akamai: Get Started with the Akamai Terraform Provider](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_provider). +2. Determine whether you want to import an existing DNS zone and records or create new ones. +3. If you're importing an existing DNS configuration, continue with [Import a DNS zone and records](#import-a-dns-zone-and-records). +3. If you're creating a new DNS configuration, continue with [Create a DNS zone +](#create-a-dns-zone) and [Create a DNS record](#create-a-dns-record). + +## Import a DNS zone and records + +You can migrate an existing Edge DNS zone into your Terraform configuration using either a command line utility or step-by-step construction. + +### Import using the command line utility + +You can use the [Akamai CLI for Akamai Terraform Provider](https://github.com/akamai/cli-terraform) to generate a configuration for and import an existing Edge DNS zone and its recordsets. With the package, you can generate: + +* a JSON-formatted list of the zone and recordsets. +* a Terraform configuration for the zone and select recordsets. +* a command line script to import all defined resources. + +Before using this CLI, keep the following in mind: + +* Download the existing zone configuration and master file to have as a backup and reference during an import. You can download these by using the [Edge DNS Zone Management API](https://developer.akamai.com/api/cloud_security/edge_dns_zone_management/v2.html) or the Edge DNS app on [Control Center](https://control.akamai.com). +* Terraform limits the characters that can be part of its resource names. During construction of the resource configurations, invalid characters are replaced with underscore , '_'. +* Terraform doesn't provide any state information during import. When you run `plan` and `apply` after an import, Terraform lists discrepencies and reconciles configurations and state. Any discrepencies clear following the first `apply`. +* After first time you run `plan` or `apply`, the `contract` and `group` attributes are updated. +* Run `terraform plan` after importing to validate the generated `tfstate` file. + +### Import using step-by-step construction + +To import using step-by-step construction, complete these tasks: + +1. Determine how you want to test your Terraform import. For example, you may want to set up your zone and recordset imports in a test environment to familiarize yourself with the provider operation and mitigate any risks to your existing DNS zone configuration. +1. Download the existing zone configuration and master file to have as a backup and reference during an import. You can download these from the [Edge DNS Zone Management API](https://developer.akamai.com/api/cloud_security/edge_dns_zone_management/v2.html) or from the Edge DNS app on [Control Center](https://control.akamai.com) . +1. Using the zone master file as a reference, create a Terraform configuration representing the existing zone and all contained recordsets. +1. Verify that your Terraform configuration addresses all required attributes and any optional and computed attributes you need. +1. Run `terraform import`. This command imports the existing zone and contained recordsets. The import happens in serial order. +1. Compare the downloaded zone master file with the `terraform.tfstate` file to confirm that the zone and all recordsets are represented correctly. +1. Run `terraform plan` on the configuration. The plan should be empty. If not, correct accordingly and repeat until plan is empty and configuration is in sync with the Edge DNS backend. + +## Create a DNS zone The zone itself is represented by a [`akamai_dns_zone` resource](../resources/dns_zone.md). Add this new resource block to your `akamai.tf` file after the provider block. **Note:** the zone should be the first DNS resource created as it provides operating context for all other recordset resources. @@ -229,7 +270,7 @@ To validate the configuration up to this point, run the following command. The a $ terraform plan ``` -## Creating a DNS Record +## Create a DNS record The recordset itself is represented by a [`akamai_dns_record` resource](../resources/dns_record.md). Add this new block to your `akamai.tf` file after the provider block. @@ -276,7 +317,13 @@ $ terraform import akamai_dns_zone.{{zone resource name}} {{edge dns zone name}} $ terraform import akamai_dns_record.{{record resource name}} {{edge dns zone name}}#{{edge dns recordset name}}#{{record type}} ``` -[Migrating A DNS Zone](../guides/faq.md#migrating-an-edge-dns-zone-and-records-to-terraform) discusses DNS resource import in more detail. +## How you can use the DNS module + +These sections include information on different ways to use the Akamai's Terraform DNS module: + +* [Working With MX Records](#working-with-mx-records) +* [Important Behavior Considerations](#important-behavior-considerations) +* [Primary Zone Partially Created](#primary-zone-partially-created) ## Working With MX Records @@ -358,3 +405,11 @@ This means that Terraform did not detect any differences between your configuration and real physical resources that exist. As a result, no actions need to be performed. ``` + +## Primary Zone Partially Created + +While it's rare, sometimes a primary zone is only partially created on the Akamai backend. For example, a network error happens and while the zone was created, the SOA and NS records were not. + +Any attempt to manage or administer recordsets in the zone will fail. To resolve this issue, you have to manually create the SOA and NS records before you can manage the configuration. + +You can create these records can be created from the Edge DNS application available from [Akamai Control Center](https://control.akamai.com). You also have the option of using the [Akamai CLI for Edge DNS](https://github.com/akamai/cli-dns). diff --git a/docs/guides/get_started_gtm_domain.md b/docs/guides/get_started_gtm_domain.md index 3d5a09909..1b0126e4f 100644 --- a/docs/guides/get_started_gtm_domain.md +++ b/docs/guides/get_started_gtm_domain.md @@ -7,14 +7,55 @@ description: |- # Get Started with GTM Domain Administration -The Akamai Provider for Terraform provides you the ability to automate the creation, deployment, and management of GTM domain configuration and administration; as well as importing existing domains and contained objects. +The Akamai Provider for Terraform provides you the ability to automate the creation, deployment, and management of Global Traffic Management (GTM) domain configuration and administration; as well as importing existing domains and contained objects. To get more information about Global Traffic Management, see: * Developer - [API documentation](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html) * User Guide - [Official Documentation](https://learn.akamai.com/en-us/products/web_performance/global_traffic_management.html) -Remember to start by reviewing the Get Started with the [Akamai Terraform Provider Guide](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_provider). You should have a valid `akamai.tf` Terraform configuration at this point before adding the GTM module configuration to `akamai.tf`. +## Prerequisites + +Before starting with the DNS module, you need to: + +1. Complete the tasks in [Akamai: Get Started with the Akamai Terraform Provider](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_provider). You should have an API client and a valid `akamai.tf` Terraform configuration at this point before adding the GTM module configuration. +2. Determine whether you want to import an existing DNS zone and records or create new ones. +3. If you're importing an existing GTM domain, continue with [Import a GTM domain](#import-a-gtm-domain). +3. If you're creating a new GTM domain, continue with [Create a GTM domain +](#create-a-gtm-domain). + +## Import a GTM domain + +You can migrate an existing GTM domain into your Terraform configuration using either a command line utility or step-by-step construction. + +### Import using the command line utility + +You can use the [Akamai CLI for Akamai Terraform Provider](https://github.com/akamai/cli-terraform) to generate a configuration for and import an existing GTM domain. With the package, you can generate: + +* a JSON-formatted list of all domain objects. +* a Terraform configuration for the domain and contained objects. +* a command line script to import all defined resources. + +Before using this CLI, keep the following in mind: + +* Download the existing GTM domain configuration to have as a backup and reference during an import. You can download these by using the [Global Traffic Management API](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html) or the GTM app on [Control Center](https://control.akamai.com). +* Terraform limits the characters that can be part of its resource names. During construction of the resource configurations, invalid characters are replaced with underscore , '_'. +* Terraform doesn't provide any state information during import. When you run `plan` and `apply` after an import, Terraform lists discrepencies and reconciles configurations and state. Any discrepencies clear following the first `apply`. +* After first time you run `plan` or `apply`, the `contract`, `group`, and `wait_on_complete` attributes are updated. +* Run `terraform plan` after importing to validate the generated `tfstate` file. + +### Import using step-by-step construction + +To import using step-by-step construction, complete these tasks: + +1. Determine how you want to test your Terraform import. For example, you may want to set up your zone and recordset imports in a test environment to familiarize yourself with the provider operation and mitigate any risks to your existing DNS zone configuration. +1. Download the existing domain configuration and master file to have as a backup and reference during an import. You can download these from the [Global Traffic Management API](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html) or from the GTM app on [Control Center](https://control.akamai.com) . +1. Using the domain download as a reference, create a Terraform configuration representing the existing domain and all contained GTM objects. +1. Verify that your Terraform configuration addresses all required attributes and any optional and computed attributes you need. +1. Run `terraform import`. This command imports the existing domain and contained objects one at a time based on the order in the configuration. +1. Compare the downloaded domain file with the `terraform.tfstate` file to confirm that the domain and all objects are represented correctly. +1. Run `terraform plan` on the configuration. The plan should be empty. If not, correct accordingly and repeat until plan is empty and configuration is in sync with the Edge DNS backend.### Via Step By Step Construction +1. Run `terraform plan` on the configuration. The plan should be empty. If not, correct accordingly and repeat until plan is empty and configuration is in sync with the GTM Backend. ## Create a GTM Domain @@ -161,4 +202,6 @@ $ terraform import akamai_gtm_geomap.{{geomap resource name}} {{gtm domain name} $ terraform import akamai_gtm_asmap.{{asmap resource name}} {{gtm domain name}}:{{gtm asmap name}} ``` -[Migrating A GTM Domain](../guides/faq.md#migrating-a-gtm-domain-and-contained-objects-to-terraform) discusses GTM resource import in more detail. +## GTM field status when running plan and apply + +When using `terraform plan` or `terraform apply`, Terraform presents fields defined in the configuration and all defined resource fields. Fields are either required, optional, or computed as specified in each resource description. Default values for fields will display if not explicitly configured. In many cases, the default will be zero, empty string, or empty list depending on the type. These default or empty values are informational and not included in resource updates. From 3e897ab8c33317471db96409ac60b79437cccc8d Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 11 Feb 2021 11:55:54 -0600 Subject: [PATCH 183/215] Add Conditions.Type fix which requires postivematch omitempty removed --- pkg/providers/appsec/templates.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index e3ba73944..1745586cc 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -189,7 +189,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"akamai_appsec_attack_group_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}{{ if or .Exception .AdvancedExceptionsList }}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"akamai_appsec_eval_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if or .Conditions .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if or .Conditions.Type .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"akamai_appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}} \nresource \"akamai_appsec_custom_rule\" \"akamai_appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"akamai_appsec_custom_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} @@ -200,7 +200,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"akamai_appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"akamai_appsec_reputation_profile_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"akamai_appsec_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if or .Conditions .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue}}\nresource \"akamai_appsec_rule_condition_exception\" \"akamai_appsec_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if or .Conditions.Type .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue}}\nresource \"akamai_appsec_rule_condition_exception\" \"akamai_appsec_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}} \nresource \"akamai_appsec_security_policy\" \"akamai_appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"akamai_appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n mode = \"REPLACE\" \n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.Siem.EnableSiem}} \n enable_for_all_policies = {{.Siem.EnableForAllPolicies}}\n enable_botman_siem = {{.Siem.EnabledBotmanSiemEvents}}\n siem_id = {{.Siem.SiemDefinitionID}}\n security_policy_ids = [{{ range $index, $element := .Siem.FirewallPolicyIds}}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n"} From 35a1dcc2ec895f4fcbfc1cb2e36e1e58729380dc Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 11 Feb 2021 11:59:32 -0600 Subject: [PATCH 184/215] Add Conditions fix which requires postivematch omitempty removed --- pkg/providers/appsec/templates.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 1745586cc..e3ba73944 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -189,7 +189,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"akamai_appsec_attack_group_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}{{ if or .Exception .AdvancedExceptionsList }}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"akamai_appsec_eval_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if or .Conditions.Type .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if or .Conditions .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"akamai_appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}} \nresource \"akamai_appsec_custom_rule\" \"akamai_appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"akamai_appsec_custom_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} @@ -200,7 +200,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"akamai_appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"akamai_appsec_reputation_profile_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"akamai_appsec_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if or .Conditions.Type .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue}}\nresource \"akamai_appsec_rule_condition_exception\" \"akamai_appsec_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if or .Conditions .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue}}\nresource \"akamai_appsec_rule_condition_exception\" \"akamai_appsec_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}} \nresource \"akamai_appsec_security_policy\" \"akamai_appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"akamai_appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n mode = \"REPLACE\" \n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.Siem.EnableSiem}} \n enable_for_all_policies = {{.Siem.EnableForAllPolicies}}\n enable_botman_siem = {{.Siem.EnabledBotmanSiemEvents}}\n siem_id = {{.Siem.SiemDefinitionID}}\n security_policy_ids = [{{ range $index, $element := .Siem.FirewallPolicyIds}}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n"} From ce5aaadf4a780d4b482114701f30efad73ac71f6 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 11 Feb 2021 12:43:45 -0600 Subject: [PATCH 185/215] Remove output_text from eval_rules and conditions and exceptions --- ...kamai_appsec_eval_rule_condition_exception.go | 16 ---------------- ...rce_akamai_appsec_rule_condition_exception.go | 16 ---------------- 2 files changed, 32 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go index 63026cf31..7e7698133 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_eval_rule_condition_exception.go @@ -51,11 +51,6 @@ func resourceEvalRuleConditionException() *schema.Resource { ValidateFunc: validation.StringIsJSON, DiffSuppressFunc: suppressEquivalentJSONDiffsConditionException, }, - "output_text": { - Type: schema.TypeString, - Computed: true, - Description: "Text Export representation", - }, }, } } @@ -119,17 +114,6 @@ func resourceEvalRuleConditionExceptionRead(ctx context.Context, d *schema.Resou logger.Warnf("calling 'getEvalRuleConditionException': %s", err.Error()) } - ots := OutputTemplates{} - InitTemplates(ots) - - outputtext, err := RenderTemplates(ots, "EvalRuleConditionExceptions", evalruleconditionexception) - - if err == nil { - if err := d.Set("output_text", outputtext); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } - } - jsonBody, err := json.Marshal(evalruleconditionexception) if err != nil { return diag.FromErr(err) diff --git a/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go index b966ce19d..679672347 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_rule_condition_exception.go @@ -51,11 +51,6 @@ func resourceRuleConditionException() *schema.Resource { ValidateFunc: validation.StringIsJSON, DiffSuppressFunc: suppressEquivalentJSONDiffsConditionException, }, - "output_text": { - Type: schema.TypeString, - Computed: true, - Description: "Text Export representation", - }, }, } } @@ -120,17 +115,6 @@ func resourceRuleConditionExceptionRead(ctx context.Context, d *schema.ResourceD return diag.FromErr(err) } - ots := OutputTemplates{} - InitTemplates(ots) - - outputtext, err := RenderTemplates(ots, "RuleConditionExceptions", ruleconditionexception) - - if err == nil { - if err := d.Set("output_text", outputtext); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } - } - jsonBody, err := json.Marshal(ruleconditionexception) if err != nil { return diag.FromErr(err) From 3d46bf0e0824fbe8ebfdaa4c17517cd0175ec03a Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 11 Feb 2021 13:09:25 -0600 Subject: [PATCH 186/215] Fix match target regression test --- .../appsec/resource_akamai_appsec_match_target.go | 12 ++++++++++++ .../resource_akamai_appsec_match_target_test.go | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_match_target.go b/pkg/providers/appsec/resource_akamai_appsec_match_target.go index 8fbda6be6..f3aeeebc9 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_match_target.go +++ b/pkg/providers/appsec/resource_akamai_appsec_match_target.go @@ -65,6 +65,18 @@ func resourceMatchTargetCreate(ctx context.Context, d *schema.ResourceData, m in createMatchTarget.JsonPayloadRaw = rawJSON + configid, err := tools.GetIntValue("config_id", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createMatchTarget.ConfigID = configid + + version, err := tools.GetIntValue("version", d) + if err != nil && !errors.Is(err, tools.ErrNotFound) { + return diag.FromErr(err) + } + createMatchTarget.ConfigVersion = version + postresp, err := client.CreateMatchTarget(ctx, createMatchTarget) if err != nil { logger.Errorf("calling 'createMatchTarget': %s", err.Error()) diff --git a/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go b/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go index 78ff50e7c..4008d3ec9 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go @@ -38,7 +38,7 @@ func TestAccAkamaiMatchTarget_res_basic(t *testing.T) { client.On("CreateMatchTarget", mock.Anything, // ctx is irrelevant for this test - appsec.CreateMatchTargetRequest{Type: "", ConfigID: 0, ConfigVersion: 0, JsonPayloadRaw: json.RawMessage{0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x22, 0x3a, 0x20, 0x34, 0x33, 0x32, 0x35, 0x33, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x20, 0x31, 0x35, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x4e, 0x4f, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x42, 0x6f, 0x74, 0x6d, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x6c, 0x6f, 0x77, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x61, 0x72, 0x62, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x63, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x64, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x77, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x63, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6a, 0x70, 0x65, 0x67, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6a, 0x73, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x6d, 0x6c, 0x73, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x64, 0x6d, 0x6c, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x77, 0x73, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63, 0x2a, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x41, 0x41, 0x41, 0x41, 0x5f, 0x38, 0x31, 0x32, 0x33, 0x30, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x3a, 0x20, 0x31, 0xa, 0x7d, 0xa}}, + appsec.CreateMatchTargetRequest{Type: "", ConfigID: 43253, ConfigVersion: 15, JsonPayloadRaw: json.RawMessage{0x20, 0x20, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x22, 0x3a, 0x20, 0x34, 0x33, 0x32, 0x35, 0x33, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x20, 0x31, 0x35, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x4e, 0x4f, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x42, 0x6f, 0x74, 0x6d, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x6c, 0x6f, 0x77, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x61, 0x72, 0x62, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x63, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x64, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x77, 0x66, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x63, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6a, 0x70, 0x65, 0x67, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6a, 0x73, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x6d, 0x6c, 0x73, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x64, 0x6d, 0x6c, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x77, 0x73, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63, 0x2a, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x22, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x41, 0x41, 0x41, 0x41, 0x5f, 0x38, 0x31, 0x32, 0x33, 0x30, 0x22, 0xa, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0xa, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x3a, 0x20, 0x31, 0xa, 0x7d, 0xa}}, ).Return(&crmt, nil) client.On("UpdateMatchTarget", From 708dac042675c4b74766a7bde5e2d9aff5b82ad6 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 11 Feb 2021 13:40:56 -0600 Subject: [PATCH 187/215] Remove output_text from attack groups resource --- ...mai_appsec_attack_group_condition_exception.go | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go index 470866838..1f7bbafb7 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go +++ b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception.go @@ -51,11 +51,6 @@ func resourceAttackGroupConditionException() *schema.Resource { ValidateFunc: validation.StringIsJSON, DiffSuppressFunc: suppressEquivalentJsonDiffsGeneric, }, - "output_text": { - Type: schema.TypeString, - Computed: true, - Description: "Text Export representation", - }, }, } } @@ -120,16 +115,6 @@ func resourceAttackGroupConditionExceptionRead(ctx context.Context, d *schema.Re return diag.FromErr(err) } - ots := OutputTemplates{} - InitTemplates(ots) - - outputtext, err := RenderTemplates(ots, "AttackGroupConditionExceptions", attackgroupconditionexception) - - if err == nil { - if err := d.Set("output_text", outputtext); err != nil { - return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) - } - } if err := d.Set("config_id", getAttackGroupConditionException.ConfigID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } From 0300578166a4b38a1db2cc55ac0448aacc5db172 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 11 Feb 2021 15:33:52 -0600 Subject: [PATCH 188/215] Add Names and values to attack group criteria --- pkg/providers/appsec/templates.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index e3ba73944..e6002b886 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -125,7 +125,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { //Extensions otm["apiEndpointsDS"] = &OutputTemplate{TemplateName: "apiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} - otm["AttackGroupConditionException"] = &OutputTemplate{TemplateName: "AttackGroupConditionException", TableTitle: "Exceptions|Advanced Exceptions", TemplateType: "TABULAR", TemplateString: "{{if .Exception}}True{{else}}False{{end}}|{{if .AdvancedExceptionsList }}True{{else}}False{{end}}"} + otm["AttackGroupConditionException"] = &OutputTemplate{TemplateName: "AttackGroupConditionException", TableTitle: "Conditions|Exceptions|Advanced Exceptions", TemplateType: "TABULAR", TemplateString: "{{$length := len .AdvancedExceptionsList.Conditions}}{{ if eq $length 0 }}False{{else}}True{{end}}|{{if .Exception}}True{{else}}False{{end}}|{{if .AdvancedExceptionsList }}True{{else}}False{{end}}"} otm["policyApiEndpointsDS"] = &OutputTemplate{TemplateName: "policyApiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} otm["apiHostnameCoverageDS"] = &OutputTemplate{TemplateName: "apiHostnameCoverageDS", TableTitle: "Config ID|Config Name|Version|Status|Has Match Target|Hostname", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .HostnameCoverage}}{{if $index}},{{end}}{{.Configuration.ID}}|{{.Configuration.Name}}|{{.Configuration.Version}}|{{.Status}}|{{.HasMatchTarget}}|{{.Hostname}}{{end}}"} @@ -187,7 +187,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"akamai_appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} otm["ApiRequestConstraints.tf"] = &OutputTemplate{TemplateName: "ApiRequestConstraints.tf", TableTitle: "ApiRequestConstraints", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if .APIRequestConstraints.Action}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_{{$prev_secpolicy}}{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n action = \"{{.APIRequestConstraints.Action}}\" \n }{{end}}\n {{range $index, $element := .APIRequestConstraints.APIEndpoints}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_override_{{.ID}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n api_endpoint_id = \"{{.ID}}\" \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"akamai_appsec_attack_group_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}{{ if or .Exception .AdvancedExceptionsList }}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}{{ if or .AdvancedExceptionsList.Conditions .Exception .AdvancedExceptionsList }}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"akamai_appsec_eval_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if or .Conditions .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"akamai_appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} From 56c3fbc42e67c293ee009b9ef2b5ab56c24fbaf3 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 12 Feb 2021 08:10:52 -0600 Subject: [PATCH 189/215] Add custom validation to api constraints to permit custom deny to work --- ...e_akamai_appsec_api_request_constraints.go | 26 +++---------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go index a4e0d14be..660ee3bde 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go @@ -13,7 +13,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" ) // appsec v1 @@ -46,18 +45,9 @@ func resourceApiRequestConstraints() *schema.Resource { Optional: true, }, "action": { - Type: schema.TypeString, - Required: true, - ValidateFunc: validation.StringInSlice([]string{ - Alert, - Deny, - None, - }, false), - }, - "output_text": { - Type: schema.TypeString, - Computed: true, - Description: "Text Export representation", + Type: schema.TypeString, + Required: true, + ValidateFunc: ValidateActions, }, }, } @@ -121,20 +111,12 @@ func resourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceDa } getApiRequestConstraints.ApiID = ApiID } - apirequestconstraints, err := client.GetApiRequestConstraints(ctx, getApiRequestConstraints) + _, err := client.GetApiRequestConstraints(ctx, getApiRequestConstraints) if err != nil { logger.Errorf("calling 'getApiRequestConstraints': %s", err.Error()) return diag.FromErr(err) } - ots := OutputTemplates{} - InitTemplates(ots) - - outputtext, err := RenderTemplates(ots, "apirequestconstraintsDS", apirequestconstraints) - if err == nil { - d.Set("output_text", outputtext) - } - if err := d.Set("config_id", getApiRequestConstraints.ConfigID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } From 648a0659cb281981f78a44297ab2315a35c204a9 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 17 Feb 2021 09:42:02 -0600 Subject: [PATCH 190/215] Flatten structs for attack groups --- pkg/providers/appsec/templates.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index e6002b886..a76d6f69f 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -187,7 +187,8 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"akamai_appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} otm["ApiRequestConstraints.tf"] = &OutputTemplate{TemplateName: "ApiRequestConstraints.tf", TableTitle: "ApiRequestConstraints", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if .APIRequestConstraints.Action}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_{{$prev_secpolicy}}{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n action = \"{{.APIRequestConstraints.Action}}\" \n }{{end}}\n {{range $index, $element := .APIRequestConstraints.APIEndpoints}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_override_{{.ID}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n api_endpoint_id = \"{{.ID}}\" \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"akamai_appsec_attack_group_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}{{ if or .AdvancedExceptionsList.Conditions .Exception .AdvancedExceptionsList }}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}{{ if or .AdvancedExceptions.Conditions .Exception .AdvancedExceptions }}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"akamai_appsec_eval_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if or .Conditions .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"akamai_appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} From f5252bac4f68259e1d3828d1b991a2a9cdc0abdc Mon Sep 17 00:00:00 2001 From: Corin Caliendo Date: Wed, 17 Feb 2021 14:13:42 -0500 Subject: [PATCH 191/215] Updates based on reviewer feedback. --- docs/data-sources/authorities_set.md | 2 +- docs/data-sources/gtm_default_datacenter.md | 2 +- docs/guides/akamai_provider_auth.md | 4 ++-- docs/guides/get_started_dns_zone.md | 8 ++++---- docs/guides/get_started_gtm_domain.md | 6 +++--- docs/guides/get_started_provider.md | 3 +-- docs/resources/dns_record.md | 10 +++++----- docs/resources/dns_zone.md | 4 ++-- docs/resources/gtm_asmap.md | 4 ++-- docs/resources/gtm_datacenter.md | 6 +++--- docs/resources/gtm_domain.md | 8 ++++---- docs/resources/gtm_geomap.md | 2 +- docs/resources/gtm_property.md | 8 ++++---- docs/resources/gtm_resource.md | 4 ++-- 14 files changed, 35 insertions(+), 36 deletions(-) diff --git a/docs/data-sources/authorities_set.md b/docs/data-sources/authorities_set.md index 7137032ac..9a920d9ba 100644 --- a/docs/data-sources/authorities_set.md +++ b/docs/data-sources/authorities_set.md @@ -14,7 +14,7 @@ Use the `akamai_authorities_set` data source to retrieve a contract's authoritie Basic usage: -```hcl +``` data "akamai_authorities_set" "example" { contract = "ctr_1-AB123" } diff --git a/docs/data-sources/gtm_default_datacenter.md b/docs/data-sources/gtm_default_datacenter.md index b0b6834b4..33fd0469a 100644 --- a/docs/data-sources/gtm_default_datacenter.md +++ b/docs/data-sources/gtm_default_datacenter.md @@ -14,7 +14,7 @@ Use the `akamai_gtm_default_datacenter` data source to retrieve the default data Basic usage: -```hcl +``` data "akamai_gtm_default_datacenter" "example_ddc" { name = "example_domain.akadns.net" datacenter = 5400 diff --git a/docs/guides/akamai_provider_auth.md b/docs/guides/akamai_provider_auth.md index 533eebde3..598743e0e 100644 --- a/docs/guides/akamai_provider_auth.md +++ b/docs/guides/akamai_provider_auth.md @@ -54,7 +54,7 @@ supporting API service names: Once you create the supporting API clients you can update your local `.edgerc` file. -**Note:** Depending on the select contract and group, the Edge DNS and GTM modules may depend on both Property Manager APIs as well. If so, be sure to include a PAPI authorization to the Edge DNS and GTM API Clients. +**Note:** If you're using the Edge DNS or GTM module, you may also need the Property Manager API service. Whether you need this additional service depends on the contract and group you're using. ## Add your local .edgerc file to your Akamai Provider config @@ -66,7 +66,7 @@ Akamai Provider configuration file (`akamai.tf`): edgerc = "~/.edgerc" ``` -`~/.edgerc` is the location of your file on your local machine. In +`~/.edgerc` is the location of your credentials file on your local machine. In your Terraform files, you can reference individual sections inside the `.edgerc` file: diff --git a/docs/guides/get_started_dns_zone.md b/docs/guides/get_started_dns_zone.md index 8b00fcb30..2fb9eb26b 100644 --- a/docs/guides/get_started_dns_zone.md +++ b/docs/guides/get_started_dns_zone.md @@ -68,7 +68,7 @@ Next, we set the required (`zone`, `type`, `group`, `contract`) and optional (`c Once done, your `akamai.tf` configuration file should include configuration items such as: -```hcl +``` terraform { required_providers { akamai = { @@ -124,7 +124,7 @@ In addition to `akamai.tf` set with Get Started with the [Akamai Terraform Provi ##### Example configuration: -```hcl +``` locals { section = "default" zone = "example_primary_zone.com" @@ -280,7 +280,7 @@ Next, we set the required (zone, recordtype, ttl) and any optional/required argu Once complete, your record configuration should look like this: -```hcl +``` resource "akamai_dns_record" "example_a_record" { zone = akamai_dns_zone.example.zone target = ["10.0.0.2"] @@ -412,4 +412,4 @@ While it's rare, sometimes a primary zone is only partially created on the Akama Any attempt to manage or administer recordsets in the zone will fail. To resolve this issue, you have to manually create the SOA and NS records before you can manage the configuration. -You can create these records can be created from the Edge DNS application available from [Akamai Control Center](https://control.akamai.com). You also have the option of using the [Akamai CLI for Edge DNS](https://github.com/akamai/cli-dns). +You can create these records from the Edge DNS application available from [Akamai Control Center](https://control.akamai.com). You also have the option of using the [Akamai CLI for Edge DNS](https://github.com/akamai/cli-dns). diff --git a/docs/guides/get_started_gtm_domain.md b/docs/guides/get_started_gtm_domain.md index 1b0126e4f..ed0368f5b 100644 --- a/docs/guides/get_started_gtm_domain.md +++ b/docs/guides/get_started_gtm_domain.md @@ -67,7 +67,7 @@ Next, we set the required (`name`, `type`) and optional (`group_id`, `contract_i Once you’re done, your Domain configuration should look like this: -```hcl +``` resource "akamai_gtm_domain" "example" { name = "example.akadns.net" # Domain Name type = "weighted" # Domain type @@ -89,7 +89,7 @@ Next, we set the required (`domain` name) and optional (`nickname`) arguments. Once done, your Datacenter configuration should look like this: -```hcl +``` resource "akamai_gtm_datacenter" "example_dc" { domain = akamai_gtm_domain.example.name # domain nickname = "datacenter_1" # Datacenter Nickname @@ -107,7 +107,7 @@ Next, we set the required (`domain` name, property `name`, property `type`, `tra Once you’re done, your Property configuration should look like this: -```hcl +``` resource "akamai_gtm_property" "example_prop" { domain = akamai_gtm_domain.example.name # domain name = "example_prop_1" # Property Name diff --git a/docs/guides/get_started_provider.md b/docs/guides/get_started_provider.md index 25bbcc546..e2cc4c004 100644 --- a/docs/guides/get_started_provider.md +++ b/docs/guides/get_started_provider.md @@ -138,8 +138,7 @@ At this point in the setup, you should refer to the guides for the Akamai module | Property Manager (Provisioning and Common modules) | [Get Started with Property Provisioning](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_property) | -> **Note** Both Terraform and the Akamai Terraform CLI package come -pre-installed in the Akamai Development Environment. Get more details in -our [installation Instructions](https://developer.akamai.com/blog/2020/05/26/set-development-environment). +pre-installed in the Akamai Development Environment. See [Set Up a Development Environment](https://developer.akamai.com/blog/2020/05/26/set-development-environment) for more information. Once you're done with the module-level setup, continue with the next sections to initialize and test the Akamai Provider. diff --git a/docs/resources/dns_record.md b/docs/resources/dns_record.md index c4745f783..dfed59ce0 100644 --- a/docs/resources/dns_record.md +++ b/docs/resources/dns_record.md @@ -42,7 +42,7 @@ resource "akamai_dns_record" "www" { ## Argument reference [argument-reference] -This resource supports these arguments: +This resource supports these arguments for all record types: * `name` - (Required) The DNS record name. This is the node this DNS record is associated with. Also known as an owner name. * `zone` - (Required) The domain zone, including any nested subdomains. @@ -81,7 +81,7 @@ An AKAMAICDN record requires this argument: ### AKAMAITLC record -No additional arguments are needed for AKAMAITLC records. This resource returns these computed fields for this record type: +No additional arguments are needed for AKAMAITLC records. This resource returns these computed attributes for this record type: * `dns_name` - A valid DNS name. * `answer_type` - The answer type. @@ -146,7 +146,7 @@ A HINFO record requires these arguments: The following fields are required: * `svc_priority` - Service priority associated with endpoint. Value mist be between 0 and 65535. A piority of 0 enables alias mode. -* `svc_params` - Space seperated list of endpoint parameters. Not allowed if service priority is 0. +* `svc_params` - Space separated list of endpoint parameters. Not allowed if service priority is 0. * `target_name` - Domain name of the service endpoint. ### LOC record @@ -266,10 +266,10 @@ An SOA record requires these arguments: ### SVCB record -An SVDB record requires these arguments: +An SVCB record requires these arguments: * `svc_priority` - Service priority associated with endpoint. Value mist be between 0 and 65535. A piority of 0 enables alias mode. -* `svc_params` - Space seperated list of endpoint parameters. Not allowed if service priority is 0. +* `svc_params` - Space separated list of endpoint parameters. Not allowed if service priority is 0. * `target_name` - Domain name of the service endpoint. ### TLSA record diff --git a/docs/resources/dns_zone.md b/docs/resources/dns_zone.md index 31b3d3eba..5bcda03dc 100644 --- a/docs/resources/dns_zone.md +++ b/docs/resources/dns_zone.md @@ -8,13 +8,13 @@ description: |- # akamai_dns_zone -Use the `akamai_dns_zone` resource to configure a DNS zone that integrates with your existing DNS infrastructure. +Use the `akamai_dns_zone` resource to configure a DNS zone that integrates with your existing DNS infrastructure. ## Example usage Basic usage: -```hcl +``` resource "akamai_dns_zone" "demozone" { contract = "ctr_1-AB123" group = 100 diff --git a/docs/resources/gtm_asmap.md b/docs/resources/gtm_asmap.md index d911b3ac4..907b518c5 100644 --- a/docs/resources/gtm_asmap.md +++ b/docs/resources/gtm_asmap.md @@ -18,7 +18,7 @@ You can reuse maps for multiple properties or create new ones. AS maps split the Basic usage: -```hlc +``` resource "akamai_gtm_asmap" "demo_asmap" { domain = "demo_domain.akadns.net" name = "demo_as" @@ -45,7 +45,7 @@ This resource supports these arguments: * `nickname` - A descriptive label for the group. * `as_numbers` - Specifies an array of AS numbers. -### Schema reference +## Schema reference You can download the GTM AS Map backing schema from the [Global Traffic Management API](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#asmap) page. diff --git a/docs/resources/gtm_datacenter.md b/docs/resources/gtm_datacenter.md index 05088dca6..035cdaa5a 100644 --- a/docs/resources/gtm_datacenter.md +++ b/docs/resources/gtm_datacenter.md @@ -18,7 +18,7 @@ GTM uses data centers to scale load balancing. For example, you might have data Basic usage: -```hcl +``` resource "akamai_gtm_datacenter" "demo_datacenter" { domain = "demo_domain.akadns.net" nickname = "demo_datacenter" @@ -46,9 +46,9 @@ This resource supports these arguments: * `longitude` - (Optional) Specifies the geographic longitude of the data center’s position. See also latitude within this object. * `state_or_province` - (Optional) Specifies a two-letter ISO 3166 country code for the state or province where the data center is located. -### Computed arguments +## Attribute reference -This resource returns these computed arguments in the `terraform.tfstate` file: +This resource returns these computed attributes in the `terraform.tfstate` file: * `datacenter_id` - A unique identifier for an existing data center in the domain. * `ping_interval` diff --git a/docs/resources/gtm_domain.md b/docs/resources/gtm_domain.md index acfb27632..82fcaa06a 100644 --- a/docs/resources/gtm_domain.md +++ b/docs/resources/gtm_domain.md @@ -16,7 +16,7 @@ Use the `akamai_gtm_domain` resource to create, configure, and import a GTM Doma Basic usage: -```hcl +``` resource "akamai_gtm_domain" "demodomain" { contract = "XXX" group = 100 @@ -46,9 +46,9 @@ This resource supports these arguments: * `default_ssl_client_certificate` - (Optional) Specifies an optional Base64-encoded certificate that corresponds with the private key for TLS-based liveness tests (HTTPS, SMTPS, POPS, and TCPS). * `end_user_mapping_enabled` - (Optional) A boolean indicating whether whether the GTM Domain is using end user client subnet mapping. -### Computed arguments +## Attribute reference -This resource returns these computed arguments in the `terraform.tfstate` file: +This resource returns these computed attributes in the `terraform.tfstate` file: * `default_unreachable_threshold` * `min_pingable_region_fraction` @@ -71,6 +71,6 @@ This resource returns these computed arguments in the `terraform.tfstate` file: * `min_test_interval` * `ping_packet_size` -### Schema reference +## Schema reference You can download the GTM Domain backing schema from the [Global Traffic Management API](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#domain) page. diff --git a/docs/resources/gtm_geomap.md b/docs/resources/gtm_geomap.md index cbaed119a..c3a44fc96 100644 --- a/docs/resources/gtm_geomap.md +++ b/docs/resources/gtm_geomap.md @@ -18,7 +18,7 @@ You can reuse maps for multiple properties or create new ones. To configure a pr Basic usage: -```hcl +``` resource "akamai_gtm_geomap" "demo_geomap" { domain = "demo_domain.akadns.net" name = "demo_geo" diff --git a/docs/resources/gtm_property.md b/docs/resources/gtm_property.md index bf715d2e1..58be80837 100644 --- a/docs/resources/gtm_property.md +++ b/docs/resources/gtm_property.md @@ -16,7 +16,7 @@ Use the `akamai_gtm_property` resource provides the resource for creating, confi Basic usage: -```hcl +``` resource "akamai_gtm_property" "demo_property" { domain = "demo_domain.akadns.net" name = "demo_property" @@ -101,13 +101,13 @@ This resource supports these arguments: * `ttl` - (Optional) The number of seconds that this record should live in a resolver’s cache before being refetched. * `rdata` - (Optional) (List) An array of data strings, representing multiple records within a set. -### Computed arguments +## Attribute reference -This resource returns these computed arguments in the `terraform.tfstate` file: +This resource returns these computed attributes in the `terraform.tfstate` file: * `weighted_hash_bits_for_ipv4` * `weighted_hash_bits_for_ipv6` -### Schema reference +## Schema reference You can download the GTM Property backing schema from the [Global Traffic Management API](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#property) page. diff --git a/docs/resources/gtm_resource.md b/docs/resources/gtm_resource.md index d549bcf39..58ebebef5 100644 --- a/docs/resources/gtm_resource.md +++ b/docs/resources/gtm_resource.md @@ -17,7 +17,7 @@ The `akamai_gtm_resource` lets you create, configure, and import a GTM resource. Basic usage: -```hcl +``` resource "akamai_gtm_resource" "demo_resource" { domain = "demo_domain.akadns.net" name = "demo_resource" @@ -51,6 +51,6 @@ This resource supports these arguments: * `max_u_multiplicative_increment` - (Optional) For Akamai internal use only. You can omit the value or set it to `null`. * `decay_rate` - (Optional) For Akamai internal use only. You can omit the value or set it to `null`. -### Schema reference +## Schema reference You can download the GTM Resource backing schema from the [Global Traffic Management API](https://developer.akamai.com/api/web_performance/global_traffic_management/v1.html#resource) page. From 8f3890a79d951403f90710f7753326e306fea62d Mon Sep 17 00:00:00 2001 From: Neha Ghate Date: Wed, 17 Feb 2021 15:31:23 -0500 Subject: [PATCH 192/215] bug/DEVOPSPROV-1394_restriction_on_adding_snippet_files_to_a_folder:for single folder fix --- .../data_akamai_property_rules_template.go | 14 +++++++++----- .../data_akamai_property_rules_template_test.go | 17 ++++++++++++++++- .../property-snippet/template_invalid_json.json | 1 + ...ate_invalid_snippets_only_one_folder_json.tf | 7 +++++++ 4 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 pkg/providers/property/property-snippet/template_invalid_json.json create mode 100644 pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_snippets_only_one_folder_json.tf diff --git a/pkg/providers/property/data_akamai_property_rules_template.go b/pkg/providers/property/data_akamai_property_rules_template.go index 3f8d517da..bc9eaed12 100644 --- a/pkg/providers/property/data_akamai_property_rules_template.go +++ b/pkg/providers/property/data_akamai_property_rules_template.go @@ -133,6 +133,9 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m } dir := filepath.Dir(file) folders := snippetsFolderRegexp.FindStringSubmatch(file) + if len(folders) == 0 { + folders = snippetsOneFolderRegex.FindStringSubmatch(file) + } if folders[1] != "property-snippets" { logger.Warnf("Snippets file should be under 'property-snippets' folder instead of: %s", folders[1]) return diag.FromErr(fmt.Errorf("Snippets file should be under 'property-snippets' folder instead of %s folder", folders[1])) @@ -162,7 +165,7 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m diags = append(diags, diag.Errorf("invalid JSON result found in template snippet json here %s: %s", f, err)...) } } else { - return diag.FromErr(fmt.Errorf("Snippets file under 'property-snippets' folder should have .json files. Invalid file %s ",f )) + return diag.FromErr(fmt.Errorf("Snippets file under 'property-snippets' folder should have .json files. Invalid file %s ", f)) } templateStr, err := convertToTemplate(f) if err != nil { @@ -196,10 +199,11 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m } var ( - includeRegexp = regexp.MustCompile(`"#include:.+"`) - varRegexp = regexp.MustCompile(`"\${.+}"`) - jsonFileRegexp = regexp.MustCompile(`\.json+$`) - snippetsFolderRegexp = regexp.MustCompile(`.*\/(.*)\/`) + includeRegexp = regexp.MustCompile(`"#include:.+"`) + varRegexp = regexp.MustCompile(`"\${.+}"`) + jsonFileRegexp = regexp.MustCompile(`\.json+$`) + snippetsFolderRegexp = regexp.MustCompile(`.*\/(.*)\/`) + snippetsOneFolderRegex = regexp.MustCompile(`(.+)\/([^\/]+)`) ) var ( diff --git a/pkg/providers/property/data_akamai_property_rules_template_test.go b/pkg/providers/property/data_akamai_property_rules_template_test.go index 0221d0792..8fb059ac2 100644 --- a/pkg/providers/property/data_akamai_property_rules_template_test.go +++ b/pkg/providers/property/data_akamai_property_rules_template_test.go @@ -173,7 +173,22 @@ func TestDataAkamaiPropertyRulesRead(t *testing.T) { }) }) - t.Run("snippets files are under incorrect folder", func(t *testing.T) { + t.Run("snippets files are under incorrect folder deeply nested", func(t *testing.T) { + client := mockpapi{} + useClient(&client, func() { + resource.UnitTest(t, resource.TestCase{ + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: loadFixtureString("testdata/TestDSRulesTemplate/template_invalid_snippets_folder_json.tf"), + ExpectError: regexp.MustCompile(`Error: Snippets file should be under 'property-snippets' folder instead of output`), + }, + }, + }) + }) + }) + + t.Run("snippets files are under incorrect folder e.g. property-snippets/rules.json", func(t *testing.T) { client := mockpapi{} useClient(&client, func() { resource.UnitTest(t, resource.TestCase{ diff --git a/pkg/providers/property/property-snippet/template_invalid_json.json b/pkg/providers/property/property-snippet/template_invalid_json.json new file mode 100644 index 000000000..6b7f8497d --- /dev/null +++ b/pkg/providers/property/property-snippet/template_invalid_json.json @@ -0,0 +1 @@ +invalid json \ No newline at end of file diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_snippets_only_one_folder_json.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_snippets_only_one_folder_json.tf new file mode 100644 index 000000000..9570f7e58 --- /dev/null +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_invalid_snippets_only_one_folder_json.tf @@ -0,0 +1,7 @@ +provider "akamai" { + edgerc = "~/.edgerc" +} + +data "akamai_property_rules_template" "test" { + template_file = "property-snippet/template_invalid_json.json" +} From 47885d7ef25cbaadf67f22c0030617e259c0d359 Mon Sep 17 00:00:00 2001 From: Neha Ghate Date: Wed, 17 Feb 2021 15:48:59 -0500 Subject: [PATCH 193/215] bug/DEVOPSPROV-1394_restriction_on_adding_snippet_files_to_a_folder:added check for array is empty --- .../property/data_akamai_property_rules_template.go | 10 +++++++--- .../data_akamai_property_rules_template_test.go | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pkg/providers/property/data_akamai_property_rules_template.go b/pkg/providers/property/data_akamai_property_rules_template.go index bc9eaed12..a31ca9444 100644 --- a/pkg/providers/property/data_akamai_property_rules_template.go +++ b/pkg/providers/property/data_akamai_property_rules_template.go @@ -136,9 +136,13 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m if len(folders) == 0 { folders = snippetsOneFolderRegex.FindStringSubmatch(file) } - if folders[1] != "property-snippets" { - logger.Warnf("Snippets file should be under 'property-snippets' folder instead of: %s", folders[1]) - return diag.FromErr(fmt.Errorf("Snippets file should be under 'property-snippets' folder instead of %s folder", folders[1])) + if len(folders) != 0 || folders != nil { + if folders[1] != "property-snippets" { + logger.Warnf("Snippets file should be under 'property-snippets' folder instead of: %s", folders[1]) + return diag.FromErr(fmt.Errorf("Snippets file should be under 'property-snippets' folder instead of %s folder", folders[1])) + } + } else { + return diag.FromErr(fmt.Errorf("Snippets file should be under 'property-snippets' folder instead of %s folder", folders)) } templateFiles := make(map[string]string) err = filepath.Walk(dir, diff --git a/pkg/providers/property/data_akamai_property_rules_template_test.go b/pkg/providers/property/data_akamai_property_rules_template_test.go index 8fb059ac2..1e2da4d82 100644 --- a/pkg/providers/property/data_akamai_property_rules_template_test.go +++ b/pkg/providers/property/data_akamai_property_rules_template_test.go @@ -195,8 +195,8 @@ func TestDataAkamaiPropertyRulesRead(t *testing.T) { Providers: testAccProviders, Steps: []resource.TestStep{ { - Config: loadFixtureString("testdata/TestDSRulesTemplate/template_invalid_snippets_folder_json.tf"), - ExpectError: regexp.MustCompile(`Error: Snippets file should be under 'property-snippets' folder instead of output`), + Config: loadFixtureString("testdata/TestDSRulesTemplate/template_invalid_snippets_only_one_folder_json.tf"), + ExpectError: regexp.MustCompile(`Error: Snippets file should be under 'property-snippets' folder instead of property-snippet`), }, }, }) From e8cd9e08139a0ea43bfe5e14720650436292cc07 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 17 Feb 2021 22:19:39 -0600 Subject: [PATCH 194/215] Filter out null and empty structs in attack groups --- pkg/providers/appsec/templates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index a76d6f69f..f4667c747 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -187,7 +187,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"akamai_appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} otm["ApiRequestConstraints.tf"] = &OutputTemplate{TemplateName: "ApiRequestConstraints.tf", TableTitle: "ApiRequestConstraints", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if .APIRequestConstraints.Action}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_{{$prev_secpolicy}}{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n action = \"{{.APIRequestConstraints.Action}}\" \n }{{end}}\n {{range $index, $element := .APIRequestConstraints.APIEndpoints}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_override_{{.ID}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n api_endpoint_id = \"{{.ID}}\" \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"akamai_appsec_attack_group_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}{{ if or .AdvancedExceptions.Conditions .Exception .AdvancedExceptions }}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}{{ if or .AdvancedExceptions.Conditions .Exception .AdvancedExceptions.SpecificHeaderCookieOrParamNameValue .AdvancedExceptions.SpecificHeaderCookieParamXMLOrJSONNames }}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"akamai_appsec_eval_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if or .Conditions .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} From 05238b6502d5ede55a9726022f3bf9cf77df6319 Mon Sep 17 00:00:00 2001 From: Neha Ghate Date: Thu, 18 Feb 2021 12:55:48 -0500 Subject: [PATCH 195/215] bug/DEVOPSPROV-1394_restriction_on_adding_snippet_files_to_a_folder:added validation for 1 file template --- pkg/providers/property/data_akamai_property_rules_template.go | 3 +++ pkg/providers/property/resource_akamai_property.go | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/providers/property/data_akamai_property_rules_template.go b/pkg/providers/property/data_akamai_property_rules_template.go index a31ca9444..caad9824e 100644 --- a/pkg/providers/property/data_akamai_property_rules_template.go +++ b/pkg/providers/property/data_akamai_property_rules_template.go @@ -188,6 +188,9 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m if err != nil { return diag.FromErr(err) } + if !jsonFileRegexp.MatchString(file) { + return diag.FromErr(fmt.Errorf("Snippets file under 'property-snippets' folder should have .json files. Invalid file %s ", file)) + } d.SetId(file) formatted := bytes.Buffer{} result := wr.Bytes() diff --git a/pkg/providers/property/resource_akamai_property.go b/pkg/providers/property/resource_akamai_property.go index 6b0273095..45e70edc2 100644 --- a/pkg/providers/property/resource_akamai_property.go +++ b/pkg/providers/property/resource_akamai_property.go @@ -759,8 +759,8 @@ func fetchPropertyRules(ctx context.Context, client papi.PAPI, Property papi.Pro logger.WithFields(logFields(*res)).Debug("fetched property rules") Rules = papi.RulesUpdate{ - Rules: res.Rules, - Comments:res.Comments, + Rules: res.Rules, + Comments: res.Comments, } Format = res.RuleFormat Errors = res.Errors From 01706b52a918d54b1296b8cf0fefdc872d3d8ed0 Mon Sep 17 00:00:00 2001 From: Edward Lynes Date: Thu, 18 Feb 2021 14:41:46 -0500 Subject: [PATCH 196/215] Add NS records to target suppress trailing dots --- CHANGELOG.md | 6 +++++- pkg/providers/dns/resource_akamai_dns_record.go | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb584e881..d089f751c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,17 @@ # RELEASE NOTES ## Next + * DNS - * Fail on attempted Zone deletion. Not supported. * Create SOA and NS Records on zone read if don't exist. * Add HTTPS, SVCB record support * GTM * Add validation for property type and traffic targets combination +#### BUG FIXES: +* DNS -- Suppress NS Record target diff if old and new equal without trailing 'period' (#189) +* DNS -- Fail on attempted Zone deletion. Not supported. + ## 1.2.1 (Feb 3, 2021) #### BUG FIXES: diff --git a/pkg/providers/dns/resource_akamai_dns_record.go b/pkg/providers/dns/resource_akamai_dns_record.go index 394443511..6a9cdd366 100644 --- a/pkg/providers/dns/resource_akamai_dns_record.go +++ b/pkg/providers/dns/resource_akamai_dns_record.go @@ -533,7 +533,7 @@ func diffQuotedDNSRecord(oldTargetList []string, newTargetList []string, old str return false } - if recordType == RRTypeAfsdb || recordType == RRTypeCname || recordType == RRTypePtr || recordType == RRTypeSrv { + if recordType == RRTypeAfsdb || recordType == RRTypeCname || recordType == RRTypePtr || recordType == RRTypeSrv || recordType == RRTypeNs { baseVal = strings.TrimRight(baseVal, ".") for _, compval := range compList { compval = strings.TrimRight(compval, ".") From e30ebc1c04c17e96f04a3ebe860b844e9cdf4d19 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Thu, 18 Feb 2021 13:51:30 -0600 Subject: [PATCH 197/215] Remove empty structs fix exports --- ...ai_appsec_attack_group_condition_exception_test.go | 3 ++- .../appsec/resource_akamai_appsec_custom_deny_test.go | 2 ++ .../appsec/resource_akamai_appsec_custom_rule_test.go | 2 ++ pkg/providers/appsec/templates.go | 11 +++++++---- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception_test.go b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception_test.go index 04a6f95fc..3b18c18e7 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_attack_group_condition_exception_test.go @@ -48,8 +48,9 @@ func TestAccAkamaiAttackGroupConditionException_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResAttackGroupConditionException/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_attack_group_condition_exception.test", "id", "43253"), + resource.TestCheckResourceAttr("akamai_appsec_attack_group_condition_exception.test", "id", "43253:7:AAAA_81230:SQL"), ), + ExpectNonEmptyPlan: true, }, }, }) diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go b/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go index 96767ec7f..31fcaca1a 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_deny_test.go @@ -59,12 +59,14 @@ func TestAccAkamaiCustomDeny_res_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("akamai_appsec_custom_deny.test", "id", "43253:7:deny_custom_622918"), ), + ExpectNonEmptyPlan: true, }, { Config: loadFixtureString("testdata/TestResCustomDeny/update_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("akamai_appsec_custom_deny.test", "id", "43253:7:deny_custom_622918"), ), + ExpectNonEmptyPlan: true, }, }, }) diff --git a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_test.go b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_test.go index 649cb5ddb..d0aa24747 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_custom_rule_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_custom_rule_test.go @@ -59,6 +59,7 @@ func TestAccAkamaiCustomRule_res_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("akamai_appsec_custom_rule.test", "id", "43253:661699"), ), + ExpectNonEmptyPlan: true, }, { Config: loadFixtureString("testdata/TestResCustomRule/update_by_id.tf"), @@ -66,6 +67,7 @@ func TestAccAkamaiCustomRule_res_basic(t *testing.T) { resource.TestCheckResourceAttr("akamai_appsec_custom_rule.test", "id", "43253:661699"), //resource.TestCheckResourceAttr("akamai_appsec_custom_rule.test", "rules", compactJSON(loadFixtureBytes("testdata/TestResCustomRule/custom_rules.json"))), ), + ExpectNonEmptyPlan: true, }, }, }) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index f4667c747..29c5b9b2a 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -125,7 +125,8 @@ func InitTemplates(otm map[string]*OutputTemplate) { //Extensions otm["apiEndpointsDS"] = &OutputTemplate{TemplateName: "apiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} - otm["AttackGroupConditionException"] = &OutputTemplate{TemplateName: "AttackGroupConditionException", TableTitle: "Conditions|Exceptions|Advanced Exceptions", TemplateType: "TABULAR", TemplateString: "{{$length := len .AdvancedExceptionsList.Conditions}}{{ if eq $length 0 }}False{{else}}True{{end}}|{{if .Exception}}True{{else}}False{{end}}|{{if .AdvancedExceptionsList }}True{{else}}False{{end}}"} + // otm["AttackGroupConditionException"] = &OutputTemplate{TemplateName: "AttackGroupConditionException", TableTitle: "Conditions|Exceptions|Advanced Exceptions", TemplateType: "TABULAR", TemplateString: "{{$length := len .AdvancedExceptionsList.Conditions}}{{ if eq $length 0 }}False{{else}}True{{end}}|{{if .Exception}}True{{else}}False{{end}}|{{if .AdvancedExceptionsList }}True{{else}}False{{end}}"} + //otm["AttackGroupConditionException"] = &OutputTemplate{TemplateName: "AttackGroupConditionException", TableTitle: "Conditions|Exceptions|Advanced Exceptions", TemplateType: "TABULAR", TemplateString: "{{$length := len .AdvancedExceptionsList.Conditions}}{{ if eq $length 0 }}False{{else}}True{{end}}|{{if .Exception}}True{{else}}False{{end}}|{{if .AdvancedExceptionsList }}True{{else}}False{{end}}"} otm["policyApiEndpointsDS"] = &OutputTemplate{TemplateName: "policyApiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} otm["apiHostnameCoverageDS"] = &OutputTemplate{TemplateName: "apiHostnameCoverageDS", TableTitle: "Config ID|Config Name|Version|Status|Has Match Target|Hostname", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .HostnameCoverage}}{{if $index}},{{end}}{{.Configuration.ID}}|{{.Configuration.Name}}|{{.Configuration.Version}}|{{.Status}}|{{.HasMatchTarget}}|{{.Hostname}}{{end}}"} @@ -187,10 +188,11 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["AdvancedSettingsPrefetch.tf"] = &OutputTemplate{TemplateName: "AdvancedSettingsPrefetch.tf", TableTitle: "AdvancedSettingsPrefetch", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_advanced_settings_prefetch\" \"akamai_appsec_advanced_settings_prefetch\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_app_layer = {{.AdvancedOptions.Prefetch.EnableAppLayer}} \n all_extensions = {{.AdvancedOptions.Prefetch.AllExtensions}}\n enable_rate_controls = {{.AdvancedOptions.Prefetch.EnableRateControls}}\n extensions = [{{ range $index, $element := .AdvancedOptions.Prefetch.Extensions }}{{if $index}},{{end}}{{quote .}}{{end}}] \n } \n"} otm["ApiRequestConstraints.tf"] = &OutputTemplate{TemplateName: "ApiRequestConstraints.tf", TableTitle: "ApiRequestConstraints", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range $index1, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{if .APIRequestConstraints.Action}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_{{$prev_secpolicy}}{{if $index1}}_{{$index1}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n action = \"{{.APIRequestConstraints.Action}}\" \n }{{end}}\n {{range $index, $element := .APIRequestConstraints.APIEndpoints}}\nresource \"akamai_appsec_api_request_constraints\" \"api_request_constraints_override_{{.ID}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n api_endpoint_id = \"{{.ID}}\" \n action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["AttackGroupAction.tf"] = &OutputTemplate{TemplateName: "AttackGroupAction.tf", TableTitle: "AttackGroupAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}\nresource \"akamai_appsec_attack_group_action\" \"akamai_appsec_attack_group_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n attack_group_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}{{ if or .AdvancedExceptions.Conditions .Exception .AdvancedExceptions.SpecificHeaderCookieOrParamNameValue .AdvancedExceptions.SpecificHeaderCookieParamXMLOrJSONNames }}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["AttackGroupConditionException.tf"] = &OutputTemplate{TemplateName: "AttackGroupConditionException.tf", TableTitle: "AttackGroupConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.AttackGroupActions}}{{ if or .AdvancedExceptions .Exception}}\nresource \"akamai_appsec_attack_group_condition_exception\" \"akamai_appsec_attack_group_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n attack_group = \"{{.Group}}\" \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} otm["EvalAction.tf"] = &OutputTemplate{TemplateName: "EvalActions.tf", TableTitle: "EvalActions", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}\nresource \"akamai_appsec_eval_rule_action\" \"akamai_appsec_eval_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if or .Conditions .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue }}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["EvalRuleConditionException.tf"] = &OutputTemplate{TemplateName: "EvalRuleConditionException.tf", TableTitle: "EvalRuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.Evaluation.RuleActions}}{{ if or .Conditions .Exception}}\nresource \"akamai_appsec_eval_rule_condition_exception\" \"akamai_appsec_eval_rule_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["CustomDeny.tf"] = &OutputTemplate{TemplateName: "CustomDeny.tf", TableTitle: "CustomDeny", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .CustomDenyList}}\nresource \"akamai_appsec_custom_deny\" \"akamai_appsec_custom_deny{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n custom_deny = <<-EOF\n {{marshal .}} \n EOF \n \n }\n{{end}}"} otm["CustomRule.tf"] = &OutputTemplate{TemplateName: "CustomRule.tf", TableTitle: "CustomRule", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{range $index, $element := .CustomRules}} \nresource \"akamai_appsec_custom_rule\" \"akamai_appsec_custom_rule{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n custom_rule = <<-EOF\n {{marshal .}} \n EOF \n }\n {{end}}"} otm["CustomRuleAction.tf"] = &OutputTemplate{TemplateName: "CustomRuleAction.tf", TableTitle: "CustomRuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ range $index, $element := .SecurityPolicies }}{{$prev_secpolicy:=$element.ID}} {{ range $index, $element := .CustomRuleActions }} \nresource \"akamai_appsec_custom_rule_action\" \"akamai_appsec_custom_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}}\n security_policy_id = \"{{$prev_secpolicy}}\" \n custom_rule_id = {{.ID}} \n custom_rule_action = \"{{.Action}}\" \n } \n {{end}}{{end}}"} @@ -201,7 +203,8 @@ func InitTemplates(otm map[string]*OutputTemplate) { otm["ReputationProfile.tf"] = &OutputTemplate{TemplateName: "ReputationProfile.tf", TableTitle: "ReputationProfile", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{range $index, $element := .ReputationProfiles}}\nresource \"akamai_appsec_reputation_profile\" \"akamai_appsec_reputation_profile{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config}}\n version = {{ $version }}\n reputation_profile = <<-EOF\n {{marshal .}} \n \n EOF \n }{{end}}"} otm["ReputationProfileAction.tf"] = &OutputTemplate{TemplateName: "ReputationProfileAction.tf", TableTitle: "ReputationProfileAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .ClientReputation.ReputationProfileActions}}\nresource \"akamai_appsec_reputation_profile_action\" \"akamai_appsec_reputation_profile_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_id = \"{{$prev_secpolicy}}\" \n reputation_profile_id = \"{{.Action}}\" \n }\n{{end}}{{end}}"} otm["RuleAction.tf"] = &OutputTemplate{TemplateName: "RuleAction.tf", TableTitle: "RuleAction", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}\nresource \"akamai_appsec_rule_action\" \"akamai_appsec_rule_action_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n rule_action = \"{{.Action}}\" \n }\n{{end}}{{end}}"} - otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if or .Conditions .Exception.AnyHeaderCookieOrParam .Exception.SpecificHeaderCookieOrParamNameValue}}\nresource \"akamai_appsec_rule_condition_exception\" \"akamai_appsec_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["RuleConditionException.tf"] = &OutputTemplate{TemplateName: "RuleConditionException.tf", TableTitle: "RuleConditionException", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{range .SecurityPolicies}}{{$prev_secpolicy := .ID}} {{range $index, $element := .WebApplicationFirewall.RuleActions}}{{ if or .Conditions .Exception }}\nresource \"akamai_appsec_rule_condition_exception\" \"akamai_appsec_condition_exception_{{$prev_secpolicy}}{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{$config}}\n version = {{$version}} \n security_policy_id = \"{{$prev_secpolicy}}\" \n rule_id = {{.ID}} \n condition_exception = <<-EOF\n {{marshal .}} \n \n EOF \n \n }\n{{end}}{{end}}{{end}}"} + otm["SecurityPolicy.tf"] = &OutputTemplate{TemplateName: "SecurityPolicy.tf", TableTitle: "SecurityPolicy", TemplateType: "TERRAFORM", TemplateString: "{{ $config := .ConfigID }}{{ $version := .Version }}{{ $prev_secpolicy := \"\" }}{{ $spx := \"\" }} {{range $index, $element := .SecurityPolicies}}{{$prev_secpolicy := .ID}}{{ $spx := splitprefix \"_\" .ID}} \nresource \"akamai_appsec_security_policy\" \"akamai_appsec_security_policy{{if $index}}_{{$index}}{{end}}\" { \n config_id = {{ $config }}\n version = {{ $version }}\n security_policy_name = \"{{.Name}}\" \n security_policy_prefix = \"{{$spx._0}}\" \n default_settings = true \n }\n{{end}}"} otm["SelectedHostname.tf"] = &OutputTemplate{TemplateName: "SelectedHostname.tf", TableTitle: "SelectedHostname", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_selected_hostnames\" \"akamai_appsec_selected_hostname\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n mode = \"REPLACE\" \n hostnames = [{{ range $index, $element := .SelectedHosts }}{{if $index}},{{end}}{{quote .}}{{end}}] \n }"} otm["SiemSettings.tf"] = &OutputTemplate{TemplateName: "SiemSettings.tf", TableTitle: "SiemSettings", TemplateType: "TERRAFORM", TemplateString: "\nresource \"akamai_appsec_siem_settings\" \"siem_settings\" { \n config_id = {{.ConfigID}}\n version = {{.Version}}\n enable_siem = {{.Siem.EnableSiem}} \n enable_for_all_policies = {{.Siem.EnableForAllPolicies}}\n enable_botman_siem = {{.Siem.EnabledBotmanSiemEvents}}\n siem_id = {{.Siem.SiemDefinitionID}}\n security_policy_ids = [{{ range $index, $element := .Siem.FirewallPolicyIds}}{{if $index}},{{end}}{{quote .}}{{end}}] \n \n } \n"} From d660a3392d6d405d5fd05bb97c6fbe84c2d9e99c Mon Sep 17 00:00:00 2001 From: "Narra, Vinnuth" Date: Thu, 18 Feb 2021 15:52:08 -0500 Subject: [PATCH 198/215] enforce property-snippets dir and .json file extension check --- .../data_akamai_property_rules_template.go | 31 ++++++++----------- ...ata_akamai_property_rules_template_test.go | 11 ++++--- .../output/plain_json.json | 27 ++++++++++++++++ .../template_file_not_found.tf | 2 +- 4 files changed, 47 insertions(+), 24 deletions(-) create mode 100644 pkg/providers/property/testdata/TestDSRulesTemplate/output/plain_json.json diff --git a/pkg/providers/property/data_akamai_property_rules_template.go b/pkg/providers/property/data_akamai_property_rules_template.go index caad9824e..576ce4c19 100644 --- a/pkg/providers/property/data_akamai_property_rules_template.go +++ b/pkg/providers/property/data_akamai_property_rules_template.go @@ -97,6 +97,16 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m if err != nil { return diag.FromErr(err) } + if _, err := os.Stat(file); err != nil { + if os.IsNotExist(err) { + return diag.FromErr(err) + } + } + dir := filepath.Dir(file) + if filepath.Base(dir) != "property-snippets" || filepath.Ext(file) != ".json" { + logger.Errorf("snippets file should be under 'property-snippets' folder with .json extension: %s", file) + return diag.FromErr(fmt.Errorf("snippets file should be under 'property-snippets' folder with .json extension. Invalid file: %s ", file)) + } varsMap := make(map[string]interface{}) vars, err := tools.GetSetValue("variables", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { @@ -131,19 +141,6 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m if err != nil { return diag.FromErr(err) } - dir := filepath.Dir(file) - folders := snippetsFolderRegexp.FindStringSubmatch(file) - if len(folders) == 0 { - folders = snippetsOneFolderRegex.FindStringSubmatch(file) - } - if len(folders) != 0 || folders != nil { - if folders[1] != "property-snippets" { - logger.Warnf("Snippets file should be under 'property-snippets' folder instead of: %s", folders[1]) - return diag.FromErr(fmt.Errorf("Snippets file should be under 'property-snippets' folder instead of %s folder", folders[1])) - } - } else { - return diag.FromErr(fmt.Errorf("Snippets file should be under 'property-snippets' folder instead of %s folder", folders)) - } templateFiles := make(map[string]string) err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { @@ -206,11 +203,9 @@ func dataAkamaiPropertyRulesRead(ctx context.Context, d *schema.ResourceData, m } var ( - includeRegexp = regexp.MustCompile(`"#include:.+"`) - varRegexp = regexp.MustCompile(`"\${.+}"`) - jsonFileRegexp = regexp.MustCompile(`\.json+$`) - snippetsFolderRegexp = regexp.MustCompile(`.*\/(.*)\/`) - snippetsOneFolderRegex = regexp.MustCompile(`(.+)\/([^\/]+)`) + includeRegexp = regexp.MustCompile(`"#include:.+"`) + varRegexp = regexp.MustCompile(`"\${.+}"`) + jsonFileRegexp = regexp.MustCompile(`\.json+$`) ) var ( diff --git a/pkg/providers/property/data_akamai_property_rules_template_test.go b/pkg/providers/property/data_akamai_property_rules_template_test.go index 1e2da4d82..64476454b 100644 --- a/pkg/providers/property/data_akamai_property_rules_template_test.go +++ b/pkg/providers/property/data_akamai_property_rules_template_test.go @@ -152,7 +152,7 @@ func TestDataAkamaiPropertyRulesRead(t *testing.T) { Steps: []resource.TestStep{ { Config: loadFixtureString("testdata/TestDSRulesTemplate/template_file_not_found.tf"), - ExpectError: regexp.MustCompile(`template "snippets/not_found.json" not defined`), + ExpectError: regexp.MustCompile(`Error: stat testdata/TestDSRulesTemplate/rules/property-snippets/non-existent.json: no such file or directory`), }, }, }) @@ -181,7 +181,7 @@ func TestDataAkamaiPropertyRulesRead(t *testing.T) { Steps: []resource.TestStep{ { Config: loadFixtureString("testdata/TestDSRulesTemplate/template_invalid_snippets_folder_json.tf"), - ExpectError: regexp.MustCompile(`Error: Snippets file should be under 'property-snippets' folder instead of output`), + ExpectError: regexp.MustCompile(`Error: snippets file should be under 'property-snippets' folder with .json extension. Invalid file: testdata/TestDSRulesTemplate/output/template_invalid_json.json`), }, }, }) @@ -196,7 +196,7 @@ func TestDataAkamaiPropertyRulesRead(t *testing.T) { Steps: []resource.TestStep{ { Config: loadFixtureString("testdata/TestDSRulesTemplate/template_invalid_snippets_only_one_folder_json.tf"), - ExpectError: regexp.MustCompile(`Error: Snippets file should be under 'property-snippets' folder instead of property-snippet`), + ExpectError: regexp.MustCompile(`Error: snippets file should be under 'property-snippets' folder with .json extension. Invalid file: property-snippet/template_invalid_json.json`), }, }, }) @@ -423,7 +423,8 @@ func TestConvertToTypedMap(t *testing.T) { } func TestConvertToTemplate(t *testing.T) { - templates := "testData/TestDSRulesTemplate/rules/templates" + templates := "testData/TestDSRulesTemplate/rules/property-snippets" + templatesOut := "testData/TestDSRulesTemplate/output" tests := map[string]struct { givenFile string expectedFile string @@ -450,7 +451,7 @@ func TestConvertToTemplate(t *testing.T) { return } require.NoError(t, err) - expected := loadFixtureString(fmt.Sprintf("%s/%s", templates, test.expectedFile)) + expected := loadFixtureString(fmt.Sprintf("%s/%s", templatesOut, test.expectedFile)) assert.Equal(t, expected, res) }) } diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/output/plain_json.json b/pkg/providers/property/testdata/TestDSRulesTemplate/output/plain_json.json new file mode 100644 index 000000000..c3dad8015 --- /dev/null +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/output/plain_json.json @@ -0,0 +1,27 @@ +{ + "rules": { + "name": "test", + "children": [ + { + "name": "RUM", + "children": [ + ], + "behaviors": [ + { + "name": "mPulse", + "options": { + "enabled": true, + "requirePci": false, + "titleOptional": "", + "apiKey": "", + "bufferSize": "", + "configOverride": "" + } + } + ], + "criteria": [], + "criteriaMustSatisfy": "all" + } + ] + } +} diff --git a/pkg/providers/property/testdata/TestDSRulesTemplate/template_file_not_found.tf b/pkg/providers/property/testdata/TestDSRulesTemplate/template_file_not_found.tf index 3c1009311..70582b43a 100644 --- a/pkg/providers/property/testdata/TestDSRulesTemplate/template_file_not_found.tf +++ b/pkg/providers/property/testdata/TestDSRulesTemplate/template_file_not_found.tf @@ -3,7 +3,7 @@ provider "akamai" { } data "akamai_property_rules_template" "test" { - template_file = "testdata/TestDSRulesTemplate/rules/property-snippets/template_file_not_found.json" + template_file = "testdata/TestDSRulesTemplate/rules/property-snippets/non-existent.json" variables { name = "criteriaMustSatisfy" value = "all" From 9ead7a4de7b7c37db70e527e77c331c57bf12902 Mon Sep 17 00:00:00 2001 From: Philip Lodine Date: Thu, 18 Feb 2021 16:11:17 -0500 Subject: [PATCH 199/215] SECKSD-9208 - fix null action & api_endpoint_id on import Fixes null values remaining in terraform.tfstate on import of api_request_constraints resource --- ...e_akamai_appsec_api_request_constraints.go | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go index 660ee3bde..80268a75b 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go @@ -40,15 +40,15 @@ func resourceApiRequestConstraints() *schema.Resource { Type: schema.TypeString, Required: true, }, - "api_endpoint_id": { - Type: schema.TypeInt, - Optional: true, - }, "action": { Type: schema.TypeString, Required: true, ValidateFunc: ValidateActions, }, + "api_endpoint_id": { + Type: schema.TypeInt, + Optional: true, + }, }, } } @@ -75,7 +75,6 @@ func resourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceDa getApiRequestConstraints.Version = version policyid := s[2] - getApiRequestConstraints.PolicyID = policyid if len(s) >= 4 { @@ -83,7 +82,6 @@ func resourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceDa if errconv != nil { return diag.FromErr(errconv) } - getApiRequestConstraints.ApiID = apiID } } else { @@ -111,7 +109,7 @@ func resourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceDa } getApiRequestConstraints.ApiID = ApiID } - _, err := client.GetApiRequestConstraints(ctx, getApiRequestConstraints) + response, err := client.GetApiRequestConstraints(ctx, getApiRequestConstraints) if err != nil { logger.Errorf("calling 'getApiRequestConstraints': %s", err.Error()) return diag.FromErr(err) @@ -129,6 +127,22 @@ func resourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceDa return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } + if err := d.Set("api_endpoint_id", getApiRequestConstraints.ApiID); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + + if getApiRequestConstraints.ApiID != 0 { + if len(response.APIEndpoints) > 0 { + for _, val := range response.APIEndpoints { + if val.ID == getApiRequestConstraints.ApiID { + if err := d.Set("action", val.Action); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) + } + } + } + } + } + d.SetId(fmt.Sprintf("%d:%d:%s", getApiRequestConstraints.ConfigID, getApiRequestConstraints.Version, getApiRequestConstraints.PolicyID)) return nil From ac87fd3cea9b6d0551487446c0081db5e9a5b406 Mon Sep 17 00:00:00 2001 From: Philip Lodine Date: Thu, 18 Feb 2021 17:31:34 -0500 Subject: [PATCH 200/215] Update CHANGELOG.md for 1.3.0 release --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5aea1a85..036a08a14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # RELEASE NOTES +## 1.3.0 (Feb. 18, 2021) APPSEC - Extended list of supported list endpoints from APPSEC API: + * Custom Deny + * SIEM Setting + * Advanced Options Settings + * API Match Target + * API Request Constraint + * Create/Delete/Rename Security Policy + * Host Coverage / Edit Version Notes + * All WAP Features / WAP Hostname Evaluation + * Create Security Configuration + * Rename Security Configuration Version + * Delete Security Configuration Version + * Clone Security Configuration + * Import tool for adding existing resources to Terraform state + ## 1.2.1 (Feb 3, 2021) #### BUG FIXES: From 5b751ea24b395dd62d10949e9e0733603bc780dd Mon Sep 17 00:00:00 2001 From: Edward Lynes Date: Fri, 19 Feb 2021 10:39:30 -0500 Subject: [PATCH 201/215] review comments. Skip zone delete if testing --- pkg/providers/dns/resource_akamai_dns_zone.go | 10 +++++-- .../dns/resource_akamai_dns_zone_test.go | 27 +++++++++++++------ 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/pkg/providers/dns/resource_akamai_dns_zone.go b/pkg/providers/dns/resource_akamai_dns_zone.go index 04b6c9416..ab25d3248 100644 --- a/pkg/providers/dns/resource_akamai_dns_zone.go +++ b/pkg/providers/dns/resource_akamai_dns_zone.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "net/http" + "os" "strings" "time" @@ -448,7 +449,12 @@ func resourceDNSv2ZoneDelete(ctx context.Context, d *schema.ResourceData, m inte } meta := akamai.Meta(m) logger := meta.Log("AkamaiDNS", "resourceDNSZoneDelete") - logger.WithField("zone", hostname).Info("Zone Import") + logger.WithField("zone", hostname).Info("Zone Delete") + // Ignore for Unit test Lifecycle + if _, ok := os.LookupEnv("DNS_ZONE_SKIP_DELETE"); ok { + logger.Info("DNS Zone delete: intentially skipping") + return nil + } logger.Warn("DNS Zone deletion not allowed") // No ZONE delete operation permitted. @@ -650,7 +656,7 @@ func checkZoneSOAandNSRecords(ctx context.Context, meta akamai.OperationMeta, zo } logger.Warnf("SOA and NS records don't exist. Creating ...") - nameservers, err := inst.Client(meta).GetNameServerRecordList(ctx, zone.ContractID) // ([]string, error) + nameservers, err := inst.Client(meta).GetNameServerRecordList(ctx, zone.ContractID) if err != nil { return err } diff --git a/pkg/providers/dns/resource_akamai_dns_zone_test.go b/pkg/providers/dns/resource_akamai_dns_zone_test.go index 8f6388c2b..fdb6fdf18 100644 --- a/pkg/providers/dns/resource_akamai_dns_zone_test.go +++ b/pkg/providers/dns/resource_akamai_dns_zone_test.go @@ -1,22 +1,24 @@ package dns import ( - "net/http" - "testing" - dns "github.com/akamai/AkamaiOPEN-edgegrid-golang/v2/pkg/configdns" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/stretchr/testify/mock" + "net/http" + "os" + "testing" ) func TestResDnsZone(t *testing.T) { zone := &dns.ZoneResponse{ - ContractID: "ctr2", - Zone: "primaryexampleterraform.io", - Type: "primary", - Comment: "This is a test primary zone", - SignAndServe: false, + ContractID: "ctr2", + Zone: "primaryexampleterraform.io", + Type: "primary", + Comment: "This is a test primary zone", + SignAndServe: false, + ActivationState: "PENDING", } + recordsetsResp := &dns.RecordSetResponse{Recordsets: make([]dns.Recordset, 2, 2)} // This test peforms a full life-cycle (CRUD) test t.Run("lifecycle test", func(t *testing.T) { @@ -56,8 +58,17 @@ func TestResDnsZone(t *testing.T) { mock.AnythingOfType("*dns.ZoneCreate"), ).Return(nil) + client.On("GetRecordsets", + mock.Anything, // ctx is irrelevant for this test + zone.Zone, + mock.AnythingOfType("[]dns.RecordsetQueryArgs"), + ).Return(recordsetsResp, nil) + dataSourceName := "akamai_dns_zone.primary_test_zone" + // work around to skip Delete which fails intentionally + os.Setenv("DNS_ZONE_SKIP_DELETE", "") + defer os.Unsetenv("DNS_ZONE_SKIP_DELETE") useClient(client, func() { resource.UnitTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, From 870e5db7d35005f709c923b2a98849eb1205d2b4 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 19 Feb 2021 14:14:28 -0600 Subject: [PATCH 202/215] Remove commented code --- pkg/providers/appsec/templates.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pkg/providers/appsec/templates.go b/pkg/providers/appsec/templates.go index 29c5b9b2a..ad69fae84 100644 --- a/pkg/providers/appsec/templates.go +++ b/pkg/providers/appsec/templates.go @@ -22,10 +22,8 @@ type OutputTemplate struct { func GetTemplate(ots map[string]*OutputTemplate, key string) (*OutputTemplate, error) { if f, ok := ots[key]; ok && f != nil { - //fmt.Printf("%s is in the OutputTemplate >> %+v\n", key, f) return f, nil } else { - //fmt.Printf("%s is NOT in the OutputTemplate!\n", key) return nil, fmt.Errorf("Error not found") } } @@ -125,8 +123,7 @@ func InitTemplates(otm map[string]*OutputTemplate) { //Extensions otm["apiEndpointsDS"] = &OutputTemplate{TemplateName: "apiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} - // otm["AttackGroupConditionException"] = &OutputTemplate{TemplateName: "AttackGroupConditionException", TableTitle: "Conditions|Exceptions|Advanced Exceptions", TemplateType: "TABULAR", TemplateString: "{{$length := len .AdvancedExceptionsList.Conditions}}{{ if eq $length 0 }}False{{else}}True{{end}}|{{if .Exception}}True{{else}}False{{end}}|{{if .AdvancedExceptionsList }}True{{else}}False{{end}}"} - //otm["AttackGroupConditionException"] = &OutputTemplate{TemplateName: "AttackGroupConditionException", TableTitle: "Conditions|Exceptions|Advanced Exceptions", TemplateType: "TABULAR", TemplateString: "{{$length := len .AdvancedExceptionsList.Conditions}}{{ if eq $length 0 }}False{{else}}True{{end}}|{{if .Exception}}True{{else}}False{{end}}|{{if .AdvancedExceptionsList }}True{{else}}False{{end}}"} + otm["AttackGroupConditionException"] = &OutputTemplate{TemplateName: "AttackGroupConditionException", TableTitle: "Conditions|Exceptions|Advanced Exceptions", TemplateType: "TABULAR", TemplateString: "{{$length := len .AdvancedExceptionsList.Conditions}}{{ if eq $length 0 }}False{{else}}True{{end}}|{{if .Exception}}True{{else}}False{{end}}|{{if .AdvancedExceptionsList }}True{{else}}False{{end}}"} otm["policyApiEndpointsDS"] = &OutputTemplate{TemplateName: "policyApiEndpointsDS", TableTitle: "ID|Endpoint Name", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .APIEndpoints}}{{if $index}},{{end}}{{.ID}}|{{.Name}}{{end}}"} otm["apiHostnameCoverageDS"] = &OutputTemplate{TemplateName: "apiHostnameCoverageDS", TableTitle: "Config ID|Config Name|Version|Status|Has Match Target|Hostname", TemplateType: "TABULAR", TemplateString: "{{range $index, $element := .HostnameCoverage}}{{if $index}},{{end}}{{.Configuration.ID}}|{{.Configuration.Name}}|{{.Configuration.Version}}|{{.Status}}|{{.HasMatchTarget}}|{{.Hostname}}{{end}}"} From 122d6f6c3c108dacf72acd7943efd238283a29a1 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 19 Feb 2021 14:31:29 -0600 Subject: [PATCH 203/215] Remove commented code rename logging in datasources --- .../appsec/data_akamai_appsec_advanced_settings_logging.go | 2 +- .../appsec/data_akamai_appsec_advanced_settings_prefetch.go | 2 +- pkg/providers/appsec/data_akamai_appsec_api_endpoints.go | 2 +- .../appsec/data_akamai_appsec_api_hostname_coverage.go | 2 +- ...data_akamai_appsec_api_hostname_coverage_match_targets.go | 2 +- .../data_akamai_appsec_api_hostname_coverage_overlapping.go | 2 +- .../appsec/data_akamai_appsec_api_request_constraints.go | 2 +- .../appsec/data_akamai_appsec_attack_group_actions.go | 2 +- .../data_akamai_appsec_attack_group_condition_exception.go | 2 +- .../appsec/data_akamai_appsec_bypass_network_lists.go | 2 +- .../appsec/data_akamai_appsec_configuration_version.go | 2 +- pkg/providers/appsec/data_akamai_appsec_contracts_groups.go | 2 +- pkg/providers/appsec/data_akamai_appsec_custom_deny.go | 2 +- .../appsec/data_akamai_appsec_custom_rule_actions.go | 2 +- pkg/providers/appsec/data_akamai_appsec_custom_rules.go | 2 +- pkg/providers/appsec/data_akamai_appsec_eval.go | 2 +- pkg/providers/appsec/data_akamai_appsec_eval_hostnames.go | 2 +- pkg/providers/appsec/data_akamai_appsec_eval_rule_actions.go | 2 +- .../data_akamai_appsec_eval_rule_condition_exception.go | 2 +- .../appsec/data_akamai_appsec_export_configuration.go | 2 +- .../appsec/data_akamai_appsec_failover_hostnames.go | 2 +- pkg/providers/appsec/data_akamai_appsec_ip_geo.go | 2 +- pkg/providers/appsec/data_akamai_appsec_match_targets.go | 2 +- pkg/providers/appsec/data_akamai_appsec_penalty_box.go | 2 +- pkg/providers/appsec/data_akamai_appsec_rate_policies.go | 2 +- .../appsec/data_akamai_appsec_rate_policy_actions.go | 2 +- .../appsec/data_akamai_appsec_reputation_analysis.go | 2 +- .../appsec/data_akamai_appsec_reputation_profile_actions.go | 2 +- .../appsec/data_akamai_appsec_reputation_profiles.go | 2 +- .../appsec/data_akamai_appsec_reputation_protections.go | 2 +- pkg/providers/appsec/data_akamai_appsec_rule_actions.go | 2 +- .../appsec/data_akamai_appsec_rule_condition_exception.go | 2 +- pkg/providers/appsec/data_akamai_appsec_rule_upgrade.go | 2 +- pkg/providers/appsec/data_akamai_appsec_security_policy.go | 2 +- .../appsec/data_akamai_appsec_security_policy_protections.go | 2 +- .../appsec/data_akamai_appsec_selectable_hostnames.go | 2 +- .../appsec/data_akamai_appsec_selected_hostnames.go | 2 +- pkg/providers/appsec/data_akamai_appsec_siem_definitions.go | 2 +- pkg/providers/appsec/data_akamai_appsec_siem_settings.go | 3 +-- .../data_akamai_appsec_slow_post_protection_settings.go | 2 +- .../appsec/data_akamai_appsec_slowpost_protections.go | 2 +- pkg/providers/appsec/data_akamai_appsec_version_notes.go | 2 +- pkg/providers/appsec/data_akamai_appsec_waf_mode.go | 2 +- pkg/providers/appsec/data_akamai_appsec_waf_protections.go | 2 +- .../appsec/resource_akamai_appsec_match_target_test.go | 5 +---- 45 files changed, 45 insertions(+), 49 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go index 7608f79b0..474681fbe 100644 --- a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go +++ b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_logging.go @@ -47,7 +47,7 @@ func dataSourceAdvancedSettingsLogging() *schema.Resource { func dataSourceAdvancedSettingsLoggingRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceAdvancedSettingsLoggingRead") + logger := meta.Log("APPSEC", "dataSourceAdvancedSettingsLoggingRead") getAdvancedSettingsLogging := appsec.GetAdvancedSettingsLoggingRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch.go b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch.go index 1f68aa250..33d6a6b39 100644 --- a/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch.go +++ b/pkg/providers/appsec/data_akamai_appsec_advanced_settings_prefetch.go @@ -43,7 +43,7 @@ func dataSourceAdvancedSettingsPrefetch() *schema.Resource { func dataSourceAdvancedSettingsPrefetchRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceAdvancedSettingsPrefetchRead") + logger := meta.Log("APPSEC", "dataSourceAdvancedSettingsPrefetchRead") getAdvancedSettingsPrefetch := appsec.GetAdvancedSettingsPrefetchRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go b/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go index 6b14805f0..9ec437f50 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_endpoints.go @@ -57,7 +57,7 @@ func dataSourceApiEndpoints() *schema.Resource { func dataSourceApiEndpointsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceApiEndpointsRead") + logger := meta.Log("APPSEC", "dataSourceApiEndpointsRead") getApiEndpoints := appsec.GetApiEndpointsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go index 04427376e..464be0e28 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go @@ -34,7 +34,7 @@ func dataSourceApiHostnameCoverage() *schema.Resource { func dataSourceApiHostnameCoverageRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceApiHostnameCoverageRead") + logger := meta.Log("APPSEC", "dataSourceApiHostnameCoverageRead") getApiHostnameCoverage := appsec.GetApiHostnameCoverageRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets.go index b492f62af..a134d69e9 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_match_targets.go @@ -47,7 +47,7 @@ func dataSourceApiHostnameCoverageMatchTargets() *schema.Resource { func dataSourceApiHostnameCoverageMatchTargetsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceApiHostnameCoverageMatchTargetsRead") + logger := meta.Log("APPSEC", "dataSourceApiHostnameCoverageMatchTargetsRead") getApiHostnameCoverageMatchTargets := appsec.GetApiHostnameCoverageMatchTargetsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping.go index cde548b33..558c3c7a7 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage_overlapping.go @@ -47,7 +47,7 @@ func dataSourceApiHostnameCoverageOverlapping() *schema.Resource { func dataSourceApiHostnameCoverageOverlappingRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceApiHostnameCoverageOverlappingRead") + logger := meta.Log("APPSEC", "dataSourceApiHostnameCoverageOverlappingRead") getApiHostnameCoverageOverlapping := appsec.GetApiHostnameCoverageOverlappingRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_api_request_constraints.go b/pkg/providers/appsec/data_akamai_appsec_api_request_constraints.go index b59b98e42..e6bb2e200 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_request_constraints.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_request_constraints.go @@ -51,7 +51,7 @@ func dataSourceApiRequestConstraints() *schema.Resource { func dataSourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceApiRequestConstraintsRead") + logger := meta.Log("APPSEC", "dataSourceApiRequestConstraintsRead") getApiRequestConstraints := v2.GetApiRequestConstraintsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_attack_group_actions.go b/pkg/providers/appsec/data_akamai_appsec_attack_group_actions.go index 56e35a870..458348337 100644 --- a/pkg/providers/appsec/data_akamai_appsec_attack_group_actions.go +++ b/pkg/providers/appsec/data_akamai_appsec_attack_group_actions.go @@ -55,7 +55,7 @@ func dataSourceAttackGroupActions() *schema.Resource { func dataSourceAttackGroupActionsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceAttackGroupActionsRead") + logger := meta.Log("APPSEC", "dataSourceAttackGroupActionsRead") getAttackGroupActions := appsec.GetAttackGroupActionsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_attack_group_condition_exception.go b/pkg/providers/appsec/data_akamai_appsec_attack_group_condition_exception.go index d29a11ca0..76a326bfb 100644 --- a/pkg/providers/appsec/data_akamai_appsec_attack_group_condition_exception.go +++ b/pkg/providers/appsec/data_akamai_appsec_attack_group_condition_exception.go @@ -50,7 +50,7 @@ func dataSourceAttackGroupConditionException() *schema.Resource { func dataSourceAttackGroupConditionExceptionRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceAttackGroupConditionExceptionsRead") + logger := meta.Log("APPSEC", "dataSourceAttackGroupConditionExceptionRead") getAttackGroupConditionException := appsec.GetAttackGroupConditionExceptionRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists.go b/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists.go index 453c94795..a70a0f5ce 100644 --- a/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists.go +++ b/pkg/providers/appsec/data_akamai_appsec_bypass_network_lists.go @@ -48,7 +48,7 @@ func dataSourceBypassNetworkLists() *schema.Resource { func dataSourceBypassNetworkListsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceBypassNetworkListsRead") + logger := meta.Log("APPSEC", "dataSourceBypassNetworkListsRead") getBypassNetworkLists := appsec.GetBypassNetworkListsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_configuration_version.go b/pkg/providers/appsec/data_akamai_appsec_configuration_version.go index ade5eb6dc..ecf17d3e6 100644 --- a/pkg/providers/appsec/data_akamai_appsec_configuration_version.go +++ b/pkg/providers/appsec/data_akamai_appsec_configuration_version.go @@ -49,7 +49,7 @@ func dataSourceConfigurationVersion() *schema.Resource { func dataSourceConfigurationVersionRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceConfigurationVersionRead") + logger := meta.Log("APPSEC", "dataSourceConfigurationVersionRead") getConfigurationVersion := appsec.GetConfigurationVersionsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go index ee7ed4ca6..ffb7a817a 100644 --- a/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go +++ b/pkg/providers/appsec/data_akamai_appsec_contracts_groups.go @@ -50,7 +50,7 @@ func dataSourceContractsGroups() *schema.Resource { func dataSourceContractsGroupsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceContractsGroupsRead") + logger := meta.Log("APPSEC", "dataSourceContractsGroupsRead") getContractsGroups := v2.GetContractsGroupsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_custom_deny.go b/pkg/providers/appsec/data_akamai_appsec_custom_deny.go index f152c6242..308be74df 100644 --- a/pkg/providers/appsec/data_akamai_appsec_custom_deny.go +++ b/pkg/providers/appsec/data_akamai_appsec_custom_deny.go @@ -46,7 +46,7 @@ func dataSourceCustomDeny() *schema.Resource { func dataSourceCustomDenyRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceCustomDenyRead") + logger := meta.Log("APPSEC", "dataSourceCustomDenyRead") getCustomDeny := appsec.GetCustomDenyListRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_custom_rule_actions.go b/pkg/providers/appsec/data_akamai_appsec_custom_rule_actions.go index 2438d2eca..766f0f310 100644 --- a/pkg/providers/appsec/data_akamai_appsec_custom_rule_actions.go +++ b/pkg/providers/appsec/data_akamai_appsec_custom_rule_actions.go @@ -45,7 +45,7 @@ func dataSourceCustomRuleActions() *schema.Resource { func dataSourceCustomRuleActionsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceCustomRuleActionsRead") + logger := meta.Log("APPSEC", "dataSourceCustomRuleActionsRead") getCustomRuleActions := appsec.GetCustomRuleActionsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_custom_rules.go b/pkg/providers/appsec/data_akamai_appsec_custom_rules.go index 1d3bc6adb..c1a5c3212 100644 --- a/pkg/providers/appsec/data_akamai_appsec_custom_rules.go +++ b/pkg/providers/appsec/data_akamai_appsec_custom_rules.go @@ -42,7 +42,7 @@ func dataSourceCustomRules() *schema.Resource { func dataSourceCustomRulesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceCustomRulesRead") + logger := meta.Log("APPSEC", "dataSourceCustomRulesRead") getCustomRules := appsec.GetCustomRulesRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_eval.go b/pkg/providers/appsec/data_akamai_appsec_eval.go index 327ead46c..87f666cab 100644 --- a/pkg/providers/appsec/data_akamai_appsec_eval.go +++ b/pkg/providers/appsec/data_akamai_appsec_eval.go @@ -41,7 +41,7 @@ func dataSourceEval() *schema.Resource { func dataSourceEvalRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceEvalRead") + logger := meta.Log("APPSEC", "dataSourceEvalRead") getEval := appsec.GetEvalRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_eval_hostnames.go b/pkg/providers/appsec/data_akamai_appsec_eval_hostnames.go index 083acb222..8aaa549e4 100644 --- a/pkg/providers/appsec/data_akamai_appsec_eval_hostnames.go +++ b/pkg/providers/appsec/data_akamai_appsec_eval_hostnames.go @@ -48,7 +48,7 @@ func dataSourceEvalHostnames() *schema.Resource { func dataSourceEvalHostnamesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceEvalHostnamesRead") + logger := meta.Log("APPSEC", "dataSourceEvalHostnamesRead") getEvalHostnames := appsec.GetEvalHostsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_eval_rule_actions.go b/pkg/providers/appsec/data_akamai_appsec_eval_rule_actions.go index e0ff43fab..97df8ca2a 100644 --- a/pkg/providers/appsec/data_akamai_appsec_eval_rule_actions.go +++ b/pkg/providers/appsec/data_akamai_appsec_eval_rule_actions.go @@ -54,7 +54,7 @@ func dataSourceEvalRuleActions() *schema.Resource { func dataSourceEvalRuleActionsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceEvalRuleActionsRead") + logger := meta.Log("APPSEC", "dataSourceEvalRuleActionsRead") getEvalRuleActions := appsec.GetEvalRuleActionsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_eval_rule_condition_exception.go b/pkg/providers/appsec/data_akamai_appsec_eval_rule_condition_exception.go index 8e3c4308a..dfc1b6ed8 100644 --- a/pkg/providers/appsec/data_akamai_appsec_eval_rule_condition_exception.go +++ b/pkg/providers/appsec/data_akamai_appsec_eval_rule_condition_exception.go @@ -50,7 +50,7 @@ func dataSourceEvalRuleConditionException() *schema.Resource { func dataSourceEvalRuleConditionExceptionRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceEvalRuleConditionExceptionRead") + logger := meta.Log("APPSEC", "dataSourceEvalRuleConditionExceptionRead") getEvalRuleConditionException := appsec.GetEvalRuleConditionExceptionRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_export_configuration.go b/pkg/providers/appsec/data_akamai_appsec_export_configuration.go index d1aafc70c..d1bba9f13 100644 --- a/pkg/providers/appsec/data_akamai_appsec_export_configuration.go +++ b/pkg/providers/appsec/data_akamai_appsec_export_configuration.go @@ -49,7 +49,7 @@ func dataSourceExportConfiguration() *schema.Resource { func dataSourceExportConfigurationRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceExportConfigurationRead") + logger := meta.Log("APPSEC", "dataSourceExportConfigurationRead") getExportConfiguration := appsec.GetExportConfigurationsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_failover_hostnames.go b/pkg/providers/appsec/data_akamai_appsec_failover_hostnames.go index 1843af8c7..70204cb4a 100644 --- a/pkg/providers/appsec/data_akamai_appsec_failover_hostnames.go +++ b/pkg/providers/appsec/data_akamai_appsec_failover_hostnames.go @@ -46,7 +46,7 @@ func dataSourceFailoverHostnames() *schema.Resource { func dataSourceFailoverHostnamesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceFailoverHostnamesRead") + logger := meta.Log("APPSEC", "dataSourceFailoverHostnamesRead") getFailoverHostnames := appsec.GetFailoverHostnamesRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_ip_geo.go b/pkg/providers/appsec/data_akamai_appsec_ip_geo.go index 1921ccf31..a6deb24d7 100644 --- a/pkg/providers/appsec/data_akamai_appsec_ip_geo.go +++ b/pkg/providers/appsec/data_akamai_appsec_ip_geo.go @@ -61,7 +61,7 @@ func dataSourceIPGeo() *schema.Resource { func dataSourceIPGeoRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceIPGeoRead") + logger := meta.Log("APPSEC", "dataSourceIPGeoRead") getIPGeo := appsec.GetIPGeoRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_match_targets.go b/pkg/providers/appsec/data_akamai_appsec_match_targets.go index dc6de8016..59e290db4 100644 --- a/pkg/providers/appsec/data_akamai_appsec_match_targets.go +++ b/pkg/providers/appsec/data_akamai_appsec_match_targets.go @@ -41,7 +41,7 @@ func dataSourceMatchTargets() *schema.Resource { func dataSourceMatchTargetsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceMatchTargetsRead") + logger := meta.Log("APPSEC", "dataSourceMatchTargetsRead") getMatchTargets := appsec.GetMatchTargetsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_penalty_box.go b/pkg/providers/appsec/data_akamai_appsec_penalty_box.go index a785881c9..49a177e1a 100644 --- a/pkg/providers/appsec/data_akamai_appsec_penalty_box.go +++ b/pkg/providers/appsec/data_akamai_appsec_penalty_box.go @@ -51,7 +51,7 @@ func dataSourcePenaltyBox() *schema.Resource { func dataSourcePenaltyBoxRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourcePenaltyBoxRead") + logger := meta.Log("APPSEC", "dataSourcePenaltyBoxRead") getPenaltyBox := appsec.GetPenaltyBoxRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_rate_policies.go b/pkg/providers/appsec/data_akamai_appsec_rate_policies.go index c3565ed42..f3254e878 100644 --- a/pkg/providers/appsec/data_akamai_appsec_rate_policies.go +++ b/pkg/providers/appsec/data_akamai_appsec_rate_policies.go @@ -46,7 +46,7 @@ func dataSourceRatePolicies() *schema.Resource { func dataSourceRatePoliciesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceRatePoliciesRead") + logger := meta.Log("APPSEC", "dataSourceRatePoliciesRead") getRatePolicies := appsec.GetRatePoliciesRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_rate_policy_actions.go b/pkg/providers/appsec/data_akamai_appsec_rate_policy_actions.go index b53259f8c..ccff394fa 100644 --- a/pkg/providers/appsec/data_akamai_appsec_rate_policy_actions.go +++ b/pkg/providers/appsec/data_akamai_appsec_rate_policy_actions.go @@ -45,7 +45,7 @@ func dataSourceRatePolicyActions() *schema.Resource { func dataSourceRatePolicyActionsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceRatePolicyActionsRead") + logger := meta.Log("APPSEC", "dataSourceRatePolicyActionsRead") getRatePolicyActions := appsec.GetRatePolicyActionsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_reputation_analysis.go b/pkg/providers/appsec/data_akamai_appsec_reputation_analysis.go index 8c815b622..59c60dd94 100644 --- a/pkg/providers/appsec/data_akamai_appsec_reputation_analysis.go +++ b/pkg/providers/appsec/data_akamai_appsec_reputation_analysis.go @@ -47,7 +47,7 @@ func dataSourceReputationAnalysis() *schema.Resource { func dataSourceReputationAnalysisRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceReputationAnalysisRead") + logger := meta.Log("APPSEC", "dataSourceReputationAnalysisRead") getReputationAnalysis := appsec.GetReputationAnalysisRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_reputation_profile_actions.go b/pkg/providers/appsec/data_akamai_appsec_reputation_profile_actions.go index 9eba6ded3..b279644f8 100644 --- a/pkg/providers/appsec/data_akamai_appsec_reputation_profile_actions.go +++ b/pkg/providers/appsec/data_akamai_appsec_reputation_profile_actions.go @@ -54,7 +54,7 @@ func dataSourceReputationProfileActions() *schema.Resource { func dataSourceReputationProfileActionsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceReputationProfileActionsRead") + logger := meta.Log("APPSEC", "dataSourceReputationProfileActionsRead") getReputationProfileActions := appsec.GetReputationProfileActionsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_reputation_profiles.go b/pkg/providers/appsec/data_akamai_appsec_reputation_profiles.go index e1aeb3562..d733878c4 100644 --- a/pkg/providers/appsec/data_akamai_appsec_reputation_profiles.go +++ b/pkg/providers/appsec/data_akamai_appsec_reputation_profiles.go @@ -46,7 +46,7 @@ func dataSourceReputationProfiles() *schema.Resource { func dataSourceReputationProfilesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceReputationProfilesRead") + logger := meta.Log("APPSEC", "dataSourceReputationProfilesRead") getReputationProfiles := appsec.GetReputationProfilesRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_reputation_protections.go b/pkg/providers/appsec/data_akamai_appsec_reputation_protections.go index 7c663f81e..a4e396a02 100644 --- a/pkg/providers/appsec/data_akamai_appsec_reputation_protections.go +++ b/pkg/providers/appsec/data_akamai_appsec_reputation_protections.go @@ -45,7 +45,7 @@ func dataSourceReputationProtections() *schema.Resource { func dataSourceReputationProtectionsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceReputationProtectionsRead") + logger := meta.Log("APPSEC", "dataSourceReputationProtectionsRead") getReputationProtections := appsec.GetReputationProtectionsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_rule_actions.go b/pkg/providers/appsec/data_akamai_appsec_rule_actions.go index 9967d2487..d3d4b6987 100644 --- a/pkg/providers/appsec/data_akamai_appsec_rule_actions.go +++ b/pkg/providers/appsec/data_akamai_appsec_rule_actions.go @@ -54,7 +54,7 @@ func dataSourceRuleActions() *schema.Resource { func dataSourceRuleActionsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceRuleActionsRead") + logger := meta.Log("APPSEC", "dataSourceRuleActionsRead") getRuleActions := appsec.GetRuleActionsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_rule_condition_exception.go b/pkg/providers/appsec/data_akamai_appsec_rule_condition_exception.go index df6ebef1c..960f64920 100644 --- a/pkg/providers/appsec/data_akamai_appsec_rule_condition_exception.go +++ b/pkg/providers/appsec/data_akamai_appsec_rule_condition_exception.go @@ -50,7 +50,7 @@ func dataSourceRuleConditionException() *schema.Resource { func dataSourceRuleConditionExceptionRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceRuleConditionExceptionRead") + logger := meta.Log("APPSEC", "dataSourceRuleConditionExceptionRead") getRuleConditionException := appsec.GetRuleConditionExceptionRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_rule_upgrade.go b/pkg/providers/appsec/data_akamai_appsec_rule_upgrade.go index d4754aa00..654d8e778 100644 --- a/pkg/providers/appsec/data_akamai_appsec_rule_upgrade.go +++ b/pkg/providers/appsec/data_akamai_appsec_rule_upgrade.go @@ -46,7 +46,7 @@ func dataSourceRuleUpgrade() *schema.Resource { func dataSourceRuleUpgradeRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceRuleUpgradeRead") + logger := meta.Log("APPSEC", "dataSourceRuleUpgradeRead") getRuleUpgrade := appsec.GetRuleUpgradeRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_security_policy.go b/pkg/providers/appsec/data_akamai_appsec_security_policy.go index 0b0d478ba..ce56ce6f2 100644 --- a/pkg/providers/appsec/data_akamai_appsec_security_policy.go +++ b/pkg/providers/appsec/data_akamai_appsec_security_policy.go @@ -51,7 +51,7 @@ func dataSourceSecurityPolicy() *schema.Resource { func dataSourceSecurityPolicyRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceSecurityPolicyRead") + logger := meta.Log("APPSEC", "dataSourceSecurityPolicyRead") getSecurityPolicy := appsec.GetSecurityPoliciesRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_security_policy_protections.go b/pkg/providers/appsec/data_akamai_appsec_security_policy_protections.go index ba44c8b20..c79a86737 100644 --- a/pkg/providers/appsec/data_akamai_appsec_security_policy_protections.go +++ b/pkg/providers/appsec/data_akamai_appsec_security_policy_protections.go @@ -74,7 +74,7 @@ func dataSourcePolicyProtections() *schema.Resource { func dataSourcePolicyProtectionsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourcePolicyProtectionsRead") + logger := meta.Log("APPSEC", "dataSourcePolicyProtectionsRead") getPolicyProtections := appsec.GetPolicyProtectionsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_selectable_hostnames.go b/pkg/providers/appsec/data_akamai_appsec_selectable_hostnames.go index e187269ce..a1fc95028 100644 --- a/pkg/providers/appsec/data_akamai_appsec_selectable_hostnames.go +++ b/pkg/providers/appsec/data_akamai_appsec_selectable_hostnames.go @@ -69,7 +69,7 @@ func dataSourceSelectableHostnames() *schema.Resource { func dataSourceSelectableHostnamesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceSelectableHostnamesRead") + logger := meta.Log("APPSEC", "dataSourceSelectableHostnamesRead") getSelectableHostnames := appsec.GetSelectableHostnamesRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_selected_hostnames.go b/pkg/providers/appsec/data_akamai_appsec_selected_hostnames.go index cbf96dd19..a426d5c11 100644 --- a/pkg/providers/appsec/data_akamai_appsec_selected_hostnames.go +++ b/pkg/providers/appsec/data_akamai_appsec_selected_hostnames.go @@ -50,7 +50,7 @@ func dataSourceSelectedHostnames() *schema.Resource { func dataSourceSelectedHostnamesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceSelectedHostnamesRead") + logger := meta.Log("APPSEC", "dataSourceSelectedHostnamesRead") getSelectedHostnames := appsec.GetSelectedHostnamesRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_siem_definitions.go b/pkg/providers/appsec/data_akamai_appsec_siem_definitions.go index 28ddb2cba..12d52ed86 100644 --- a/pkg/providers/appsec/data_akamai_appsec_siem_definitions.go +++ b/pkg/providers/appsec/data_akamai_appsec_siem_definitions.go @@ -39,7 +39,7 @@ func dataSourceSiemDefinitions() *schema.Resource { func dataSourceSiemDefinitionsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceSiemDefinitionsRead") + logger := meta.Log("APPSEC", "dataSourceSiemDefinitionsRead") getSiemDefinitions := appsec.GetSiemDefinitionsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_siem_settings.go b/pkg/providers/appsec/data_akamai_appsec_siem_settings.go index 2e50392be..ce3572425 100644 --- a/pkg/providers/appsec/data_akamai_appsec_siem_settings.go +++ b/pkg/providers/appsec/data_akamai_appsec_siem_settings.go @@ -42,7 +42,7 @@ func dataSourceSiemSettings() *schema.Resource { func dataSourceSiemSettingsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceSiemSettingsRead") + logger := meta.Log("APPSEC", "dataSourceSiemSettingsRead") getSiemSettings := v2.GetSiemSettingsRequest{} @@ -80,7 +80,6 @@ func dataSourceSiemSettingsRead(ctx context.Context, d *schema.ResourceData, m i if err := d.Set("json", string(jsonBody)); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tools.ErrValueSet, err.Error())) } - //d.Set("enabled", GetSlowPostProtection.ApplySlowPostControls) d.SetId(strconv.Itoa(getSiemSettings.ConfigID)) return nil diff --git a/pkg/providers/appsec/data_akamai_appsec_slow_post_protection_settings.go b/pkg/providers/appsec/data_akamai_appsec_slow_post_protection_settings.go index aa39d1e3c..d86e7221b 100644 --- a/pkg/providers/appsec/data_akamai_appsec_slow_post_protection_settings.go +++ b/pkg/providers/appsec/data_akamai_appsec_slow_post_protection_settings.go @@ -41,7 +41,7 @@ func dataSourceSlowPostProtectionSettings() *schema.Resource { func dataSourceSlowPostProtectionSettingsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceSlowPostProtectionSettingsRead") + logger := meta.Log("APPSEC", "dataSourceSlowPostProtectionSettingsRead") getSlowPostProtectionSettings := appsec.GetSlowPostProtectionSettingsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_slowpost_protections.go b/pkg/providers/appsec/data_akamai_appsec_slowpost_protections.go index fc894b1c5..80489084e 100644 --- a/pkg/providers/appsec/data_akamai_appsec_slowpost_protections.go +++ b/pkg/providers/appsec/data_akamai_appsec_slowpost_protections.go @@ -41,7 +41,7 @@ func dataSourceSlowPostProtections() *schema.Resource { func dataSourceSlowPostProtectionsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceSlowPostProtectionsRead") + logger := meta.Log("APPSEC", "dataSourceSlowPostProtectionsRead") getSlowPostProtections := appsec.GetSlowPostProtectionsRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_version_notes.go b/pkg/providers/appsec/data_akamai_appsec_version_notes.go index 541cd9a88..2137d4b18 100644 --- a/pkg/providers/appsec/data_akamai_appsec_version_notes.go +++ b/pkg/providers/appsec/data_akamai_appsec_version_notes.go @@ -43,7 +43,7 @@ func dataSourceVersionNotes() *schema.Resource { func dataSourceVersionNotesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceVersionNotesRead") + logger := meta.Log("APPSEC", "dataSourceVersionNotesRead") getVersionNotes := appsec.GetVersionNotesRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_waf_mode.go b/pkg/providers/appsec/data_akamai_appsec_waf_mode.go index cd9f3c72e..9a68fb69c 100644 --- a/pkg/providers/appsec/data_akamai_appsec_waf_mode.go +++ b/pkg/providers/appsec/data_akamai_appsec_waf_mode.go @@ -66,7 +66,7 @@ func dataSourceWAFMode() *schema.Resource { func dataSourceWAFModeRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceWAFModeRead") + logger := meta.Log("APPSEC", "dataSourceWAFModeRead") getWAFMode := appsec.GetWAFModeRequest{} diff --git a/pkg/providers/appsec/data_akamai_appsec_waf_protections.go b/pkg/providers/appsec/data_akamai_appsec_waf_protections.go index 0f1f42e86..35aca4b93 100644 --- a/pkg/providers/appsec/data_akamai_appsec_waf_protections.go +++ b/pkg/providers/appsec/data_akamai_appsec_waf_protections.go @@ -41,7 +41,7 @@ func dataSourceWAFProtections() *schema.Resource { func dataSourceWAFProtectionsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := akamai.Meta(m) client := inst.Client(meta) - logger := meta.Log("APPSEC", "resourceWAFProtectionsRead") + logger := meta.Log("APPSEC", "dataSourceWAFProtectionsRead") getWAFProtections := appsec.GetWAFProtectionsRequest{} diff --git a/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go b/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go index 4008d3ec9..238912bb8 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_match_target_test.go @@ -15,7 +15,6 @@ func TestAccAkamaiMatchTarget_res_basic(t *testing.T) { cu := appsec.UpdateMatchTargetResponse{} expectJSU := compactJSON(loadFixtureBytes("testdata/TestResMatchTarget/MatchTargetUpdated.json")) - //expectJSU := compactJSON(loadFixtureBytes("testdata/TestResMatchTarget/MatchTarget.json")) json.Unmarshal([]byte(expectJSU), &cu) cr := appsec.GetMatchTargetResponse{} @@ -24,7 +23,6 @@ func TestAccAkamaiMatchTarget_res_basic(t *testing.T) { crmt := appsec.CreateMatchTargetResponse{} expectJSMT := compactJSON(loadFixtureBytes("testdata/TestResMatchTarget/MatchTargetCreated.json")) - //expectJSMT := compactJSON(loadFixtureBytes("testdata/TestResMatchTarget/MatchTarget.json")) json.Unmarshal([]byte(expectJSMT), &crmt) rmmt := appsec.RemoveMatchTargetResponse{} @@ -59,7 +57,7 @@ func TestAccAkamaiMatchTarget_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResMatchTarget/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_match_target.test", "id", "43253:15:3008967"), //3008967 + resource.TestCheckResourceAttr("akamai_appsec_match_target.test", "id", "43253:15:3008967"), ), ExpectNonEmptyPlan: true, }, @@ -67,7 +65,6 @@ func TestAccAkamaiMatchTarget_res_basic(t *testing.T) { Config: loadFixtureString("testdata/TestResMatchTarget/update_by_id.tf"), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("akamai_appsec_match_target.test", "id", "43253:15:3008967"), - //resource.TestCheckResourceAttr("akamai_appsec_match_target.test", "is_negative_file_extension_match", "false"), ), ExpectNonEmptyPlan: true, }, From 1a9348f2abd348933fcea789f42e0358756a6222 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Fri, 19 Feb 2021 16:18:16 -0600 Subject: [PATCH 204/215] Make enable_botman_siem optional --- go.mod | 2 +- pkg/providers/appsec/resource_akamai_appsec_siem_settings.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 41281da8a..c34de3e17 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( ) replace ( - //github.com/akamai/AkamaiOPEN-edgegrid-golang/v2 => ../AkamaiOPEN-edgegrid-golang + github.com/akamai/AkamaiOPEN-edgegrid-golang/v2 => ../AkamaiOPEN-edgegrid-golang // https://github.com/golang/lint/issues/446 github.com/golang/lint => golang.org/x/lint v0.0.0-20190409202823-959b441ac422 diff --git a/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go b/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go index 09365c9b7..51411bdf1 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go +++ b/pkg/providers/appsec/resource_akamai_appsec_siem_settings.go @@ -45,7 +45,7 @@ func resourceSiemSettings() *schema.Resource { }, "enable_botman_siem": { Type: schema.TypeBool, - Required: true, + Optional: true, }, "siem_id": { Type: schema.TypeInt, From d952f43660f98258a90d9232b6384870d766bc5a Mon Sep 17 00:00:00 2001 From: "Narra, Vinnuth" Date: Sun, 21 Feb 2021 19:36:42 -0500 Subject: [PATCH 205/215] Changelog update for 1.2.2 PAPI patch release --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5aea1a85..4287cfe87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # RELEASE NOTES +## 1.2.2 (TBD, 2021) + +#### BREAKING CHANGES: +* PAPI: `data_akamai_property_rules_template:` snippets files should now be placed under `property-snippets` directory and should have `.json` extension + +#### BUG FIXES: +* PAPI -- Fixed issue causing hostnames to be appended instead of being replaced +* PAPI -- Fixed issue causing version and rule comments being dropped +* PAPI - Fixed client side validation to allow certain PAPI errors to passthrough +* PAPI - Fixed issue causing incorrect property version being stored in state for certain scenarios + ## 1.2.1 (Feb 3, 2021) #### BUG FIXES: From 8e14a8c91a0f614a6c651d7a638971d30b8a806f Mon Sep 17 00:00:00 2001 From: Corin Caliendo Date: Mon, 22 Feb 2021 16:49:20 -0500 Subject: [PATCH 206/215] Remove FAQ file and references, fix list of availble guides --- docs/guides/faq.md | 76 ---------------------------------------------- docs/index.md | 11 +++++-- 2 files changed, 8 insertions(+), 79 deletions(-) delete mode 100644 docs/guides/faq.md diff --git a/docs/guides/faq.md b/docs/guides/faq.md deleted file mode 100644 index 2de43b006..000000000 --- a/docs/guides/faq.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: "akamai" -page_title: "Akamai: FAQ (Frequently Asked Questions)" -description: |- - Frequently Asked Questions ---- - -# Frequently Asked Questions - -## Primary Zone Partially Created - -In the rare instance, a primary zone may be only partially created on the Akamai backend; for example in the case of a network error. In this situation, the zone may have been created but not the SOA and NS records. Henceforth, any attempt to manage or administer recordsets in the zone will fail. The SOA and NS records must be manually created in order to continue to manage the configuration. - -The records can be created either thru the [Akamai Control Center](https://control.akamai.com) or via the [CLI-DNS](https://github.com/akamai/cli-dns) package for the [Akamai CLI](https://developer.akamai.com/cli). - -## Migrating an Edge DNS Zone and Records to Terraform - -Migrating an existing Edge DNS Zone can be done in many ways. Two such methods include: using a command line utility or using a step by step construction. - -### Via Command Line Utility - -A package, [CLI-Terraform](https://github.com/akamai/cli-terraform), for the [Akamai CLI](https://developer.akamai.com/cli) provides a time saving means to collect information about, generate a configuration for, and import an existing Edge DNS Zone and its contained recordsets. With the package, you can: - -1. Generate a JSON formatted list of the zone and recordsets -2. Generate a Terraform configuration for the zone and select recordsets -3. Generate a command line script to import all defined resources - -#### Notes -1. Terraform limits the characters that can be part of it's resource names. During construction of the resource configurations invalid characters are replaced with underscore , '_' -2. Terrform does not have any state during import of resources. Discrepencies may be identified in certain field lists during the first plan and/or apply following import as Terraform reconciles configurations and state. These discrepencies will clear following the first apply. -3. The first time plan or apply is run, an update will be shown for the provider defined zone fields: contract and group. - -It is recommended that the existing zone configuration and master file (using the API or Control Center) be downloaded before hand as a backup and reference. Additionally, a terraform plan should be executed after importing to validate the generated tfstate. - -### Via Step By Step Construction - -1. Download your existing zone master file configuration (using the API) as a backup and reference. -2. Using the zone master file as a reference, create a Terraform configuration representing the existing zone and all contained recordsets. Note: In creating each resource block, make note of `required`, `optional` and `computed` fields. -3. Use the Terraform Import command to import the existing zone and contained recordsets; singularly and in serial order. -4. (Optional, Recommended) Review and compare the zone master file content and created `terraform.tfstate` to confirm the zone and all recordsets are represented correctly -5. Execute a `Terraform Plan` on the configuration. The plan should be empty. If not, correct accordingly and repeat until plan is empty and configuration is in sync with the Edge DNS Backend. - -Since Terraform assumes it is the de facto state for any resource it leverages, we strongly recommend staging the zone and recordset imports in a test environment to familiarize yourself with the provider operation and mitigate any risks to the existing Edge DNS zone configuration. - -## Migrating a GTM domain (and contained objects) to Terraform - -Migrating an existing GTM domain can be done in many ways. Two such methods include: - -### Via Command Line Utility - -A package, [CLI-Terraform](https://github.com/akamai/cli-terraform), for the [Akamai CLI](https://developer.akamai.com/cli) provides a time saving means to collect information about, generate a configuration for, and import an existing GTM domain and its contained objects and attributes. With the package, you can: - -1. Generate a JSON formatted list of all domain objects. -2. Generate a Terraform configuration for the domain and contained objects. -3. Generate a command line script to import all defined resources. - -#### Notes -1. Terraform limits the characters that can be part of it's resource names. During construction of the resource configurations invalid characters are replaced with underscore , '_' -2. Terraform does not have any state during import of resources. Discrepancies may be identified in certain field lists during the first plan and/or apply following import as Terraform reconciles configurations and state. These discrepancies will clear following the first apply. -3. The first time plan or apply is run, an update will be shown for the provider defined domain fields: `contract`, `group`, and `wait_on_complete`. - -It is recommended that the existing domain configuration (using the API or Control Center) be downloaded before hand as a backup and reference. Additionally, a terraform plan should be executed after importing to validate the generated tfstate. - -### Via Step By Step Construction - -1. Download your existing domain configuration (using the API or Control Center) as a backup and reference. -2. Using the domain download as a reference, create a Terraform configuration representing the existing domain and all contained GTM objects. Note: In creating each resource block, make note of `required`, `optional`, and `computed` fields. -3. Run `terraform import`. This command imports the existing domain and contained objects one at a time based on the order in the configuration. -4. (Optional, Recommended) Review domain download content and created terraform.tfstate to confirm the domain and all objects are represented correctly -5. Run `terraform plan` on the configuration. The plan should be empty. If not, correct accordingly and repeat until plan is empty and configuration is in sync with the GTM Backend. - -Since Terraform assumes it is the de facto state for any resource it leverages, we strongly recommend staging the domain and objects imports in a test environment to familiarize yourself with the provider operation and mitigate any risks to the existing GTM domain configuration. - -## GTM Terraform Resource Field Representation During Plan and/or Apply - -When using `terraform plan` or `terraform apply`, Terraform presents both fields defined in the configuration and all defined resource fields. Fields are either required, optional or computed as specified in each resource description. Default values for fields will display if not explicitly configured. In many cases, the default will be zero, empty string, or empty list depending on the type. These default or empty values are informational and not included in resource updates. diff --git a/docs/index.md b/docs/index.md index f2f340977..ad2695391 100644 --- a/docs/index.md +++ b/docs/index.md @@ -70,9 +70,14 @@ If you're new to Terraform, here are some links you might find helpful: ## Available guides -* [Frequently Asked Questions](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/faq) +Here's a list of the guides for the Akamai Provider in the general order you might use them: + +* [Get Started with the Akamai Terraform Provider](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_provider) +* [Authenticate the Akamai Terraform Provider](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/akamai_provider_auth) +* [Akamai Terraform Provider: 1.0.0 Migration Guide](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/1.0_migration) +* [Get Started with the Identity and Access Management Module](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_iam.md) +* [Get Started with the Provisioning Module](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_property) +* [Get Started with Application Security](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_appsec) * [Get Started with DNS Zone Administration](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_dns_zone) * [Get Started with GTM Domain Administration](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_gtm_domain) -* [Get Started with the Identity and Access Management Module](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_iam.md) -* [Get Started with the Provisioning Module](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/get_started_property) * [Appendix](https://registry.terraform.io/providers/akamai/akamai/latest/docs/guides/appendix) From 3bde69b7ad77c09f522d9190c5e4ce09cba46d81 Mon Sep 17 00:00:00 2001 From: "Narra, Vinnuth" Date: Mon, 22 Feb 2021 16:59:01 -0500 Subject: [PATCH 207/215] Updated changelog with #55 fix --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4287cfe87..09e7cabf7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ #### BUG FIXES: * PAPI -- Fixed issue causing hostnames to be appended instead of being replaced -* PAPI -- Fixed issue causing version and rule comments being dropped +* PAPI -- Fixed issue causing version and rule comments being dropped ([#55](https://github.com/akamai/terraform-provider-akamai/issues/55)) * PAPI - Fixed client side validation to allow certain PAPI errors to passthrough * PAPI - Fixed issue causing incorrect property version being stored in state for certain scenarios From 387c05e72a1cb8f711326630bafccf39de82b86f Mon Sep 17 00:00:00 2001 From: "Jain, Atul" Date: Mon, 22 Feb 2021 17:01:39 -0500 Subject: [PATCH 208/215] SECKSD-9433 Updated the change log tagged import tool with #207 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 036a08a14..e9b3cc64d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ * Rename Security Configuration Version * Delete Security Configuration Version * Clone Security Configuration - * Import tool for adding existing resources to Terraform state + * Import tool for adding existing resources to Terraform state (#207) ## 1.2.1 (Feb 3, 2021) From f8d1667c8487bef4ce04316ecd1b6f9a8cf88560 Mon Sep 17 00:00:00 2001 From: lkowalski87 <66317096+lkowalski87@users.noreply.github.com> Date: Tue, 23 Feb 2021 15:28:35 +0100 Subject: [PATCH 209/215] Correct value for last updated in the index.md --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index ad2695391..417846412 100644 --- a/docs/index.md +++ b/docs/index.md @@ -14,7 +14,7 @@ Traffic Management configurations. !> Version 1.0.0 of the Akamai Terraform Provider is a major release that's currently available for the Provisioning module. Before upgrading, you need to make changes to some of your Provisioning resources and data sources. See the [migration guide](guides/1.0_migration.md) for details. -Last updated: January 2021. +Last updated: February 2021. ## Migrate to the newest version From 655541975a0307f8f597ddc9a2a05435cd30c079 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Tue, 23 Feb 2021 10:05:52 -0600 Subject: [PATCH 210/215] Address suppressEquivalentJsonDiffsGeneric --- pkg/providers/appsec/diff_suppress_funcs.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkg/providers/appsec/diff_suppress_funcs.go b/pkg/providers/appsec/diff_suppress_funcs.go index 7916e83b6..fcf518796 100644 --- a/pkg/providers/appsec/diff_suppress_funcs.go +++ b/pkg/providers/appsec/diff_suppress_funcs.go @@ -11,13 +11,12 @@ import ( ) func suppressEquivalentJsonDiffsGeneric(k, old, new string, d *schema.ResourceData) bool { - ob := bytes.NewBufferString("") - if err := json.Compact(ob, []byte(old)); err != nil { + var ob, nb bytes.Buffer + if err := json.Compact(&ob, []byte(old)); err != nil { return false } - nb := bytes.NewBufferString("") - if err := json.Compact(nb, []byte(new)); err != nil { + if err := json.Compact(&nb, []byte(new)); err != nil { return false } From 54d819c189ed0e5e4ca4b7970701a0f6f580ed9e Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Tue, 23 Feb 2021 10:09:21 -0600 Subject: [PATCH 211/215] Remove extra spaces --- pkg/providers/providers.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/providers/providers.go b/pkg/providers/providers.go index 507f94241..b18be9e08 100644 --- a/pkg/providers/providers.go +++ b/pkg/providers/providers.go @@ -5,8 +5,6 @@ import ( _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/appsec" _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/dns" _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/gtm" - _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/iam" - _ "github.com/akamai/terraform-provider-akamai/v2/pkg/providers/property" ) From 9628a158d8b5c0368c99f7dcc9ef916869bb11bf Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 24 Feb 2021 08:38:55 -0600 Subject: [PATCH 212/215] Detect empty struct prior to setting ID --- .../appsec/data_akamai_appsec_api_hostname_coverage.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go index 464be0e28..56e023f75 100644 --- a/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go +++ b/pkg/providers/appsec/data_akamai_appsec_api_hostname_coverage.go @@ -63,8 +63,7 @@ func dataSourceApiHostnameCoverageRead(ctx context.Context, d *schema.ResourceDa if len(apihostnamecoverage.HostnameCoverage) > 0 { for _, configval := range apihostnamecoverage.HostnameCoverage { - - if configval.Configuration.ID != 0 { + if configval.Configuration != nil && configval.Configuration.ID != 0 { d.SetId(strconv.Itoa(configval.Configuration.ID)) } } From 07bca937e5efb33dc50dcd77562594c5233fa2a5 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 24 Feb 2021 10:19:38 -0600 Subject: [PATCH 213/215] Fix typo in set value api_endpoint_id update test payload --- ...esource_akamai_appsec_api_request_constraints.go | 2 +- ...ce_akamai_appsec_api_request_constraints_test.go | 2 +- .../ApiRequestConstraints.json | 13 ++++++++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go index 80268a75b..8b5961301 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go @@ -103,7 +103,7 @@ func resourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceDa } getApiRequestConstraints.PolicyID = policyid - ApiID, err := tools.GetIntValue("api_id", d) + ApiID, err := tools.GetIntValue("api_endpoint_id", d) if err != nil && !errors.Is(err, tools.ErrNotFound) { return diag.FromErr(err) } diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go index f62df59ab..ca2a50e35 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go @@ -31,7 +31,7 @@ func TestAccAkamaiApiRequestConstraints_res_basic(t *testing.T) { client.On("GetApiRequestConstraints", mock.Anything, // ctx is irrelevant for this test - appsec.GetApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230"}, + appsec.GetApiRequestConstraintsRequest{ConfigID: 43253, Version: 7, PolicyID: "AAAA_81230", ApiID: 1}, ).Return(&cr, nil) client.On("UpdateApiRequestConstraints", diff --git a/pkg/providers/appsec/testdata/TestResApiRequestConstraints/ApiRequestConstraints.json b/pkg/providers/appsec/testdata/TestResApiRequestConstraints/ApiRequestConstraints.json index 01f62e40d..be871e5cc 100644 --- a/pkg/providers/appsec/testdata/TestResApiRequestConstraints/ApiRequestConstraints.json +++ b/pkg/providers/appsec/testdata/TestResApiRequestConstraints/ApiRequestConstraints.json @@ -1,5 +1,8 @@ -[ - { - "action": "none" - } -] \ No newline at end of file +{ + "apiEndpoints": [ + { + "action": "alert", + "id": 1 + } + ] +} \ No newline at end of file From e39884b124d2ab7c4b19aa71c6aa9e914c173b83 Mon Sep 17 00:00:00 2001 From: martinstibbe <33664051+martinstibbe@users.noreply.github.com> Date: Wed, 24 Feb 2021 10:32:48 -0600 Subject: [PATCH 214/215] Fix api_request constraints unit test and resource --- .../resource_akamai_appsec_api_request_constraints.go | 8 +++++--- ...resource_akamai_appsec_api_request_constraints_test.go | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go index 8b5961301..97fa32ace 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints.go @@ -142,9 +142,11 @@ func resourceApiRequestConstraintsRead(ctx context.Context, d *schema.ResourceDa } } } - - d.SetId(fmt.Sprintf("%d:%d:%s", getApiRequestConstraints.ConfigID, getApiRequestConstraints.Version, getApiRequestConstraints.PolicyID)) - + if getApiRequestConstraints.ApiID != 0 { + d.SetId(fmt.Sprintf("%d:%d:%s:%d", getApiRequestConstraints.ConfigID, getApiRequestConstraints.Version, getApiRequestConstraints.PolicyID, getApiRequestConstraints.ApiID)) + } else { + d.SetId(fmt.Sprintf("%d:%d:%s", getApiRequestConstraints.ConfigID, getApiRequestConstraints.Version, getApiRequestConstraints.PolicyID)) + } return nil } diff --git a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go index ca2a50e35..70b495298 100644 --- a/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go +++ b/pkg/providers/appsec/resource_akamai_appsec_api_request_constraints_test.go @@ -57,7 +57,7 @@ func TestAccAkamaiApiRequestConstraints_res_basic(t *testing.T) { { Config: loadFixtureString("testdata/TestResApiRequestConstraints/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_appsec_api_request_constraints.test", "id", "43253:7:AAAA_81230"), + resource.TestCheckResourceAttr("akamai_appsec_api_request_constraints.test", "id", "43253:7:AAAA_81230:1"), ), }, }, From 66bd2966cf1652c273ff5a4a29977e42a4446095 Mon Sep 17 00:00:00 2001 From: "Piotrowski, Piotr" Date: Wed, 24 Feb 2021 17:44:15 +0100 Subject: [PATCH 215/215] Update go.mod --- go.mod | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index c34de3e17..ca21d9810 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,7 @@ module github.com/akamai/terraform-provider-akamai/v2 require ( - github.com/akamai/AkamaiOPEN-edgegrid-golang/v2 v2.1.1 + github.com/akamai/AkamaiOPEN-edgegrid-golang/v2 v2.2.0 github.com/allegro/bigcache v1.2.1 github.com/apex/log v1.9.0 github.com/aws/aws-sdk-go v1.31.9 // indirect @@ -22,7 +22,7 @@ require ( ) replace ( - github.com/akamai/AkamaiOPEN-edgegrid-golang/v2 => ../AkamaiOPEN-edgegrid-golang + //github.com/akamai/AkamaiOPEN-edgegrid-golang/v2 => ../AkamaiOPEN-edgegrid-golang // https://github.com/golang/lint/issues/446 github.com/golang/lint => golang.org/x/lint v0.0.0-20190409202823-959b441ac422