diff --git a/.apigentools-info b/.apigentools-info index b11fcff1697f..7e4d55558f9c 100644 --- a/.apigentools-info +++ b/.apigentools-info @@ -4,13 +4,13 @@ "spec_versions": { "v1": { "apigentools_version": "1.6.6", - "regenerated": "2024-01-08 16:03:16.737338", - "spec_repo_commit": "8b5aed97" + "regenerated": "2024-01-08 19:23:25.993707", + "spec_repo_commit": "150ace98" }, "v2": { "apigentools_version": "1.6.6", - "regenerated": "2024-01-08 16:03:16.752830", - "spec_repo_commit": "8b5aed97" + "regenerated": "2024-01-08 19:23:26.013159", + "spec_repo_commit": "150ace98" } } } \ No newline at end of file diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 92f333119ee1..156c5365b92b 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -3776,6 +3776,22 @@ components: description: The name of the Cloudflare account. example: test-name type: string + resources: + description: An allowlist of resources to restrict pulling metrics for. + example: + - web + - dns + items: + type: string + type: array + zones: + description: An allowlist of zones to restrict pulling metrics for. + example: + - zone_id_1 + - zone_id_2 + items: + type: string + type: array required: - api_key - name @@ -3808,6 +3824,22 @@ components: description: The name of the Cloudflare account. example: test-name type: string + resources: + description: An allowlist of resources to restrict pulling metrics for. + example: + - web + - dns + items: + type: string + type: array + zones: + description: An allowlist of zones to restrict pulling metrics for. + example: + - zone_id_1 + - zone_id_2 + items: + type: string + type: array required: - name type: object @@ -3856,6 +3888,22 @@ components: key is provided (and not a token), this field is also required. example: test-email@example.com type: string + resources: + description: An allowlist of resources to restrict pulling metrics for. + example: + - web + - dns + items: + type: string + type: array + zones: + description: An allowlist of zones to restrict pulling metrics for. + example: + - zone_id_1 + - zone_id_2 + items: + type: string + type: array required: - api_key type: object diff --git a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-due-to-missing-email.frozen b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-due-to-missing-email.frozen index 2ea546653e5d..d9508c1c1b2d 100644 --- a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-due-to-missing-email.frozen +++ b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-due-to-missing-email.frozen @@ -1 +1 @@ -2023-01-26T10:55:04.225Z \ No newline at end of file +2024-01-04T18:40:40.939Z \ No newline at end of file diff --git a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-due-to-missing-email.yml b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-due-to-missing-email.yml index 08f81a9cf0ca..4ba70766f842 100644 --- a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-due-to-missing-email.yml +++ b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-due-to-missing-email.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Thu, 26 Jan 2023 10:55:04 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:40 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"api_key":"test-api-key","name":"testaddcloudflareaccountreturnsbadrequestresponseduetomissingemail1674730504"},"type":"cloudflare-accounts"}}' + string: '{"data":{"attributes":{"api_key":"fakekey","name":"testaddcloudflareaccountreturnsbadrequestresponseduetomissingemail1704393640"},"type":"cloudflare-accounts"}}' headers: Accept: - application/json @@ -14,7 +14,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"errors":["{u''_schema'': [''Email address is required if providing + string: '{"errors":["{''_schema'': [''Email address is required if providing an api key and not an api token.'']}"]}' headers: Content-Type: diff --git a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-using-invalid-auth-key.frozen b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-using-invalid-auth-key.frozen index 86f90fee57da..00c73cdafadd 100644 --- a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-using-invalid-auth-key.frozen +++ b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-using-invalid-auth-key.frozen @@ -1 +1 @@ -2023-01-26T10:54:47.296Z \ No newline at end of file +2024-01-04T18:40:41.099Z \ No newline at end of file diff --git a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-using-invalid-auth-key.yml b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-using-invalid-auth-key.yml index 80f5a7cc19e7..93b9029a625c 100644 --- a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-using-invalid-auth-key.yml +++ b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-Bad-Request-response-using-invalid-auth-key.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Thu, 26 Jan 2023 10:54:47 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:41 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"api_key":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","name":"testaddcloudflareaccountreturnsbadrequestresponseusinginvalidauthkey1674730487"},"type":"cloudflare-accounts"}}' + string: '{"data":{"attributes":{"api_key":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","name":"testaddcloudflareaccountreturnsbadrequestresponseusinginvalidauthkey1704393641"},"type":"cloudflare-accounts"}}' headers: Accept: - application/json @@ -15,7 +15,7 @@ http_interactions: body: encoding: UTF-8 string: '{"errors":["Invalid account. Your Cloudflare configuration is invalid. - Impossible to get zones for the account testaddcloudflareaccountreturnsbadrequestresponseusinginvalidauthkey1674730487: + Impossible to get zones for the account testaddcloudflareaccountreturnsbadrequestresponseusinginvalidauthkey1704393641: API key or email is unknown."]}' headers: Content-Type: diff --git a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response-with-optional-filters.frozen b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response-with-optional-filters.frozen new file mode 100644 index 000000000000..8168df441880 --- /dev/null +++ b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response-with-optional-filters.frozen @@ -0,0 +1 @@ +2024-01-03T19:17:37.850Z \ No newline at end of file diff --git a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response-with-optional-filters.yml b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response-with-optional-filters.yml new file mode 100644 index 000000000000..59773c27f8ea --- /dev/null +++ b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response-with-optional-filters.yml @@ -0,0 +1,26 @@ +http_interactions: +- recorded_at: Wed, 03 Jan 2024 19:17:37 GMT + request: + body: + encoding: UTF-8 + string: '{"data":{"attributes":{"api_key":"fakekey","email":"new@email","name":"testaddcloudflareaccountreturnscreatedresponsewithoptionalfilters1704309457","resources":["lb","dns"],"zones":["zone-id-1","zone-id-2"]},"type":"cloudflare-accounts"}}' + headers: + Accept: + - application/json + Content-Type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts + response: + body: + encoding: UTF-8 + string: '{"errors":["Invalid account. Your Cloudflare configuration is invalid. + Impossible to get zones for the account testaddcloudflareaccountreturnscreatedresponsewithoptionalfilters1704309457: + API key or email is not in the correct format."]}' + headers: + Content-Type: + - application/json + status: + code: 400 + message: Bad Request +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response.frozen b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response.frozen index 08656ce57d7f..0e350ffed1e0 100644 --- a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response.frozen +++ b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response.frozen @@ -1 +1 @@ -2023-01-26T10:54:24.725Z \ No newline at end of file +2024-01-04T18:40:41.520Z \ No newline at end of file diff --git a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response.yml b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response.yml index 140edef5558b..16e70da71ff8 100644 --- a/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response.yml +++ b/cassettes/features/v2/cloudflare_integration/Add-Cloudflare-account-returns-CREATED-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Thu, 26 Jan 2023 10:54:24 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:41 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"api_key":"fakekey","email":"new@email","name":"testaddcloudflareaccountreturnscreatedresponse1674730464"},"type":"cloudflare-accounts"}}' + string: '{"data":{"attributes":{"api_key":"fakekey","email":"dev@datadoghq.com","name":"testaddcloudflareaccountreturnscreatedresponse1704393641"},"type":"cloudflare-accounts"}}' headers: Accept: - application/json @@ -14,7 +14,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"attributes":{"email":"new@email","name":"testaddcloudflareaccountreturnscreatedresponse1674730464"},"type":"cloudflare-accounts","id":"328432a98957fd7bcba6f70daea72519"}} + string: '{"data":{"type":"cloudflare-accounts","attributes":{"email":"dev@datadoghq.com","name":"testaddcloudflareaccountreturnscreatedresponse1704393641","resources":[],"zones":[]},"id":"baa2079200095466b080d75adfdb32fa"}} ' headers: @@ -23,14 +23,14 @@ http_interactions: status: code: 201 message: Created -- recorded_at: Thu, 26 Jan 2023 10:54:24 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:41 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/328432a98957fd7bcba6f70daea72519 + uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/baa2079200095466b080d75adfdb32fa response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/cloudflare_integration/Get-Cloudflare-account-returns-OK-response.frozen b/cassettes/features/v2/cloudflare_integration/Get-Cloudflare-account-returns-OK-response.frozen index 5ddb9d7aa752..22b0b70c1b50 100644 --- a/cassettes/features/v2/cloudflare_integration/Get-Cloudflare-account-returns-OK-response.frozen +++ b/cassettes/features/v2/cloudflare_integration/Get-Cloudflare-account-returns-OK-response.frozen @@ -1 +1 @@ -2023-01-27T09:00:21.006Z \ No newline at end of file +2024-01-04T18:40:42.323Z \ No newline at end of file diff --git a/cassettes/features/v2/cloudflare_integration/Get-Cloudflare-account-returns-OK-response.yml b/cassettes/features/v2/cloudflare_integration/Get-Cloudflare-account-returns-OK-response.yml index 7db8e79fdacf..517c7266ce7c 100644 --- a/cassettes/features/v2/cloudflare_integration/Get-Cloudflare-account-returns-OK-response.yml +++ b/cassettes/features/v2/cloudflare_integration/Get-Cloudflare-account-returns-OK-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Fri, 27 Jan 2023 09:00:21 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:42 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"api_key":"fakekey","email":"dev@datadog.com","name":"testgetcloudflareaccountreturnsokresponse1674810021"},"type":"cloudflare-accounts"}}' + string: '{"data":{"attributes":{"api_key":"fakekey","email":"dev@datadog.com","name":"testgetcloudflareaccountreturnsokresponse1704393642","resources":["web","dns"],"zones":["zone-id-1","zone-id-2"]},"type":"cloudflare-accounts"}}' headers: Accept: - application/json @@ -14,7 +14,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"attributes":{"email":"dev@datadog.com","name":"testgetcloudflareaccountreturnsokresponse1674810021"},"type":"cloudflare-accounts","id":"ec582035efa21742f8f4ef4393ded49c"}} + string: '{"data":{"type":"cloudflare-accounts","attributes":{"name":"testgetcloudflareaccountreturnsokresponse1704393642","email":"dev@datadog.com","zones":["zone-id-1","zone-id-2"],"resources":["web","dns"]},"id":"88d65a60026254bfaf976a427606c061"}} ' headers: @@ -23,18 +23,18 @@ http_interactions: status: code: 201 message: Created -- recorded_at: Fri, 27 Jan 2023 09:00:21 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:42 GMT request: body: null headers: Accept: - application/json method: GET - uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/ec582035efa21742f8f4ef4393ded49c + uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/88d65a60026254bfaf976a427606c061 response: body: encoding: UTF-8 - string: '{"data":{"attributes":{"email":"dev@datadog.com","name":"testgetcloudflareaccountreturnsokresponse1674810021"},"type":"cloudflare-accounts","id":"ec582035efa21742f8f4ef4393ded49c"}} + string: '{"data":{"type":"cloudflare-accounts","attributes":{"zones":["zone-id-1","zone-id-2"],"email":"dev@datadog.com","name":"testgetcloudflareaccountreturnsokresponse1704393642","resources":["web","dns"]},"id":"88d65a60026254bfaf976a427606c061"}} ' headers: @@ -43,14 +43,14 @@ http_interactions: status: code: 200 message: OK -- recorded_at: Fri, 27 Jan 2023 09:00:21 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:42 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/ec582035efa21742f8f4ef4393ded49c + uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/88d65a60026254bfaf976a427606c061 response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/cloudflare_integration/List-Cloudflare-accounts-returns-OK-response.frozen b/cassettes/features/v2/cloudflare_integration/List-Cloudflare-accounts-returns-OK-response.frozen index f1a4c9ed9879..abacad3b177b 100644 --- a/cassettes/features/v2/cloudflare_integration/List-Cloudflare-accounts-returns-OK-response.frozen +++ b/cassettes/features/v2/cloudflare_integration/List-Cloudflare-accounts-returns-OK-response.frozen @@ -1 +1 @@ -2023-01-27T09:00:01.876Z \ No newline at end of file +2024-01-04T18:40:43.242Z \ No newline at end of file diff --git a/cassettes/features/v2/cloudflare_integration/List-Cloudflare-accounts-returns-OK-response.yml b/cassettes/features/v2/cloudflare_integration/List-Cloudflare-accounts-returns-OK-response.yml index faf97e7d7c78..dd7306740de2 100644 --- a/cassettes/features/v2/cloudflare_integration/List-Cloudflare-accounts-returns-OK-response.yml +++ b/cassettes/features/v2/cloudflare_integration/List-Cloudflare-accounts-returns-OK-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Fri, 27 Jan 2023 09:00:01 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:43 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"api_key":"fakekey","email":"dev@datadog.com","name":"testlistcloudflareaccountsreturnsokresponse1674810001"},"type":"cloudflare-accounts"}}' + string: '{"data":{"attributes":{"api_key":"fakekey","email":"dev@datadog.com","name":"testlistcloudflareaccountsreturnsokresponse1704393643","resources":["web","dns"],"zones":["zone-id-1","zone-id-2"]},"type":"cloudflare-accounts"}}' headers: Accept: - application/json @@ -14,7 +14,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"attributes":{"email":"dev@datadog.com","name":"testlistcloudflareaccountsreturnsokresponse1674810001"},"type":"cloudflare-accounts","id":"1458cfdd2c5679bdc8693a9c5a32bf45"}} + string: '{"data":{"type":"cloudflare-accounts","id":"032c2a7bec2890a18b9ff810ffbaf789","attributes":{"resources":["web","dns"],"name":"testlistcloudflareaccountsreturnsokresponse1704393643","email":"dev@datadog.com","zones":["zone-id-1","zone-id-2"]}}} ' headers: @@ -23,7 +23,7 @@ http_interactions: status: code: 201 message: Created -- recorded_at: Fri, 27 Jan 2023 09:00:01 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:43 GMT request: body: null headers: @@ -34,7 +34,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":[{"attributes":{"email":"dev@datadog.com","name":"testlistcloudflareaccountsreturnsokresponse1674810001"},"type":"cloudflare-accounts","id":"1458cfdd2c5679bdc8693a9c5a32bf45"}]} + string: '{"data":[{"type":"cloudflare-accounts","attributes":{"resources":["dns","worker"],"email":"dev@datadoghq.com","zones":["57d151866f1b1d5e4e0057aed6b9f4cb"],"name":"testing"},"id":"ae2b1fca515949e5d54fb22b8ed95575"},{"type":"cloudflare-accounts","attributes":{"resources":["web","dns"],"email":"dev@datadog.com","zones":["zone-id-1","zone-id-2"],"name":"testlistcloudflareaccountsreturnsokresponse1704393643"},"id":"032c2a7bec2890a18b9ff810ffbaf789"},{"type":"cloudflare-accounts","attributes":{"resources":[],"email":"","zones":[],"name":"testing_2"},"id":"8222b3d5b803354416362560a64a1725"},{"type":"cloudflare-accounts","attributes":{"resources":[],"email":"","zones":[],"name":"cloudflare-test"},"id":"fe0a70a58b246c3836c665e956f56bab"}]} ' headers: @@ -43,14 +43,14 @@ http_interactions: status: code: 200 message: OK -- recorded_at: Fri, 27 Jan 2023 09:00:01 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:43 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/1458cfdd2c5679bdc8693a9c5a32bf45 + uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/032c2a7bec2890a18b9ff810ffbaf789 response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-invalid-api-key.frozen b/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-invalid-api-key.frozen index 0928cd1f86bf..36232fe68662 100644 --- a/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-invalid-api-key.frozen +++ b/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-invalid-api-key.frozen @@ -1 +1 @@ -2023-01-27T08:59:31.378Z \ No newline at end of file +2024-01-04T18:40:44.099Z \ No newline at end of file diff --git a/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-invalid-api-key.yml b/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-invalid-api-key.yml index 6eecd15d001c..67c9746fbc4d 100644 --- a/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-invalid-api-key.yml +++ b/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-invalid-api-key.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Fri, 27 Jan 2023 08:59:31 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:44 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"api_key":"fakekey","email":"dev@datadog.com","name":"testupdatecloudflareaccountreturnsbadrequestresponseduetoinvalidapikey1674809971"},"type":"cloudflare-accounts"}}' + string: '{"data":{"attributes":{"api_key":"fakekey","email":"dev@datadog.com","name":"testupdatecloudflareaccountreturnsbadrequestresponseduetoinvalidapikey1704393644","resources":["web","dns"],"zones":["zone-id-1","zone-id-2"]},"type":"cloudflare-accounts"}}' headers: Accept: - application/json @@ -14,7 +14,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"attributes":{"email":"dev@datadog.com","name":"testupdatecloudflareaccountreturnsbadrequestresponseduetoinvalidapikey1674809971"},"type":"cloudflare-accounts","id":"56a7295bd711e0aea34906a3bea8a2b3"}} + string: '{"data":{"type":"cloudflare-accounts","attributes":{"email":"dev@datadog.com","name":"testupdatecloudflareaccountreturnsbadrequestresponseduetoinvalidapikey1704393644","resources":["web","dns"],"zones":["zone-id-1","zone-id-2"]},"id":"25336f9851edaf58647eec09ce3b636f"}} ' headers: @@ -23,7 +23,7 @@ http_interactions: status: code: 201 message: Created -- recorded_at: Fri, 27 Jan 2023 08:59:31 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:44 GMT request: body: encoding: UTF-8 @@ -34,12 +34,12 @@ http_interactions: Content-Type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/56a7295bd711e0aea34906a3bea8a2b3 + uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/25336f9851edaf58647eec09ce3b636f response: body: encoding: UTF-8 string: '{"errors":["Invalid account. Your Cloudflare configuration is invalid. - Impossible to get zones for the account testupdatecloudflareaccountreturnsbadrequestresponseduetoinvalidapikey1674809971: + Impossible to get zones for the account testupdatecloudflareaccountreturnsbadrequestresponseduetoinvalidapikey1704393644: API key or email is unknown."]}' headers: Content-Type: @@ -47,14 +47,14 @@ http_interactions: status: code: 400 message: Bad Request -- recorded_at: Fri, 27 Jan 2023 08:59:31 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:44 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/56a7295bd711e0aea34906a3bea8a2b3 + uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/25336f9851edaf58647eec09ce3b636f response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-missing-required-email.frozen b/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-missing-required-email.frozen index 541cd4979f8a..42e9357efa59 100644 --- a/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-missing-required-email.frozen +++ b/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-missing-required-email.frozen @@ -1 +1 @@ -2023-01-27T08:59:14.675Z \ No newline at end of file +2024-01-04T18:40:46.262Z \ No newline at end of file diff --git a/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-missing-required-email.yml b/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-missing-required-email.yml index 44514e5bfdc5..5f2798dd3428 100644 --- a/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-missing-required-email.yml +++ b/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-Bad-Request-response-due-to-missing-required-email.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Fri, 27 Jan 2023 08:59:14 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:46 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"api_key":"fakekey","email":"dev@datadog.com","name":"testupdatecloudflareaccountreturnsbadrequestresponseduetomissingrequiredemail1674809954"},"type":"cloudflare-accounts"}}' + string: '{"data":{"attributes":{"api_key":"fakekey","email":"dev@datadog.com","name":"testupdatecloudflareaccountreturnsbadrequestresponseduetomissingrequiredemail1704393646","resources":["web","dns"],"zones":["zone-id-1","zone-id-2"]},"type":"cloudflare-accounts"}}' headers: Accept: - application/json @@ -14,7 +14,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"attributes":{"email":"dev@datadog.com","name":"testupdatecloudflareaccountreturnsbadrequestresponseduetomissingrequiredemail1674809954"},"type":"cloudflare-accounts","id":"c588ce074fe908f56db516f007afd3fd"}} + string: '{"data":{"type":"cloudflare-accounts","attributes":{"zones":["zone-id-1","zone-id-2"],"resources":["web","dns"],"name":"testupdatecloudflareaccountreturnsbadrequestresponseduetomissingrequiredemail1704393646","email":"dev@datadog.com"},"id":"f1d4f10fbad4add4962f2bc1fcb18c36"}} ' headers: @@ -23,22 +23,22 @@ http_interactions: status: code: 201 message: Created -- recorded_at: Fri, 27 Jan 2023 08:59:14 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:46 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"api_key":"abcdefghijklmnopqrstuvwxyz"},"type":"cloudflare-accounts"}}' + string: '{"data":{"attributes":{"api_key":"fakekey"},"type":"cloudflare-accounts"}}' headers: Accept: - application/json Content-Type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/c588ce074fe908f56db516f007afd3fd + uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/f1d4f10fbad4add4962f2bc1fcb18c36 response: body: encoding: UTF-8 - string: '{"errors":["{u''_schema'': [''Email address is required if providing + string: '{"errors":["{''_schema'': [''Email address is required if providing an api key and not an api token.'']}"]}' headers: Content-Type: @@ -46,14 +46,14 @@ http_interactions: status: code: 400 message: Bad Request -- recorded_at: Fri, 27 Jan 2023 08:59:14 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:46 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/c588ce074fe908f56db516f007afd3fd + uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/f1d4f10fbad4add4962f2bc1fcb18c36 response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-OK-response.frozen b/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-OK-response.frozen index 5c0c1ba853bf..ec278af7a508 100644 --- a/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-OK-response.frozen +++ b/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-OK-response.frozen @@ -1 +1 @@ -2023-01-27T08:58:49.822Z \ No newline at end of file +2024-01-04T18:40:47.476Z \ No newline at end of file diff --git a/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-OK-response.yml b/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-OK-response.yml index 15b9043509e8..c040eaa429cb 100644 --- a/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-OK-response.yml +++ b/cassettes/features/v2/cloudflare_integration/Update-Cloudflare-account-returns-OK-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Fri, 27 Jan 2023 08:58:49 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:47 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"api_key":"fakekey","email":"dev@datadog.com","name":"testupdatecloudflareaccountreturnsokresponse1674809929"},"type":"cloudflare-accounts"}}' + string: '{"data":{"attributes":{"api_key":"fakekey","email":"dev@datadog.com","name":"testupdatecloudflareaccountreturnsokresponse1704393647","resources":["web","dns"],"zones":["zone-id-1","zone-id-2"]},"type":"cloudflare-accounts"}}' headers: Accept: - application/json @@ -14,7 +14,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"attributes":{"email":"dev@datadog.com","name":"testupdatecloudflareaccountreturnsokresponse1674809929"},"type":"cloudflare-accounts","id":"4d22579092049210a1db06b632485219"}} + string: '{"data":{"type":"cloudflare-accounts","attributes":{"zones":["zone-id-1","zone-id-2"],"resources":["web","dns"],"name":"testupdatecloudflareaccountreturnsokresponse1704393647","email":"dev@datadog.com"},"id":"6956534375b31b062c809696f3c34ee8"}} ' headers: @@ -23,22 +23,22 @@ http_interactions: status: code: 201 message: Created -- recorded_at: Fri, 27 Jan 2023 08:58:49 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:47 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"api_key":"fakekey","email":"new@email"},"type":"cloudflare-accounts"}}' + string: '{"data":{"attributes":{"api_key":"fakekey","email":"dev@datadoghq.com","zones":["zone-id-3"]},"type":"cloudflare-accounts"}}' headers: Accept: - application/json Content-Type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/4d22579092049210a1db06b632485219 + uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/6956534375b31b062c809696f3c34ee8 response: body: encoding: UTF-8 - string: '{"data":{"attributes":{"email":"new@email","name":"testupdatecloudflareaccountreturnsokresponse1674809929"},"type":"cloudflare-accounts","id":"4d22579092049210a1db06b632485219"}} + string: '{"data":{"type":"cloudflare-accounts","attributes":{"resources":[],"email":"dev@datadoghq.com","zones":["zone-id-3"],"name":"testupdatecloudflareaccountreturnsokresponse1704393647"},"id":"6956534375b31b062c809696f3c34ee8"}} ' headers: @@ -47,14 +47,14 @@ http_interactions: status: code: 200 message: OK -- recorded_at: Fri, 27 Jan 2023 08:58:49 GMT +- recorded_at: Thu, 04 Jan 2024 18:40:47 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/4d22579092049210a1db06b632485219 + uri: https://api.datadoghq.com/api/v2/integrations/cloudflare/accounts/6956534375b31b062c809696f3c34ee8 response: body: encoding: UTF-8 diff --git a/examples/v2/cloudflare-integration/CreateCloudflareAccount.rb b/examples/v2/cloudflare-integration/CreateCloudflareAccount.rb index cea57cd86b80..25b0b12c72e5 100644 --- a/examples/v2/cloudflare-integration/CreateCloudflareAccount.rb +++ b/examples/v2/cloudflare-integration/CreateCloudflareAccount.rb @@ -7,7 +7,7 @@ data: DatadogAPIClient::V2::CloudflareAccountCreateRequestData.new({ attributes: DatadogAPIClient::V2::CloudflareAccountCreateRequestAttributes.new({ api_key: "fakekey", - email: "new@email", + email: "dev@datadoghq.com", name: "examplecloudflareintegration", }), type: DatadogAPIClient::V2::CloudflareAccountType::CLOUDFLARE_ACCOUNTS, diff --git a/examples/v2/cloudflare-integration/UpdateCloudflareAccount.rb b/examples/v2/cloudflare-integration/UpdateCloudflareAccount.rb index b00ace2a09db..2da0b600167a 100644 --- a/examples/v2/cloudflare-integration/UpdateCloudflareAccount.rb +++ b/examples/v2/cloudflare-integration/UpdateCloudflareAccount.rb @@ -10,7 +10,10 @@ data: DatadogAPIClient::V2::CloudflareAccountUpdateRequestData.new({ attributes: DatadogAPIClient::V2::CloudflareAccountUpdateRequestAttributes.new({ api_key: "fakekey", - email: "new@email", + email: "dev@datadoghq.com", + zones: [ + "zone-id-3", + ], }), type: DatadogAPIClient::V2::CloudflareAccountType::CLOUDFLARE_ACCOUNTS, }), diff --git a/features/v2/cloudflare_integration.feature b/features/v2/cloudflare_integration.feature index a7bb9da3ec71..c4105440f954 100644 --- a/features/v2/cloudflare_integration.feature +++ b/features/v2/cloudflare_integration.feature @@ -11,14 +11,14 @@ Feature: Cloudflare Integration @generated @skip @team:Datadog/web-integrations Scenario: Add Cloudflare account returns "Bad Request" response Given new "CreateCloudflareAccount" request - And body with value {"data": {"attributes": {"api_key": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", "email": "test-email@example.com", "name": "test-name"}, "type": "cloudflare-accounts"}} + And body with value {"data": {"attributes": {"api_key": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", "email": "test-email@example.com", "name": "test-name", "resources": ["web", "dns"], "zones": ["zone_id_1", "zone_id_2"]}, "type": "cloudflare-accounts"}} When the request is sent Then the response status is 400 Bad Request @replay-only @team:Datadog/web-integrations Scenario: Add Cloudflare account returns "Bad Request" response due to missing email Given new "CreateCloudflareAccount" request - And body with value {"data": {"attributes": {"api_key": "test-api-key", "name": "{{ unique_lower_alnum }}"}, "type": "cloudflare-accounts"}} + And body with value {"data": {"attributes": {"api_key": "fakekey", "name": "{{ unique_lower_alnum }}"}, "type": "cloudflare-accounts"}} When the request is sent Then the response status is 400 Bad Request @@ -32,17 +32,17 @@ Feature: Cloudflare Integration @replay-only @team:Datadog/web-integrations Scenario: Add Cloudflare account returns "CREATED" response Given new "CreateCloudflareAccount" request - And body with value {"data": {"attributes": {"api_key": "fakekey", "email": "new@email", "name": "{{ unique_lower_alnum }}"}, "type": "cloudflare-accounts"}} + And body with value {"data": {"attributes": {"api_key": "fakekey", "email": "dev@datadoghq.com", "name": "{{ unique_lower_alnum }}"}, "type": "cloudflare-accounts"}} When the request is sent Then the response status is 201 CREATED And the response "data.type" is equal to "cloudflare-accounts" - And the response "data.attributes.email" is equal to "new@email" + And the response "data.attributes.email" is equal to "dev@datadoghq.com" And the response "data.attributes.name" is equal to "{{ unique_lower_alnum }}" @generated @skip @team:Datadog/web-integrations Scenario: Add Cloudflare account returns "Not Found" response Given new "CreateCloudflareAccount" request - And body with value {"data": {"attributes": {"api_key": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", "email": "test-email@example.com", "name": "test-name"}, "type": "cloudflare-accounts"}} + And body with value {"data": {"attributes": {"api_key": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", "email": "test-email@example.com", "name": "test-name", "resources": ["web", "dns"], "zones": ["zone_id_1", "zone_id_2"]}, "type": "cloudflare-accounts"}} When the request is sent Then the response status is 404 Not Found @@ -116,7 +116,7 @@ Feature: Cloudflare Integration Scenario: Update Cloudflare account returns "Bad Request" response Given new "UpdateCloudflareAccount" request And request contains "account_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"api_key": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", "email": "test-email@example.com"}, "type": "cloudflare-accounts"}} + And body with value {"data": {"attributes": {"api_key": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", "email": "test-email@example.com", "resources": ["web", "dns"], "zones": ["zone_id_1", "zone_id_2"]}, "type": "cloudflare-accounts"}} When the request is sent Then the response status is 400 Bad Request @@ -134,7 +134,7 @@ Feature: Cloudflare Integration Given there is a valid "cloudflare_account" in the system And new "UpdateCloudflareAccount" request And request contains "account_id" parameter from "cloudflare_account.data.id" - And body with value {"data": {"attributes": {"api_key": "abcdefghijklmnopqrstuvwxyz"}, "type": "cloudflare-accounts"}} + And body with value {"data": {"attributes": {"api_key": "fakekey"}, "type": "cloudflare-accounts"}} When the request is sent Then the response status is 400 Bad Request @@ -142,7 +142,7 @@ Feature: Cloudflare Integration Scenario: Update Cloudflare account returns "Not Found" response Given new "UpdateCloudflareAccount" request And request contains "account_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"api_key": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", "email": "test-email@example.com"}, "type": "cloudflare-accounts"}} + And body with value {"data": {"attributes": {"api_key": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", "email": "test-email@example.com", "resources": ["web", "dns"], "zones": ["zone_id_1", "zone_id_2"]}, "type": "cloudflare-accounts"}} When the request is sent Then the response status is 404 Not Found @@ -151,8 +151,8 @@ Feature: Cloudflare Integration Given there is a valid "cloudflare_account" in the system And new "UpdateCloudflareAccount" request And request contains "account_id" parameter from "cloudflare_account.data.id" - And body with value {"data": {"attributes": {"api_key": "fakekey", "email": "new@email"}, "type": "cloudflare-accounts"}} + And body with value {"data": {"attributes": {"api_key": "fakekey", "email": "dev@datadoghq.com", "zones": ["zone-id-3"]}, "type": "cloudflare-accounts"}} When the request is sent Then the response status is 200 OK And the response "data.attributes.name" is equal to "{{cloudflare_account.data.attributes.name }}" - And the response "data.attributes.email" is equal to "new@email" + And the response "data.attributes.zones" array contains value "zone-id-3" diff --git a/features/v2/given.json b/features/v2/given.json index 87cad5da34c2..19f0c37eec6a 100644 --- a/features/v2/given.json +++ b/features/v2/given.json @@ -191,7 +191,7 @@ "parameters": [ { "name": "body", - "value": "{\n \"data\": {\n \"type\": \"cloudflare-accounts\",\n \"attributes\": {\n \"api_key\": \"fakekey\",\n \"name\": \"{{ unique_lower_alnum }}\",\n \"email\": \"dev@datadog.com\"\n }\n }\n}" + "value": "{\n \"data\": {\n \"type\": \"cloudflare-accounts\",\n \"attributes\": {\n \"api_key\": \"fakekey\",\n \"name\": \"{{ unique_lower_alnum }}\",\n \"email\": \"dev@datadog.com\",\n \"zones\": [\"zone-id-1\", \"zone-id-2\"],\n \"resources\": [\"web\", \"dns\"]\n }\n }\n}" } ], "step": "there is a valid \"cloudflare_account\" in the system", diff --git a/lib/datadog_api_client/v2/models/cloudflare_account_create_request_attributes.rb b/lib/datadog_api_client/v2/models/cloudflare_account_create_request_attributes.rb index 08e17f09e22f..471fe3498c3f 100644 --- a/lib/datadog_api_client/v2/models/cloudflare_account_create_request_attributes.rb +++ b/lib/datadog_api_client/v2/models/cloudflare_account_create_request_attributes.rb @@ -30,13 +30,21 @@ class CloudflareAccountCreateRequestAttributes # The name of the Cloudflare account. attr_reader :name + # An allowlist of resources to restrict pulling metrics for. + attr_accessor :resources + + # An allowlist of zones to restrict pulling metrics for. + attr_accessor :zones + # Attribute mapping from ruby-style variable name to JSON key. # @!visibility private def self.attribute_map { :'api_key' => :'api_key', :'email' => :'email', - :'name' => :'name' + :'name' => :'name', + :'resources' => :'resources', + :'zones' => :'zones' } end @@ -46,7 +54,9 @@ def self.openapi_types { :'api_key' => :'String', :'email' => :'String', - :'name' => :'String' + :'name' => :'String', + :'resources' => :'Array', + :'zones' => :'Array' } end @@ -77,6 +87,18 @@ def initialize(attributes = {}) if attributes.key?(:'name') self.name = attributes[:'name'] end + + if attributes.key?(:'resources') + if (value = attributes[:'resources']).is_a?(Array) + self.resources = value + end + end + + if attributes.key?(:'zones') + if (value = attributes[:'zones']).is_a?(Array) + self.zones = value + end + end end # Check to see if the all the properties in the model are valid @@ -116,14 +138,16 @@ def ==(o) self.class == o.class && api_key == o.api_key && email == o.email && - name == o.name + name == o.name && + resources == o.resources && + zones == o.zones end # Calculates hash code according to all attributes. # @return [Integer] Hash code # @!visibility private def hash - [api_key, email, name].hash + [api_key, email, name, resources, zones].hash end end end diff --git a/lib/datadog_api_client/v2/models/cloudflare_account_response_attributes.rb b/lib/datadog_api_client/v2/models/cloudflare_account_response_attributes.rb index 4927930f6a2d..876a6964800b 100644 --- a/lib/datadog_api_client/v2/models/cloudflare_account_response_attributes.rb +++ b/lib/datadog_api_client/v2/models/cloudflare_account_response_attributes.rb @@ -27,12 +27,20 @@ class CloudflareAccountResponseAttributes # The name of the Cloudflare account. attr_reader :name + # An allowlist of resources to restrict pulling metrics for. + attr_accessor :resources + + # An allowlist of zones to restrict pulling metrics for. + attr_accessor :zones + # Attribute mapping from ruby-style variable name to JSON key. # @!visibility private def self.attribute_map { :'email' => :'email', - :'name' => :'name' + :'name' => :'name', + :'resources' => :'resources', + :'zones' => :'zones' } end @@ -41,7 +49,9 @@ def self.attribute_map def self.openapi_types { :'email' => :'String', - :'name' => :'String' + :'name' => :'String', + :'resources' => :'Array', + :'zones' => :'Array' } end @@ -68,6 +78,18 @@ def initialize(attributes = {}) if attributes.key?(:'name') self.name = attributes[:'name'] end + + if attributes.key?(:'resources') + if (value = attributes[:'resources']).is_a?(Array) + self.resources = value + end + end + + if attributes.key?(:'zones') + if (value = attributes[:'zones']).is_a?(Array) + self.zones = value + end + end end # Check to see if the all the properties in the model are valid @@ -95,14 +117,16 @@ def ==(o) return true if self.equal?(o) self.class == o.class && email == o.email && - name == o.name + name == o.name && + resources == o.resources && + zones == o.zones end # Calculates hash code according to all attributes. # @return [Integer] Hash code # @!visibility private def hash - [email, name].hash + [email, name, resources, zones].hash end end end diff --git a/lib/datadog_api_client/v2/models/cloudflare_account_update_request_attributes.rb b/lib/datadog_api_client/v2/models/cloudflare_account_update_request_attributes.rb index 450d10c6c013..5ae05fb9923f 100644 --- a/lib/datadog_api_client/v2/models/cloudflare_account_update_request_attributes.rb +++ b/lib/datadog_api_client/v2/models/cloudflare_account_update_request_attributes.rb @@ -27,12 +27,20 @@ class CloudflareAccountUpdateRequestAttributes # The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required. attr_accessor :email + # An allowlist of resources to restrict pulling metrics for. + attr_accessor :resources + + # An allowlist of zones to restrict pulling metrics for. + attr_accessor :zones + # Attribute mapping from ruby-style variable name to JSON key. # @!visibility private def self.attribute_map { :'api_key' => :'api_key', - :'email' => :'email' + :'email' => :'email', + :'resources' => :'resources', + :'zones' => :'zones' } end @@ -41,7 +49,9 @@ def self.attribute_map def self.openapi_types { :'api_key' => :'String', - :'email' => :'String' + :'email' => :'String', + :'resources' => :'Array', + :'zones' => :'Array' } end @@ -68,6 +78,18 @@ def initialize(attributes = {}) if attributes.key?(:'email') self.email = attributes[:'email'] end + + if attributes.key?(:'resources') + if (value = attributes[:'resources']).is_a?(Array) + self.resources = value + end + end + + if attributes.key?(:'zones') + if (value = attributes[:'zones']).is_a?(Array) + self.zones = value + end + end end # Check to see if the all the properties in the model are valid @@ -95,14 +117,16 @@ def ==(o) return true if self.equal?(o) self.class == o.class && api_key == o.api_key && - email == o.email + email == o.email && + resources == o.resources && + zones == o.zones end # Calculates hash code according to all attributes. # @return [Integer] Hash code # @!visibility private def hash - [api_key, email].hash + [api_key, email, resources, zones].hash end end end