From 15e6ec16db519a5afb0efdd676496d7dc97251a7 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Tue, 17 Mar 2026 23:39:37 +0000 Subject: [PATCH] Regenerate client from commit 9ac8497 of spec repo --- .generator/schemas/v2/openapi.yaml | 1081 +++++++++++++++++ .../CreateWebIntegrationAccount.java | 53 + ...CreateWebIntegrationAccount_516494340.java | 52 + .../DeleteWebIntegrationAccount.java | 23 + ...eleteWebIntegrationAccount_3148550629.java | 26 + .../GetWebIntegrationAccount.java | 25 + .../GetWebIntegrationAccountSchema.java | 28 + ...ebIntegrationAccountSchema_2275808665.java | 26 + .../GetWebIntegrationAccount_2208305330.java | 28 + .../ListWebIntegrationAccounts.java | 26 + ...ListWebIntegrationAccounts_2909671841.java | 25 + .../UpdateWebIntegrationAccount.java | 47 + ...pdateWebIntegrationAccount_3199996405.java | 48 + .../client/v2/api/IntegrationAccountsApi.java | 1074 ++++++++++++++++ .../WebIntegrationAccountAttributes.java | 182 +++ .../WebIntegrationAccountCreateRequest.java | 148 +++ ...grationAccountCreateRequestAttributes.java | 221 ++++ ...ebIntegrationAccountCreateRequestData.java | 184 +++ .../model/WebIntegrationAccountResponse.java | 166 +++ .../WebIntegrationAccountResponseData.java | 211 ++++ .../WebIntegrationAccountSchemaResponse.java | 283 +++++ ...rationAccountSchemaResponseProperties.java | 192 +++ ...ionAccountSchemaResponseSecretsObject.java | 254 ++++ ...ionAccountSchemaResponseSettingsField.java | 288 +++++ ...onAccountSchemaResponseSettingsObject.java | 253 ++++ .../v2/model/WebIntegrationAccountType.java | 55 + .../WebIntegrationAccountUpdateRequest.java | 148 +++ ...grationAccountUpdateRequestAttributes.java | 218 ++++ ...ebIntegrationAccountUpdateRequestData.java | 182 +++ .../model/WebIntegrationAccountsResponse.java | 180 +++ ...on_account_returns_Created_response.freeze | 1 + ...tion_account_returns_Created_response.json | 32 + ...gration_account_returns_OK_response.freeze | 1 + ...tegration_account_returns_OK_response.json | 57 + ..._an_integration_returns_OK_response.freeze | 1 + ...or_an_integration_returns_OK_response.json | 28 + ...gration_account_returns_OK_response.freeze | 1 + ...tegration_account_returns_OK_response.json | 58 + ...ration_accounts_returns_OK_response.freeze | 1 + ...egration_accounts_returns_OK_response.json | 58 + ...gration_account_returns_OK_response.freeze | 1 + ...tegration_account_returns_OK_response.json | 62 + .../com/datadog/api/client/v2/api/given.json | 16 + .../v2/api/integration_accounts.feature | 179 +++ .../com/datadog/api/client/v2/api/undo.json | 47 + .../client/v2/api/web_integrations.feature | 258 ++++ 46 files changed, 6528 insertions(+) create mode 100644 examples/v2/integration-accounts/CreateWebIntegrationAccount.java create mode 100644 examples/v2/integration-accounts/CreateWebIntegrationAccount_516494340.java create mode 100644 examples/v2/integration-accounts/DeleteWebIntegrationAccount.java create mode 100644 examples/v2/integration-accounts/DeleteWebIntegrationAccount_3148550629.java create mode 100644 examples/v2/integration-accounts/GetWebIntegrationAccount.java create mode 100644 examples/v2/integration-accounts/GetWebIntegrationAccountSchema.java create mode 100644 examples/v2/integration-accounts/GetWebIntegrationAccountSchema_2275808665.java create mode 100644 examples/v2/integration-accounts/GetWebIntegrationAccount_2208305330.java create mode 100644 examples/v2/integration-accounts/ListWebIntegrationAccounts.java create mode 100644 examples/v2/integration-accounts/ListWebIntegrationAccounts_2909671841.java create mode 100644 examples/v2/integration-accounts/UpdateWebIntegrationAccount.java create mode 100644 examples/v2/integration-accounts/UpdateWebIntegrationAccount_3199996405.java create mode 100644 src/main/java/com/datadog/api/client/v2/api/IntegrationAccountsApi.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountAttributes.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountCreateRequest.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountCreateRequestAttributes.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountCreateRequestData.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountResponse.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountResponseData.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponse.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseProperties.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseSecretsObject.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseSettingsField.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseSettingsObject.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountType.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountUpdateRequest.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountUpdateRequestAttributes.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountUpdateRequestData.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountsResponse.java create mode 100644 src/test/resources/cassettes/features/v2/Create_integration_account_returns_Created_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Create_integration_account_returns_Created_response.json create mode 100644 src/test/resources/cassettes/features/v2/Delete_integration_account_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Delete_integration_account_returns_OK_response.json create mode 100644 src/test/resources/cassettes/features/v2/Get_account_schema_for_an_integration_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Get_account_schema_for_an_integration_returns_OK_response.json create mode 100644 src/test/resources/cassettes/features/v2/Get_integration_account_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Get_integration_account_returns_OK_response.json create mode 100644 src/test/resources/cassettes/features/v2/List_integration_accounts_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/List_integration_accounts_returns_OK_response.json create mode 100644 src/test/resources/cassettes/features/v2/Update_integration_account_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Update_integration_account_returns_OK_response.json create mode 100644 src/test/resources/com/datadog/api/client/v2/api/integration_accounts.feature create mode 100644 src/test/resources/com/datadog/api/client/v2/api/web_integrations.feature diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 64f30b32306..5f343ddf2f5 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -1426,6 +1426,394 @@ components: $ref: '#/components/schemas/JSONAPIErrorResponse' description: The server cannot process the request because it contains invalid data. + WebIntegrationAccountSchemaBadRequestResponse: + content: + application/json: + examples: + invalid_integration_name: + summary: Invalid integration name format + value: + errors: + - detail: Invalid integration name format + status: '400' + title: Bad Request + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Bad Request: The integration name format is invalid.' + WebIntegrationAccountSchemaForbiddenResponse: + content: + application/json: + examples: + integration_not_allowed: + summary: Integration not allowed + value: + errors: + - detail: The API is currently disabled for this integration + status: '403' + title: Integration Not Allowed + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Forbidden: The integration is not enabled for API access.' + WebIntegrationAccountSchemaNotFoundResponse: + content: + application/json: + examples: + schema_not_found: + summary: Schema not found for integration + value: + errors: + - detail: 'Schema not found for integration: twilio' + status: '404' + title: Not Found + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Not Found: The integration does not exist or has no schema available.' + WebIntegrationAccountSchemaTooManyRequestsResponse: + content: + application/json: + examples: + rate_limit_exceeded: + summary: Rate limit exceeded + value: + errors: + - detail: Rate limit exceeded. Please retry after the rate limit window + expires. + status: '429' + title: Too Many Requests + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Too Many Requests: Rate limit exceeded. + + This endpoint has a rate limit of 12000 requests per organization every 60 + seconds.' + WebIntegrationCreateAccountBadRequestResponse: + content: + application/json: + examples: + invalid_request: + summary: Invalid request body + value: + errors: + - detail: 'Invalid request body: missing required field ''name''' + status: '400' + title: Bad Request + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Bad Request: The request body is malformed or the integration + name format is invalid.' + WebIntegrationCreateAccountForbiddenResponse: + content: + application/json: + examples: + permission_denied: + summary: Permission denied + value: + errors: + - detail: User does not have permission to manage integrations + status: '403' + title: Forbidden + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Forbidden: The integration is not enabled for API access or the + user lacks permissions to manage integrations.' + WebIntegrationCreateAccountNotFoundResponse: + content: + application/json: + examples: + integration_not_found: + summary: Integration not found + value: + errors: + - detail: 'Integration not found: unknown_integration' + status: '404' + title: Not Found + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Not Found: The integration does not exist.' + WebIntegrationCreateAccountTooManyRequestsResponse: + content: + application/json: + examples: + rate_limit_exceeded: + summary: Rate limit exceeded + value: + errors: + - detail: Rate limit exceeded. Please retry after 20 seconds. + status: '429' + title: Too Many Requests + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Too Many Requests: Rate limit exceeded. + + This endpoint has a rate limit of 50 requests per user every 20 seconds.' + WebIntegrationCreateAccountUnprocessableEntityResponse: + content: + application/json: + examples: + validation_failed: + summary: Validation failed + value: + errors: + - detail: settings.account_sid is required + status: '422' + title: Unprocessable Entity + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Unprocessable Entity: The account configuration does not match + the integration schema.' + WebIntegrationDeleteAccountBadRequestResponse: + content: + application/json: + examples: + invalid_account_id: + summary: Invalid account ID format + value: + errors: + - detail: Invalid account ID format + status: '400' + title: Bad Request + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Bad Request: The integration name or account ID format is invalid.' + WebIntegrationDeleteAccountForbiddenResponse: + content: + application/json: + examples: + permission_denied: + summary: Permission denied + value: + errors: + - detail: User does not have permission to delete this account + status: '403' + title: Forbidden + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Forbidden: The integration is not enabled for API access or the + user lacks permissions to manage this account.' + WebIntegrationDeleteAccountNotFoundResponse: + content: + application/json: + examples: + account_not_found: + summary: Account not found + value: + errors: + - detail: 'Account not found: abc123def456' + status: '404' + title: Not Found + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Not Found: The integration or account does not exist.' + WebIntegrationDeleteAccountTooManyRequestsResponse: + content: + application/json: + examples: + rate_limit_exceeded: + summary: Rate limit exceeded + value: + errors: + - detail: Rate limit exceeded. Please retry after 20 seconds. + status: '429' + title: Too Many Requests + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Too Many Requests: Rate limit exceeded. + + This endpoint has a rate limit of 50 requests per user every 20 seconds.' + WebIntegrationGetAccountBadRequestResponse: + content: + application/json: + examples: + invalid_account_id: + summary: Invalid account ID format + value: + errors: + - detail: Invalid account ID format + status: '400' + title: Bad Request + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Bad Request: The integration name or account ID format is invalid.' + WebIntegrationGetAccountForbiddenResponse: + content: + application/json: + examples: + permission_denied: + summary: Permission denied + value: + errors: + - detail: User does not have permission to access this account + status: '403' + title: Forbidden + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Forbidden: The integration is not enabled for API access or the + user lacks required permissions.' + WebIntegrationGetAccountNotFoundResponse: + content: + application/json: + examples: + account_not_found: + summary: Account not found + value: + errors: + - detail: 'Account not found: abc123def456' + status: '404' + title: Not Found + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Not Found: The integration or account does not exist.' + WebIntegrationGetAccountTooManyRequestsResponse: + content: + application/json: + examples: + rate_limit_exceeded: + summary: Rate limit exceeded + value: + errors: + - detail: Rate limit exceeded. Please retry after 60 seconds. + status: '429' + title: Too Many Requests + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Too Many Requests: Rate limit exceeded. + + This endpoint has a rate limit of 12000 requests per organization every 60 + seconds.' + WebIntegrationListAccountsBadRequestResponse: + content: + application/json: + examples: + invalid_integration_name: + summary: Invalid integration name format + value: + errors: + - detail: Invalid integration name format + status: '400' + title: Bad Request + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Bad Request: The integration name format is invalid.' + WebIntegrationListAccountsForbiddenResponse: + content: + application/json: + examples: + integration_not_allowed: + summary: Integration not allowed + value: + errors: + - detail: The API is currently disabled for this integration + status: '403' + title: Forbidden + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Forbidden: The integration is not enabled for API access or the + user lacks required permissions.' + WebIntegrationListAccountsNotFoundResponse: + content: + application/json: + examples: + integration_not_found: + summary: Integration not found + value: + errors: + - detail: 'Integration not found: unknown_integration' + status: '404' + title: Not Found + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Not Found: The integration does not exist.' + WebIntegrationListAccountsTooManyRequestsResponse: + content: + application/json: + examples: + rate_limit_exceeded: + summary: Rate limit exceeded + value: + errors: + - detail: Rate limit exceeded. Please retry after 20 seconds. + status: '429' + title: Too Many Requests + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Too Many Requests: Rate limit exceeded. + + This endpoint has a rate limit of 50 requests per user every 20 seconds.' + WebIntegrationUpdateAccountBadRequestResponse: + content: + application/json: + examples: + invalid_request: + summary: Invalid request body + value: + errors: + - detail: Invalid request body format + status: '400' + title: Bad Request + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Bad Request: The request body is malformed or the integration + name/account ID format is invalid.' + WebIntegrationUpdateAccountForbiddenResponse: + content: + application/json: + examples: + permission_denied: + summary: Permission denied + value: + errors: + - detail: User does not have permission to update this account + status: '403' + title: Forbidden + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Forbidden: The integration is not enabled for API access or the + user lacks permissions to manage this account.' + WebIntegrationUpdateAccountNotFoundResponse: + content: + application/json: + examples: + account_not_found: + summary: Account not found + value: + errors: + - detail: 'Account not found: abc123def456' + status: '404' + title: Not Found + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Not Found: The integration or account does not exist.' + WebIntegrationUpdateAccountTooManyRequestsResponse: + content: + application/json: + examples: + rate_limit_exceeded: + summary: Rate limit exceeded + value: + errors: + - detail: Rate limit exceeded. Please retry after 20 seconds. + status: '429' + title: Too Many Requests + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Too Many Requests: Rate limit exceeded. + + This endpoint has a rate limit of 50 requests per user every 20 seconds.' + WebIntegrationUpdateAccountUnprocessableEntityResponse: + content: + application/json: + examples: + validation_failed: + summary: Validation failed + value: + errors: + - detail: settings.api_key must be at least 32 characters + status: '422' + title: Unprocessable Entity + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: 'Unprocessable Entity: The account configuration does not match + the integration schema.' schemas: APIErrorResponse: description: API error response. @@ -72575,6 +72963,407 @@ components: type: string x-enum-varnames: - RUM_REPLAY_WATCHER + WebIntegrationAccountAttributes: + description: Attributes for a web integration account. + properties: + name: + description: The name of the account. + example: My Production Account + type: string + settings: + additionalProperties: {} + description: 'Integration-specific settings for the account. The structure + and required fields vary by integration type. + + Use the schema endpoint to retrieve the specific requirements for each + integration.' + example: + account_sid: ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + alerts: false + api_key: SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + call_summaries: true + ccm_enabled: true + censor_logs: true + events: true + messages: true + type: object + required: + - name + - settings + type: object + WebIntegrationAccountCreateRequest: + description: Payload for creating a web integration account. + properties: + data: + $ref: '#/components/schemas/WebIntegrationAccountCreateRequestData' + required: + - data + type: object + WebIntegrationAccountCreateRequestAttributes: + description: Attributes for creating a web integration account. + properties: + name: + description: The name of the account. + example: My Production Account + type: string + secrets: + additionalProperties: {} + description: 'Sensitive credentials for the account. The structure and required + fields vary by integration type. + + These values are write-only and never returned in responses.' + example: + api_key_token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + type: object + settings: + additionalProperties: {} + description: 'Integration-specific settings for the account. The structure + and required fields vary by integration type. + + Use the schema endpoint (GET /api/v2/web-integrations/{integration_name}/accounts/schema) + to retrieve + + the specific requirements for your integration before creating an account.' + example: + account_sid: ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + alerts: true + api_key: SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + call_summaries: true + ccm_enabled: true + censor_logs: true + events: true + messages: true + type: object + required: + - name + - settings + - secrets + type: object + WebIntegrationAccountCreateRequestData: + description: Data object for creating a web integration account. + properties: + attributes: + $ref: '#/components/schemas/WebIntegrationAccountCreateRequestAttributes' + type: + $ref: '#/components/schemas/WebIntegrationAccountType' + required: + - type + - attributes + type: object + WebIntegrationAccountResponse: + description: Response containing a single web integration account. + properties: + data: + $ref: '#/components/schemas/WebIntegrationAccountResponseData' + integration_name: + description: The name of the integration. + example: twilio + type: string + type: object + WebIntegrationAccountResponseData: + description: Data object for a web integration account response. + properties: + attributes: + $ref: '#/components/schemas/WebIntegrationAccountAttributes' + id: + description: The unique identifier for the account. + example: abc123def456 + type: string + type: + $ref: '#/components/schemas/WebIntegrationAccountType' + required: + - id + - type + - attributes + type: object + WebIntegrationAccountSchemaResponse: + description: 'Response containing the JSON schema for an integration''s account + configuration. + + This schema defines the required and optional fields for both settings and + secrets, + + including field types, validation rules, and descriptions. + + + The response is a standard [JSON Schema (draft-07)](https://json-schema.org/draft-07/schema#) + document describing the account + + configuration structure. Because this is a dynamic JSON Schema, the exact + properties vary by integration.' + example: + $schema: http://json-schema.org/draft-07/schema# + properties: + secrets: + $ref: '#/components/schemas/WebIntegrationAccountSchemaResponseExampleSecrets' + settings: + $ref: '#/components/schemas/WebIntegrationAccountSchemaResponseExampleSettings' + required: + - settings + - secrets + type: object + properties: + $schema: + description: The JSON Schema version URI. + example: http://json-schema.org/draft-07/schema# + type: string + additionalProperties: + description: Whether additional properties are allowed at the root level + (typically false). + example: false + type: boolean + properties: + $ref: '#/components/schemas/WebIntegrationAccountSchemaResponseProperties' + required: + description: List of required top-level properties. + example: + - settings + - secrets + items: + type: string + type: array + type: + description: The root type of the schema (always "object"). + example: object + type: string + required: + - $schema + - type + - properties + - required + type: object + WebIntegrationAccountSchemaResponseExampleSecrets: + additionalProperties: false + properties: + api_key_token: + description: The Twilio API Key Secret corresponding to the API Key SID. + example: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + minLength: 1 + type: string + required: + - api_key_token + type: object + WebIntegrationAccountSchemaResponseExampleSettings: + additionalProperties: false + properties: + account_sid: + description: Twilio Account SID that uniquely identifies your Twilio account, + found in your account info in the Twilio console. + example: ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + minLength: 1 + type: string + alerts: + default: false + description: Enable collection of Twilio Alert logs to monitor account alerts + and notifications. + type: boolean + api_key: + description: Twilio API Key SID for authentication. Create this API key + in the Twilio console. + example: SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + minLength: 1 + type: string + call_summaries: + default: false + description: Enable collection of Twilio Voice call summaries to track voice + call performance and metadata. + type: boolean + ccm_enabled: + default: false + description: Enable Cloud Cost Management to monitor Twilio usage costs + and identify optimization opportunities. + type: boolean + censor_logs: + default: false + description: Enable censoring of sensitive data in logs. When true, phone + numbers and SMS message bodies are censored for privacy. + type: boolean + events: + default: false + description: Enable collection of Twilio Event logs to monitor account-level + events and activities. + type: boolean + messages: + default: false + description: Enable collection of Twilio Message logs to track SMS and messaging + activity. + type: boolean + required: + - api_key + - account_sid + type: object + WebIntegrationAccountSchemaResponseProperties: + description: 'The properties object containing settings and secrets schema definitions. + + Both are always present in every integration schema, but the fields within + each + + vary depending on the specific integration.' + properties: + secrets: + $ref: '#/components/schemas/WebIntegrationAccountSchemaResponseSecretsObject' + settings: + $ref: '#/components/schemas/WebIntegrationAccountSchemaResponseSettingsObject' + required: + - settings + - secrets + type: object + WebIntegrationAccountSchemaResponseSecretsObject: + description: 'JSON Schema definition for the secrets object. + + Contains sensitive credentials required for the integration such as API keys, + + tokens, and passwords. These values are write-only and never returned in responses.' + properties: + additionalProperties: + description: Whether additional properties are allowed (typically false). + example: false + type: boolean + properties: + additionalProperties: + $ref: '#/components/schemas/WebIntegrationAccountSchemaResponseSettingsField' + description: 'The individual secret fields for this integration. + + Field names and types vary by integration.' + type: object + required: + description: List of required secret field names. + items: + type: string + type: array + type: + description: Always "object" for the secrets container. + example: object + type: string + type: object + WebIntegrationAccountSchemaResponseSettingsField: + description: 'JSON Schema definition for a single field within settings or secrets. + + The exact fields vary by integration.' + properties: + additionalProperties: + description: Whether additional properties are allowed for this field. + example: false + type: boolean + default: + description: Default value for the field if not provided. + description: + description: Human-readable description of the field's purpose. + example: API key for authentication + type: string + items: + description: Schema for array items when type is "array". + type: object + minLength: + description: Minimum length for string fields. + example: 1 + format: int64 + type: integer + type: + description: The data type of the field (string, boolean, integer, array, + object). + example: string + type: string + type: object + WebIntegrationAccountSchemaResponseSettingsObject: + description: 'JSON Schema definition for the settings object. + + Contains integration-specific configuration fields such as account identifiers, + + feature toggles, and non-sensitive configuration options.' + properties: + additionalProperties: + description: Whether additional properties are allowed (typically false). + example: false + type: boolean + properties: + additionalProperties: + $ref: '#/components/schemas/WebIntegrationAccountSchemaResponseSettingsField' + description: 'The individual setting fields for this integration. + + Field names and types vary by integration.' + type: object + required: + description: List of required setting field names. + items: + type: string + type: array + type: + description: Always "object" for the settings container. + example: object + type: string + type: object + WebIntegrationAccountType: + default: Account + description: The JSON:API type for web integration accounts. + enum: + - Account + example: Account + type: string + x-enum-varnames: + - ACCOUNT + WebIntegrationAccountUpdateRequest: + description: Payload for updating a web integration account. + properties: + data: + $ref: '#/components/schemas/WebIntegrationAccountUpdateRequestData' + required: + - data + type: object + WebIntegrationAccountUpdateRequestAttributes: + description: 'Attributes for updating a web integration account. All fields + are optional; + + only provide the fields you want to update.' + properties: + name: + description: The name of the account. + example: My Production Account (Updated) + type: string + secrets: + additionalProperties: {} + description: 'Sensitive credentials to update. Only the secrets provided + are updated. + + These values are write-only and never returned in responses.' + example: + api_key_token: new_secret_token_value + type: object + settings: + additionalProperties: {} + description: 'Integration-specific settings to update. Only the fields provided + are updated. + + The structure varies by integration type. See the integration''s schema + for available fields.' + example: + ccm_enabled: true + events: true + messages: false + type: object + type: object + WebIntegrationAccountUpdateRequestData: + description: Data object for updating a web integration account. + properties: + attributes: + $ref: '#/components/schemas/WebIntegrationAccountUpdateRequestAttributes' + type: + $ref: '#/components/schemas/WebIntegrationAccountType' + required: + - type + type: object + WebIntegrationAccountsResponse: + description: Response containing a list of web integration accounts. + properties: + data: + items: + $ref: '#/components/schemas/WebIntegrationAccountResponseData' + type: array + integration_name: + description: The name of the integration. + example: twilio + type: string + type: object Weekday: description: A day of the week. enum: @@ -110984,6 +111773,286 @@ paths: operator: OR permissions: - teams_read + /api/v2/web-integrations/{integration_name}/accounts: + get: + description: 'Retrieve all configured accounts for a specific integration within + your organization. + + + Rate limit: 50 requests per user every 20 seconds.' + operationId: ListWebIntegrationAccounts + parameters: + - description: The name of the integration. + example: twilio + in: path + name: integration_name + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WebIntegrationAccountsResponse' + description: 'OK: List of all accounts for the specified integration.' + '400': + $ref: '#/components/responses/WebIntegrationListAccountsBadRequestResponse' + '403': + $ref: '#/components/responses/WebIntegrationListAccountsForbiddenResponse' + '404': + $ref: '#/components/responses/WebIntegrationListAccountsNotFoundResponse' + '429': + $ref: '#/components/responses/WebIntegrationListAccountsTooManyRequestsResponse' + summary: List integration accounts + tags: + - Integration Accounts + x-permission: + operator: OR + permissions: + - integrations_read + post: + description: 'Create a new account for a specific integration. The account configuration + must conform + + to the schema defined for the integration, which can be retrieved using the + schema endpoint. + + + Rate limit: 50 requests per user every 20 seconds.' + operationId: CreateWebIntegrationAccount + parameters: + - description: The name of the integration. + example: twilio + in: path + name: integration_name + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/WebIntegrationAccountCreateRequest' + required: true + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/WebIntegrationAccountResponse' + description: 'Created: The account was successfully created.' + '400': + $ref: '#/components/responses/WebIntegrationCreateAccountBadRequestResponse' + '403': + $ref: '#/components/responses/WebIntegrationCreateAccountForbiddenResponse' + '404': + $ref: '#/components/responses/WebIntegrationCreateAccountNotFoundResponse' + '422': + $ref: '#/components/responses/WebIntegrationCreateAccountUnprocessableEntityResponse' + '429': + $ref: '#/components/responses/WebIntegrationCreateAccountTooManyRequestsResponse' + summary: Create integration account + tags: + - Integration Accounts + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - manage_integrations + /api/v2/web-integrations/{integration_name}/accounts/schema: + get: + description: 'Get the JSON schema that defines the structure and validation + rules for account configuration + + of a specific integration. This schema describes the required and optional + fields for both + + **settings** and **secrets** when creating or updating an account. + + + The schema structure varies between integrations, so always retrieve the schema + for your + + specific integration before creating or updating accounts. + + + Rate limit: 12000 requests per organization every 60 seconds.' + operationId: GetWebIntegrationAccountSchema + parameters: + - description: The name of the integration. + example: twilio + in: path + name: integration_name + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WebIntegrationAccountSchemaResponse' + description: 'OK: The JSON schema for the integration''s account configuration.' + '400': + $ref: '#/components/responses/WebIntegrationAccountSchemaBadRequestResponse' + '403': + $ref: '#/components/responses/WebIntegrationAccountSchemaForbiddenResponse' + '404': + $ref: '#/components/responses/WebIntegrationAccountSchemaNotFoundResponse' + '429': + $ref: '#/components/responses/WebIntegrationAccountSchemaTooManyRequestsResponse' + summary: Get account schema for an integration + tags: + - Integration Accounts + x-permission: + operator: OR + permissions: + - integrations_read + /api/v2/web-integrations/{integration_name}/accounts/{account_id}: + delete: + description: 'Delete a specific account by its ID for a given integration. This + removes the + + account configuration and stops any data collection associated with it. + + + Rate limit: 50 requests per user every 20 seconds.' + operationId: DeleteWebIntegrationAccount + parameters: + - description: The name of the integration. + example: twilio + in: path + name: integration_name + required: true + schema: + type: string + - description: The unique identifier of the account. + example: abc123def456 + in: path + name: account_id + required: true + schema: + type: string + responses: + '200': + description: 'OK: The account was successfully deleted.' + '400': + $ref: '#/components/responses/WebIntegrationDeleteAccountBadRequestResponse' + '403': + $ref: '#/components/responses/WebIntegrationDeleteAccountForbiddenResponse' + '404': + $ref: '#/components/responses/WebIntegrationDeleteAccountNotFoundResponse' + '429': + $ref: '#/components/responses/WebIntegrationDeleteAccountTooManyRequestsResponse' + summary: Delete integration account + tags: + - Integration Accounts + x-permission: + operator: OR + permissions: + - manage_integrations + get: + description: 'Retrieve a specific account by its ID for a given integration. + The response includes + + the account name and settings, but excludes sensitive secret values. + + + Rate limit: 12000 requests per organization every 60 seconds.' + operationId: GetWebIntegrationAccount + parameters: + - description: The name of the integration. + example: twilio + in: path + name: integration_name + required: true + schema: + type: string + - description: The unique identifier of the account. + example: abc123def456 + in: path + name: account_id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WebIntegrationAccountResponse' + description: 'OK: The account details for the specified integration.' + '400': + $ref: '#/components/responses/WebIntegrationGetAccountBadRequestResponse' + '403': + $ref: '#/components/responses/WebIntegrationGetAccountForbiddenResponse' + '404': + $ref: '#/components/responses/WebIntegrationGetAccountNotFoundResponse' + '429': + $ref: '#/components/responses/WebIntegrationGetAccountTooManyRequestsResponse' + summary: Get integration account + tags: + - Integration Accounts + x-permission: + operator: OR + permissions: + - integrations_read + patch: + description: 'Update an existing account for a specific integration. You can + update the name, settings, + + and secrets. Only the fields provided in the request are updated. + + + Rate limit: 50 requests per user every 20 seconds.' + operationId: UpdateWebIntegrationAccount + parameters: + - description: The name of the integration. + example: twilio + in: path + name: integration_name + required: true + schema: + type: string + - description: The unique identifier of the account. + example: abc123def456 + in: path + name: account_id + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/WebIntegrationAccountUpdateRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/WebIntegrationAccountResponse' + description: 'OK: The account was successfully updated.' + '400': + $ref: '#/components/responses/WebIntegrationUpdateAccountBadRequestResponse' + '403': + $ref: '#/components/responses/WebIntegrationUpdateAccountForbiddenResponse' + '404': + $ref: '#/components/responses/WebIntegrationUpdateAccountNotFoundResponse' + '422': + $ref: '#/components/responses/WebIntegrationUpdateAccountUnprocessableEntityResponse' + '429': + $ref: '#/components/responses/WebIntegrationUpdateAccountTooManyRequestsResponse' + summary: Update integration account + tags: + - Integration Accounts + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - manage_integrations /api/v2/workflows: post: description: Create a new workflow, returning the workflow ID. This API requires @@ -111636,6 +112705,18 @@ tags: and todos. See the [Incident Management page](https://docs.datadoghq.com/service_management/incident_management/) for more information. name: Incidents +- description: "Configure and manage third-party integrations with Datadog. This API + provides a unified\ninterface for managing integration accounts across various + external services.\n\nEach integration has its own unique schema that defines + the required settings and secrets.\nBefore creating or updating an account, use + the schema endpoint to retrieve the specific\nrequirements, field types, validation + rules, and available configuration options for your\nintegration.\n\n**Note**: + This API manages integration account configurations only. It does not support\nGrace + Resources, Reference Tables, or Custom Queries CRUD operations. For those features,\nrefer + to each integration's dedicated documentation.\n\nSupported Integrations:\n - + [Twilio](https://docs.datadoghq.com/integrations/twilio/)\n - [Snowflake](https://docs.datadoghq.com/integrations/snowflake-web/)\n + \ - [Databricks](https://docs.datadoghq.com/integrations/databricks/)" + name: Integration Accounts - description: 'The Integrations API is used to list available integrations and retrieve information about their installation status.' diff --git a/examples/v2/integration-accounts/CreateWebIntegrationAccount.java b/examples/v2/integration-accounts/CreateWebIntegrationAccount.java new file mode 100644 index 00000000000..2bae0a897a6 --- /dev/null +++ b/examples/v2/integration-accounts/CreateWebIntegrationAccount.java @@ -0,0 +1,53 @@ +// Create integration account returns "Created: The account was successfully created." response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.IntegrationAccountsApi; +import com.datadog.api.client.v2.model.WebIntegrationAccountCreateRequest; +import com.datadog.api.client.v2.model.WebIntegrationAccountCreateRequestAttributes; +import com.datadog.api.client.v2.model.WebIntegrationAccountCreateRequestData; +import com.datadog.api.client.v2.model.WebIntegrationAccountResponse; +import com.datadog.api.client.v2.model.WebIntegrationAccountType; +import java.util.Map; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient); + + WebIntegrationAccountCreateRequest body = + new WebIntegrationAccountCreateRequest() + .data( + new WebIntegrationAccountCreateRequestData() + .attributes( + new WebIntegrationAccountCreateRequestAttributes() + .name("My Production Account") + .secrets( + Map.ofEntries( + Map.entry("api_key_token", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) + .settings( + Map.ofEntries( + Map.entry("account_sid", "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"), + Map.entry("alerts", "True"), + Map.entry("api_key", "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"), + Map.entry("call_summaries", "True"), + Map.entry("ccm_enabled", "True"), + Map.entry("censor_logs", "True"), + Map.entry("events", "True"), + Map.entry("messages", "True")))) + .type(WebIntegrationAccountType.ACCOUNT)); + + try { + WebIntegrationAccountResponse result = + apiInstance.createWebIntegrationAccount("twilio", body); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling IntegrationAccountsApi#createWebIntegrationAccount"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/integration-accounts/CreateWebIntegrationAccount_516494340.java b/examples/v2/integration-accounts/CreateWebIntegrationAccount_516494340.java new file mode 100644 index 00000000000..bbce729854b --- /dev/null +++ b/examples/v2/integration-accounts/CreateWebIntegrationAccount_516494340.java @@ -0,0 +1,52 @@ +// Create integration account returns "Created" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.IntegrationAccountsApi; +import com.datadog.api.client.v2.model.WebIntegrationAccountCreateRequest; +import com.datadog.api.client.v2.model.WebIntegrationAccountCreateRequestAttributes; +import com.datadog.api.client.v2.model.WebIntegrationAccountCreateRequestData; +import com.datadog.api.client.v2.model.WebIntegrationAccountResponse; +import com.datadog.api.client.v2.model.WebIntegrationAccountType; +import java.util.Map; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient); + + WebIntegrationAccountCreateRequest body = + new WebIntegrationAccountCreateRequest() + .data( + new WebIntegrationAccountCreateRequestData() + .type(WebIntegrationAccountType.ACCOUNT) + .attributes( + new WebIntegrationAccountCreateRequestAttributes() + .name("Example-Web-Integration") + .settings( + Map.ofEntries( + Map.entry("api_key", "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"), + Map.entry("account_sid", "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"), + Map.entry("events", "True"), + Map.entry("messages", "True"), + Map.entry("alerts", "True"), + Map.entry("call_summaries", "True"), + Map.entry("ccm_enabled", "True"), + Map.entry("censor_logs", "True"))) + .secrets( + Map.ofEntries(Map.entry("api_key_token", "test_secret_token"))))); + + try { + WebIntegrationAccountResponse result = + apiInstance.createWebIntegrationAccount("twilio", body); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling IntegrationAccountsApi#createWebIntegrationAccount"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/integration-accounts/DeleteWebIntegrationAccount.java b/examples/v2/integration-accounts/DeleteWebIntegrationAccount.java new file mode 100644 index 00000000000..8839a9781b8 --- /dev/null +++ b/examples/v2/integration-accounts/DeleteWebIntegrationAccount.java @@ -0,0 +1,23 @@ +// Delete integration account returns "OK: The account was successfully deleted." response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.IntegrationAccountsApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient); + + try { + apiInstance.deleteWebIntegrationAccount("twilio", "abc123def456"); + } catch (ApiException e) { + System.err.println( + "Exception when calling IntegrationAccountsApi#deleteWebIntegrationAccount"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/integration-accounts/DeleteWebIntegrationAccount_3148550629.java b/examples/v2/integration-accounts/DeleteWebIntegrationAccount_3148550629.java new file mode 100644 index 00000000000..eef8c3dfe10 --- /dev/null +++ b/examples/v2/integration-accounts/DeleteWebIntegrationAccount_3148550629.java @@ -0,0 +1,26 @@ +// Delete integration account returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.IntegrationAccountsApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient); + + // there is a valid "web_integration_account" in the system + String WEB_INTEGRATION_ACCOUNT_DATA_ID = System.getenv("WEB_INTEGRATION_ACCOUNT_DATA_ID"); + + try { + apiInstance.deleteWebIntegrationAccount("twilio", WEB_INTEGRATION_ACCOUNT_DATA_ID); + } catch (ApiException e) { + System.err.println( + "Exception when calling IntegrationAccountsApi#deleteWebIntegrationAccount"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/integration-accounts/GetWebIntegrationAccount.java b/examples/v2/integration-accounts/GetWebIntegrationAccount.java new file mode 100644 index 00000000000..ac6737e73a6 --- /dev/null +++ b/examples/v2/integration-accounts/GetWebIntegrationAccount.java @@ -0,0 +1,25 @@ +// Get integration account returns "OK: The account details for the specified integration." response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.IntegrationAccountsApi; +import com.datadog.api.client.v2.model.WebIntegrationAccountResponse; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient); + + try { + WebIntegrationAccountResponse result = + apiInstance.getWebIntegrationAccount("twilio", "abc123def456"); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling IntegrationAccountsApi#getWebIntegrationAccount"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/integration-accounts/GetWebIntegrationAccountSchema.java b/examples/v2/integration-accounts/GetWebIntegrationAccountSchema.java new file mode 100644 index 00000000000..13e130786c1 --- /dev/null +++ b/examples/v2/integration-accounts/GetWebIntegrationAccountSchema.java @@ -0,0 +1,28 @@ +// Get account schema for an integration returns "OK: The JSON schema for the integration's account +// configuration." +// response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.IntegrationAccountsApi; +import com.datadog.api.client.v2.model.WebIntegrationAccountSchemaResponse; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient); + + try { + WebIntegrationAccountSchemaResponse result = + apiInstance.getWebIntegrationAccountSchema("twilio"); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling IntegrationAccountsApi#getWebIntegrationAccountSchema"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/integration-accounts/GetWebIntegrationAccountSchema_2275808665.java b/examples/v2/integration-accounts/GetWebIntegrationAccountSchema_2275808665.java new file mode 100644 index 00000000000..65515a5ea23 --- /dev/null +++ b/examples/v2/integration-accounts/GetWebIntegrationAccountSchema_2275808665.java @@ -0,0 +1,26 @@ +// Get account schema for an integration returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.IntegrationAccountsApi; +import com.datadog.api.client.v2.model.WebIntegrationAccountSchemaResponse; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient); + + try { + WebIntegrationAccountSchemaResponse result = + apiInstance.getWebIntegrationAccountSchema("twilio"); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling IntegrationAccountsApi#getWebIntegrationAccountSchema"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/integration-accounts/GetWebIntegrationAccount_2208305330.java b/examples/v2/integration-accounts/GetWebIntegrationAccount_2208305330.java new file mode 100644 index 00000000000..646bedd6826 --- /dev/null +++ b/examples/v2/integration-accounts/GetWebIntegrationAccount_2208305330.java @@ -0,0 +1,28 @@ +// Get integration account returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.IntegrationAccountsApi; +import com.datadog.api.client.v2.model.WebIntegrationAccountResponse; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient); + + // there is a valid "web_integration_account" in the system + String WEB_INTEGRATION_ACCOUNT_DATA_ID = System.getenv("WEB_INTEGRATION_ACCOUNT_DATA_ID"); + + try { + WebIntegrationAccountResponse result = + apiInstance.getWebIntegrationAccount("twilio", WEB_INTEGRATION_ACCOUNT_DATA_ID); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling IntegrationAccountsApi#getWebIntegrationAccount"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/integration-accounts/ListWebIntegrationAccounts.java b/examples/v2/integration-accounts/ListWebIntegrationAccounts.java new file mode 100644 index 00000000000..be1387504fe --- /dev/null +++ b/examples/v2/integration-accounts/ListWebIntegrationAccounts.java @@ -0,0 +1,26 @@ +// List integration accounts returns "OK: List of all accounts for the specified integration." +// response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.IntegrationAccountsApi; +import com.datadog.api.client.v2.model.WebIntegrationAccountsResponse; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient); + + try { + WebIntegrationAccountsResponse result = apiInstance.listWebIntegrationAccounts("twilio"); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling IntegrationAccountsApi#listWebIntegrationAccounts"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/integration-accounts/ListWebIntegrationAccounts_2909671841.java b/examples/v2/integration-accounts/ListWebIntegrationAccounts_2909671841.java new file mode 100644 index 00000000000..57884d1591c --- /dev/null +++ b/examples/v2/integration-accounts/ListWebIntegrationAccounts_2909671841.java @@ -0,0 +1,25 @@ +// List integration accounts returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.IntegrationAccountsApi; +import com.datadog.api.client.v2.model.WebIntegrationAccountsResponse; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient); + + try { + WebIntegrationAccountsResponse result = apiInstance.listWebIntegrationAccounts("twilio"); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling IntegrationAccountsApi#listWebIntegrationAccounts"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/integration-accounts/UpdateWebIntegrationAccount.java b/examples/v2/integration-accounts/UpdateWebIntegrationAccount.java new file mode 100644 index 00000000000..118e3c14297 --- /dev/null +++ b/examples/v2/integration-accounts/UpdateWebIntegrationAccount.java @@ -0,0 +1,47 @@ +// Update integration account returns "OK: The account was successfully updated." response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.IntegrationAccountsApi; +import com.datadog.api.client.v2.model.WebIntegrationAccountResponse; +import com.datadog.api.client.v2.model.WebIntegrationAccountType; +import com.datadog.api.client.v2.model.WebIntegrationAccountUpdateRequest; +import com.datadog.api.client.v2.model.WebIntegrationAccountUpdateRequestAttributes; +import com.datadog.api.client.v2.model.WebIntegrationAccountUpdateRequestData; +import java.util.Map; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient); + + WebIntegrationAccountUpdateRequest body = + new WebIntegrationAccountUpdateRequest() + .data( + new WebIntegrationAccountUpdateRequestData() + .attributes( + new WebIntegrationAccountUpdateRequestAttributes() + .name("My Production Account (Updated)") + .secrets( + Map.ofEntries(Map.entry("api_key_token", "new_secret_token_value"))) + .settings( + Map.ofEntries( + Map.entry("ccm_enabled", "True"), + Map.entry("events", "True"), + Map.entry("messages", "False")))) + .type(WebIntegrationAccountType.ACCOUNT)); + + try { + WebIntegrationAccountResponse result = + apiInstance.updateWebIntegrationAccount("twilio", "abc123def456", body); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling IntegrationAccountsApi#updateWebIntegrationAccount"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/integration-accounts/UpdateWebIntegrationAccount_3199996405.java b/examples/v2/integration-accounts/UpdateWebIntegrationAccount_3199996405.java new file mode 100644 index 00000000000..c17becaae26 --- /dev/null +++ b/examples/v2/integration-accounts/UpdateWebIntegrationAccount_3199996405.java @@ -0,0 +1,48 @@ +// Update integration account returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.IntegrationAccountsApi; +import com.datadog.api.client.v2.model.WebIntegrationAccountResponse; +import com.datadog.api.client.v2.model.WebIntegrationAccountType; +import com.datadog.api.client.v2.model.WebIntegrationAccountUpdateRequest; +import com.datadog.api.client.v2.model.WebIntegrationAccountUpdateRequestAttributes; +import com.datadog.api.client.v2.model.WebIntegrationAccountUpdateRequestData; +import java.util.Map; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient); + + // there is a valid "web_integration_account" in the system + String WEB_INTEGRATION_ACCOUNT_DATA_ID = System.getenv("WEB_INTEGRATION_ACCOUNT_DATA_ID"); + + WebIntegrationAccountUpdateRequest body = + new WebIntegrationAccountUpdateRequest() + .data( + new WebIntegrationAccountUpdateRequestData() + .type(WebIntegrationAccountType.ACCOUNT) + .attributes( + new WebIntegrationAccountUpdateRequestAttributes() + .name("Example-Web-Integration-updated") + .settings( + Map.ofEntries( + Map.entry("events", "False"), + Map.entry("messages", "False"), + Map.entry("ccm_enabled", "False"))))); + + try { + WebIntegrationAccountResponse result = + apiInstance.updateWebIntegrationAccount("twilio", WEB_INTEGRATION_ACCOUNT_DATA_ID, body); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling IntegrationAccountsApi#updateWebIntegrationAccount"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/datadog/api/client/v2/api/IntegrationAccountsApi.java b/src/main/java/com/datadog/api/client/v2/api/IntegrationAccountsApi.java new file mode 100644 index 00000000000..be9110d0fee --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/api/IntegrationAccountsApi.java @@ -0,0 +1,1074 @@ +package com.datadog.api.client.v2.api; + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.ApiResponse; +import com.datadog.api.client.Pair; +import com.datadog.api.client.v2.model.WebIntegrationAccountCreateRequest; +import com.datadog.api.client.v2.model.WebIntegrationAccountResponse; +import com.datadog.api.client.v2.model.WebIntegrationAccountSchemaResponse; +import com.datadog.api.client.v2.model.WebIntegrationAccountUpdateRequest; +import com.datadog.api.client.v2.model.WebIntegrationAccountsResponse; +import jakarta.ws.rs.client.Invocation; +import jakarta.ws.rs.core.GenericType; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.CompletableFuture; + +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class IntegrationAccountsApi { + private ApiClient apiClient; + + public IntegrationAccountsApi() { + this(ApiClient.getDefaultApiClient()); + } + + public IntegrationAccountsApi(ApiClient apiClient) { + this.apiClient = apiClient; + } + + /** + * Get the API client. + * + * @return API client + */ + public ApiClient getApiClient() { + return apiClient; + } + + /** + * Set the API client. + * + * @param apiClient an instance of API client + */ + public void setApiClient(ApiClient apiClient) { + this.apiClient = apiClient; + } + + /** + * Create integration account. + * + *

See {@link #createWebIntegrationAccountWithHttpInfo}. + * + * @param integrationName The name of the integration. (required) + * @param body (required) + * @return WebIntegrationAccountResponse + * @throws ApiException if fails to make API call + */ + public WebIntegrationAccountResponse createWebIntegrationAccount( + String integrationName, WebIntegrationAccountCreateRequest body) throws ApiException { + return createWebIntegrationAccountWithHttpInfo(integrationName, body).getData(); + } + + /** + * Create integration account. + * + *

See {@link #createWebIntegrationAccountWithHttpInfoAsync}. + * + * @param integrationName The name of the integration. (required) + * @param body (required) + * @return CompletableFuture<WebIntegrationAccountResponse> + */ + public CompletableFuture createWebIntegrationAccountAsync( + String integrationName, WebIntegrationAccountCreateRequest body) { + return createWebIntegrationAccountWithHttpInfoAsync(integrationName, body) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Create a new account for a specific integration. The account configuration must conform to the + * schema defined for the integration, which can be retrieved using the schema endpoint. + * + *

Rate limit: 50 requests per user every 20 seconds. + * + * @param integrationName The name of the integration. (required) + * @param body (required) + * @return ApiResponse<WebIntegrationAccountResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
201 Created: The account was successfully created. -
400 Bad Request: The request body is malformed or the integration name format is invalid. -
403 Forbidden: The integration is not enabled for API access or the user lacks permissions to manage integrations. -
404 Not Found: The integration does not exist. -
422 Unprocessable Entity: The account configuration does not match the integration schema. -
429 Too Many Requests: Rate limit exceeded. This endpoint has a rate limit of 50 requests per user every 20 seconds. -
+ */ + public ApiResponse createWebIntegrationAccountWithHttpInfo( + String integrationName, WebIntegrationAccountCreateRequest body) throws ApiException { + Object localVarPostBody = body; + + // verify the required parameter 'integrationName' is set + if (integrationName == null) { + throw new ApiException( + 400, + "Missing the required parameter 'integrationName' when calling" + + " createWebIntegrationAccount"); + } + + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException( + 400, "Missing the required parameter 'body' when calling createWebIntegrationAccount"); + } + // create path and map variables + String localVarPath = + "/api/v2/web-integrations/{integration_name}/accounts" + .replaceAll( + "\\{" + "integration_name" + "\\}", + apiClient.escapeString(integrationName.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.IntegrationAccountsApi.createWebIntegrationAccount", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "POST", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Create integration account. + * + *

See {@link #createWebIntegrationAccountWithHttpInfo}. + * + * @param integrationName The name of the integration. (required) + * @param body (required) + * @return CompletableFuture<ApiResponse<WebIntegrationAccountResponse>> + */ + public CompletableFuture> + createWebIntegrationAccountWithHttpInfoAsync( + String integrationName, WebIntegrationAccountCreateRequest body) { + Object localVarPostBody = body; + + // verify the required parameter 'integrationName' is set + if (integrationName == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'integrationName' when calling" + + " createWebIntegrationAccount")); + return result; + } + + // verify the required parameter 'body' is set + if (body == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'body' when calling createWebIntegrationAccount")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/web-integrations/{integration_name}/accounts" + .replaceAll( + "\\{" + "integration_name" + "\\}", + apiClient.escapeString(integrationName.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.IntegrationAccountsApi.createWebIntegrationAccount", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "POST", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Delete integration account. + * + *

See {@link #deleteWebIntegrationAccountWithHttpInfo}. + * + * @param integrationName The name of the integration. (required) + * @param accountId The unique identifier of the account. (required) + * @throws ApiException if fails to make API call + */ + public void deleteWebIntegrationAccount(String integrationName, String accountId) + throws ApiException { + deleteWebIntegrationAccountWithHttpInfo(integrationName, accountId); + } + + /** + * Delete integration account. + * + *

See {@link #deleteWebIntegrationAccountWithHttpInfoAsync}. + * + * @param integrationName The name of the integration. (required) + * @param accountId The unique identifier of the account. (required) + * @return CompletableFuture + */ + public CompletableFuture deleteWebIntegrationAccountAsync( + String integrationName, String accountId) { + return deleteWebIntegrationAccountWithHttpInfoAsync(integrationName, accountId) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Delete a specific account by its ID for a given integration. This removes the account + * configuration and stops any data collection associated with it. + * + *

Rate limit: 50 requests per user every 20 seconds. + * + * @param integrationName The name of the integration. (required) + * @param accountId The unique identifier of the account. (required) + * @return ApiResponse<Void> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK: The account was successfully deleted. -
400 Bad Request: The integration name or account ID format is invalid. -
403 Forbidden: The integration is not enabled for API access or the user lacks permissions to manage this account. -
404 Not Found: The integration or account does not exist. -
429 Too Many Requests: Rate limit exceeded. This endpoint has a rate limit of 50 requests per user every 20 seconds. -
+ */ + public ApiResponse deleteWebIntegrationAccountWithHttpInfo( + String integrationName, String accountId) throws ApiException { + Object localVarPostBody = null; + + // verify the required parameter 'integrationName' is set + if (integrationName == null) { + throw new ApiException( + 400, + "Missing the required parameter 'integrationName' when calling" + + " deleteWebIntegrationAccount"); + } + + // verify the required parameter 'accountId' is set + if (accountId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'accountId' when calling deleteWebIntegrationAccount"); + } + // create path and map variables + String localVarPath = + "/api/v2/web-integrations/{integration_name}/accounts/{account_id}" + .replaceAll( + "\\{" + "integration_name" + "\\}", + apiClient.escapeString(integrationName.toString())) + .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.IntegrationAccountsApi.deleteWebIntegrationAccount", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"*/*"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "DELETE", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + null); + } + + /** + * Delete integration account. + * + *

See {@link #deleteWebIntegrationAccountWithHttpInfo}. + * + * @param integrationName The name of the integration. (required) + * @param accountId The unique identifier of the account. (required) + * @return CompletableFuture<ApiResponse<Void>> + */ + public CompletableFuture> deleteWebIntegrationAccountWithHttpInfoAsync( + String integrationName, String accountId) { + Object localVarPostBody = null; + + // verify the required parameter 'integrationName' is set + if (integrationName == null) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'integrationName' when calling" + + " deleteWebIntegrationAccount")); + return result; + } + + // verify the required parameter 'accountId' is set + if (accountId == null) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'accountId' when calling" + + " deleteWebIntegrationAccount")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/web-integrations/{integration_name}/accounts/{account_id}" + .replaceAll( + "\\{" + "integration_name" + "\\}", + apiClient.escapeString(integrationName.toString())) + .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.IntegrationAccountsApi.deleteWebIntegrationAccount", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"*/*"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "DELETE", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + null); + } + + /** + * Get integration account. + * + *

See {@link #getWebIntegrationAccountWithHttpInfo}. + * + * @param integrationName The name of the integration. (required) + * @param accountId The unique identifier of the account. (required) + * @return WebIntegrationAccountResponse + * @throws ApiException if fails to make API call + */ + public WebIntegrationAccountResponse getWebIntegrationAccount( + String integrationName, String accountId) throws ApiException { + return getWebIntegrationAccountWithHttpInfo(integrationName, accountId).getData(); + } + + /** + * Get integration account. + * + *

See {@link #getWebIntegrationAccountWithHttpInfoAsync}. + * + * @param integrationName The name of the integration. (required) + * @param accountId The unique identifier of the account. (required) + * @return CompletableFuture<WebIntegrationAccountResponse> + */ + public CompletableFuture getWebIntegrationAccountAsync( + String integrationName, String accountId) { + return getWebIntegrationAccountWithHttpInfoAsync(integrationName, accountId) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Retrieve a specific account by its ID for a given integration. The response includes the + * account name and settings, but excludes sensitive secret values. + * + *

Rate limit: 12000 requests per organization every 60 seconds. + * + * @param integrationName The name of the integration. (required) + * @param accountId The unique identifier of the account. (required) + * @return ApiResponse<WebIntegrationAccountResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK: The account details for the specified integration. -
400 Bad Request: The integration name or account ID format is invalid. -
403 Forbidden: The integration is not enabled for API access or the user lacks required permissions. -
404 Not Found: The integration or account does not exist. -
429 Too Many Requests: Rate limit exceeded. This endpoint has a rate limit of 12000 requests per organization every 60 seconds. -
+ */ + public ApiResponse getWebIntegrationAccountWithHttpInfo( + String integrationName, String accountId) throws ApiException { + Object localVarPostBody = null; + + // verify the required parameter 'integrationName' is set + if (integrationName == null) { + throw new ApiException( + 400, + "Missing the required parameter 'integrationName' when calling getWebIntegrationAccount"); + } + + // verify the required parameter 'accountId' is set + if (accountId == null) { + throw new ApiException( + 400, "Missing the required parameter 'accountId' when calling getWebIntegrationAccount"); + } + // create path and map variables + String localVarPath = + "/api/v2/web-integrations/{integration_name}/accounts/{account_id}" + .replaceAll( + "\\{" + "integration_name" + "\\}", + apiClient.escapeString(integrationName.toString())) + .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.IntegrationAccountsApi.getWebIntegrationAccount", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get integration account. + * + *

See {@link #getWebIntegrationAccountWithHttpInfo}. + * + * @param integrationName The name of the integration. (required) + * @param accountId The unique identifier of the account. (required) + * @return CompletableFuture<ApiResponse<WebIntegrationAccountResponse>> + */ + public CompletableFuture> + getWebIntegrationAccountWithHttpInfoAsync(String integrationName, String accountId) { + Object localVarPostBody = null; + + // verify the required parameter 'integrationName' is set + if (integrationName == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'integrationName' when calling" + + " getWebIntegrationAccount")); + return result; + } + + // verify the required parameter 'accountId' is set + if (accountId == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'accountId' when calling getWebIntegrationAccount")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/web-integrations/{integration_name}/accounts/{account_id}" + .replaceAll( + "\\{" + "integration_name" + "\\}", + apiClient.escapeString(integrationName.toString())) + .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.IntegrationAccountsApi.getWebIntegrationAccount", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get account schema for an integration. + * + *

See {@link #getWebIntegrationAccountSchemaWithHttpInfo}. + * + * @param integrationName The name of the integration. (required) + * @return WebIntegrationAccountSchemaResponse + * @throws ApiException if fails to make API call + */ + public WebIntegrationAccountSchemaResponse getWebIntegrationAccountSchema(String integrationName) + throws ApiException { + return getWebIntegrationAccountSchemaWithHttpInfo(integrationName).getData(); + } + + /** + * Get account schema for an integration. + * + *

See {@link #getWebIntegrationAccountSchemaWithHttpInfoAsync}. + * + * @param integrationName The name of the integration. (required) + * @return CompletableFuture<WebIntegrationAccountSchemaResponse> + */ + public CompletableFuture getWebIntegrationAccountSchemaAsync( + String integrationName) { + return getWebIntegrationAccountSchemaWithHttpInfoAsync(integrationName) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Get the JSON schema that defines the structure and validation rules for account configuration + * of a specific integration. This schema describes the required and optional fields for both + * settings and secrets when creating or updating an account. + * + *

The schema structure varies between integrations, so always retrieve the schema for your + * specific integration before creating or updating accounts. + * + *

Rate limit: 12000 requests per organization every 60 seconds. + * + * @param integrationName The name of the integration. (required) + * @return ApiResponse<WebIntegrationAccountSchemaResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK: The JSON schema for the integration's account configuration. -
400 Bad Request: The integration name format is invalid. -
403 Forbidden: The integration is not enabled for API access. -
404 Not Found: The integration does not exist or has no schema available. -
429 Too Many Requests: Rate limit exceeded. This endpoint has a rate limit of 12000 requests per organization every 60 seconds. -
+ */ + public ApiResponse + getWebIntegrationAccountSchemaWithHttpInfo(String integrationName) throws ApiException { + Object localVarPostBody = null; + + // verify the required parameter 'integrationName' is set + if (integrationName == null) { + throw new ApiException( + 400, + "Missing the required parameter 'integrationName' when calling" + + " getWebIntegrationAccountSchema"); + } + // create path and map variables + String localVarPath = + "/api/v2/web-integrations/{integration_name}/accounts/schema" + .replaceAll( + "\\{" + "integration_name" + "\\}", + apiClient.escapeString(integrationName.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.IntegrationAccountsApi.getWebIntegrationAccountSchema", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get account schema for an integration. + * + *

See {@link #getWebIntegrationAccountSchemaWithHttpInfo}. + * + * @param integrationName The name of the integration. (required) + * @return CompletableFuture<ApiResponse<WebIntegrationAccountSchemaResponse>> + */ + public CompletableFuture> + getWebIntegrationAccountSchemaWithHttpInfoAsync(String integrationName) { + Object localVarPostBody = null; + + // verify the required parameter 'integrationName' is set + if (integrationName == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'integrationName' when calling" + + " getWebIntegrationAccountSchema")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/web-integrations/{integration_name}/accounts/schema" + .replaceAll( + "\\{" + "integration_name" + "\\}", + apiClient.escapeString(integrationName.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.IntegrationAccountsApi.getWebIntegrationAccountSchema", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * List integration accounts. + * + *

See {@link #listWebIntegrationAccountsWithHttpInfo}. + * + * @param integrationName The name of the integration. (required) + * @return WebIntegrationAccountsResponse + * @throws ApiException if fails to make API call + */ + public WebIntegrationAccountsResponse listWebIntegrationAccounts(String integrationName) + throws ApiException { + return listWebIntegrationAccountsWithHttpInfo(integrationName).getData(); + } + + /** + * List integration accounts. + * + *

See {@link #listWebIntegrationAccountsWithHttpInfoAsync}. + * + * @param integrationName The name of the integration. (required) + * @return CompletableFuture<WebIntegrationAccountsResponse> + */ + public CompletableFuture listWebIntegrationAccountsAsync( + String integrationName) { + return listWebIntegrationAccountsWithHttpInfoAsync(integrationName) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Retrieve all configured accounts for a specific integration within your organization. + * + *

Rate limit: 50 requests per user every 20 seconds. + * + * @param integrationName The name of the integration. (required) + * @return ApiResponse<WebIntegrationAccountsResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK: List of all accounts for the specified integration. -
400 Bad Request: The integration name format is invalid. -
403 Forbidden: The integration is not enabled for API access or the user lacks required permissions. -
404 Not Found: The integration does not exist. -
429 Too Many Requests: Rate limit exceeded. This endpoint has a rate limit of 50 requests per user every 20 seconds. -
+ */ + public ApiResponse listWebIntegrationAccountsWithHttpInfo( + String integrationName) throws ApiException { + Object localVarPostBody = null; + + // verify the required parameter 'integrationName' is set + if (integrationName == null) { + throw new ApiException( + 400, + "Missing the required parameter 'integrationName' when calling" + + " listWebIntegrationAccounts"); + } + // create path and map variables + String localVarPath = + "/api/v2/web-integrations/{integration_name}/accounts" + .replaceAll( + "\\{" + "integration_name" + "\\}", + apiClient.escapeString(integrationName.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.IntegrationAccountsApi.listWebIntegrationAccounts", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * List integration accounts. + * + *

See {@link #listWebIntegrationAccountsWithHttpInfo}. + * + * @param integrationName The name of the integration. (required) + * @return CompletableFuture<ApiResponse<WebIntegrationAccountsResponse>> + */ + public CompletableFuture> + listWebIntegrationAccountsWithHttpInfoAsync(String integrationName) { + Object localVarPostBody = null; + + // verify the required parameter 'integrationName' is set + if (integrationName == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'integrationName' when calling" + + " listWebIntegrationAccounts")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/web-integrations/{integration_name}/accounts" + .replaceAll( + "\\{" + "integration_name" + "\\}", + apiClient.escapeString(integrationName.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.IntegrationAccountsApi.listWebIntegrationAccounts", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Update integration account. + * + *

See {@link #updateWebIntegrationAccountWithHttpInfo}. + * + * @param integrationName The name of the integration. (required) + * @param accountId The unique identifier of the account. (required) + * @param body (required) + * @return WebIntegrationAccountResponse + * @throws ApiException if fails to make API call + */ + public WebIntegrationAccountResponse updateWebIntegrationAccount( + String integrationName, String accountId, WebIntegrationAccountUpdateRequest body) + throws ApiException { + return updateWebIntegrationAccountWithHttpInfo(integrationName, accountId, body).getData(); + } + + /** + * Update integration account. + * + *

See {@link #updateWebIntegrationAccountWithHttpInfoAsync}. + * + * @param integrationName The name of the integration. (required) + * @param accountId The unique identifier of the account. (required) + * @param body (required) + * @return CompletableFuture<WebIntegrationAccountResponse> + */ + public CompletableFuture updateWebIntegrationAccountAsync( + String integrationName, String accountId, WebIntegrationAccountUpdateRequest body) { + return updateWebIntegrationAccountWithHttpInfoAsync(integrationName, accountId, body) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Update an existing account for a specific integration. You can update the name, settings, and + * secrets. Only the fields provided in the request are updated. + * + *

Rate limit: 50 requests per user every 20 seconds. + * + * @param integrationName The name of the integration. (required) + * @param accountId The unique identifier of the account. (required) + * @param body (required) + * @return ApiResponse<WebIntegrationAccountResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK: The account was successfully updated. -
400 Bad Request: The request body is malformed or the integration name/account ID format is invalid. -
403 Forbidden: The integration is not enabled for API access or the user lacks permissions to manage this account. -
404 Not Found: The integration or account does not exist. -
422 Unprocessable Entity: The account configuration does not match the integration schema. -
429 Too Many Requests: Rate limit exceeded. This endpoint has a rate limit of 50 requests per user every 20 seconds. -
+ */ + public ApiResponse updateWebIntegrationAccountWithHttpInfo( + String integrationName, String accountId, WebIntegrationAccountUpdateRequest body) + throws ApiException { + Object localVarPostBody = body; + + // verify the required parameter 'integrationName' is set + if (integrationName == null) { + throw new ApiException( + 400, + "Missing the required parameter 'integrationName' when calling" + + " updateWebIntegrationAccount"); + } + + // verify the required parameter 'accountId' is set + if (accountId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'accountId' when calling updateWebIntegrationAccount"); + } + + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException( + 400, "Missing the required parameter 'body' when calling updateWebIntegrationAccount"); + } + // create path and map variables + String localVarPath = + "/api/v2/web-integrations/{integration_name}/accounts/{account_id}" + .replaceAll( + "\\{" + "integration_name" + "\\}", + apiClient.escapeString(integrationName.toString())) + .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.IntegrationAccountsApi.updateWebIntegrationAccount", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "PATCH", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Update integration account. + * + *

See {@link #updateWebIntegrationAccountWithHttpInfo}. + * + * @param integrationName The name of the integration. (required) + * @param accountId The unique identifier of the account. (required) + * @param body (required) + * @return CompletableFuture<ApiResponse<WebIntegrationAccountResponse>> + */ + public CompletableFuture> + updateWebIntegrationAccountWithHttpInfoAsync( + String integrationName, String accountId, WebIntegrationAccountUpdateRequest body) { + Object localVarPostBody = body; + + // verify the required parameter 'integrationName' is set + if (integrationName == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'integrationName' when calling" + + " updateWebIntegrationAccount")); + return result; + } + + // verify the required parameter 'accountId' is set + if (accountId == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'accountId' when calling" + + " updateWebIntegrationAccount")); + return result; + } + + // verify the required parameter 'body' is set + if (body == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'body' when calling updateWebIntegrationAccount")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/web-integrations/{integration_name}/accounts/{account_id}" + .replaceAll( + "\\{" + "integration_name" + "\\}", + apiClient.escapeString(integrationName.toString())) + .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.IntegrationAccountsApi.updateWebIntegrationAccount", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "PATCH", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountAttributes.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountAttributes.java new file mode 100644 index 00000000000..2308bcb6552 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountAttributes.java @@ -0,0 +1,182 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Attributes for a web integration account. */ +@JsonPropertyOrder({ + WebIntegrationAccountAttributes.JSON_PROPERTY_NAME, + WebIntegrationAccountAttributes.JSON_PROPERTY_SETTINGS +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountAttributes { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_NAME = "name"; + private String name; + + public static final String JSON_PROPERTY_SETTINGS = "settings"; + private Map settings = new HashMap(); + + public WebIntegrationAccountAttributes() {} + + @JsonCreator + public WebIntegrationAccountAttributes( + @JsonProperty(required = true, value = JSON_PROPERTY_NAME) String name, + @JsonProperty(required = true, value = JSON_PROPERTY_SETTINGS) Map settings) { + this.name = name; + this.settings = settings; + } + + public WebIntegrationAccountAttributes name(String name) { + this.name = name; + return this; + } + + /** + * The name of the account. + * + * @return name + */ + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public WebIntegrationAccountAttributes settings(Map settings) { + this.settings = settings; + return this; + } + + public WebIntegrationAccountAttributes putSettingsItem(String key, Object settingsItem) { + this.settings.put(key, settingsItem); + return this; + } + + /** + * Integration-specific settings for the account. The structure and required fields vary by + * integration type. Use the schema endpoint to retrieve the specific requirements for each + * integration. + * + * @return settings + */ + @JsonProperty(JSON_PROPERTY_SETTINGS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Map getSettings() { + return settings; + } + + public void setSettings(Map settings) { + this.settings = settings; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountAttributes + */ + @JsonAnySetter + public WebIntegrationAccountAttributes putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountAttributes object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountAttributes webIntegrationAccountAttributes = + (WebIntegrationAccountAttributes) o; + return Objects.equals(this.name, webIntegrationAccountAttributes.name) + && Objects.equals(this.settings, webIntegrationAccountAttributes.settings) + && Objects.equals( + this.additionalProperties, webIntegrationAccountAttributes.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(name, settings, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountAttributes {\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" settings: ").append(toIndentedString(settings)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountCreateRequest.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountCreateRequest.java new file mode 100644 index 00000000000..076f13c8f96 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountCreateRequest.java @@ -0,0 +1,148 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Payload for creating a web integration account. */ +@JsonPropertyOrder({WebIntegrationAccountCreateRequest.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountCreateRequest { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private WebIntegrationAccountCreateRequestData data; + + public WebIntegrationAccountCreateRequest() {} + + @JsonCreator + public WebIntegrationAccountCreateRequest( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) + WebIntegrationAccountCreateRequestData data) { + this.data = data; + this.unparsed |= data.unparsed; + } + + public WebIntegrationAccountCreateRequest data(WebIntegrationAccountCreateRequestData data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * Data object for creating a web integration account. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WebIntegrationAccountCreateRequestData getData() { + return data; + } + + public void setData(WebIntegrationAccountCreateRequestData data) { + this.data = data; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountCreateRequest + */ + @JsonAnySetter + public WebIntegrationAccountCreateRequest putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountCreateRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountCreateRequest webIntegrationAccountCreateRequest = + (WebIntegrationAccountCreateRequest) o; + return Objects.equals(this.data, webIntegrationAccountCreateRequest.data) + && Objects.equals( + this.additionalProperties, webIntegrationAccountCreateRequest.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountCreateRequest {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountCreateRequestAttributes.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountCreateRequestAttributes.java new file mode 100644 index 00000000000..442352dd177 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountCreateRequestAttributes.java @@ -0,0 +1,221 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Attributes for creating a web integration account. */ +@JsonPropertyOrder({ + WebIntegrationAccountCreateRequestAttributes.JSON_PROPERTY_NAME, + WebIntegrationAccountCreateRequestAttributes.JSON_PROPERTY_SECRETS, + WebIntegrationAccountCreateRequestAttributes.JSON_PROPERTY_SETTINGS +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountCreateRequestAttributes { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_NAME = "name"; + private String name; + + public static final String JSON_PROPERTY_SECRETS = "secrets"; + private Map secrets = new HashMap(); + + public static final String JSON_PROPERTY_SETTINGS = "settings"; + private Map settings = new HashMap(); + + public WebIntegrationAccountCreateRequestAttributes() {} + + @JsonCreator + public WebIntegrationAccountCreateRequestAttributes( + @JsonProperty(required = true, value = JSON_PROPERTY_NAME) String name, + @JsonProperty(required = true, value = JSON_PROPERTY_SECRETS) Map secrets, + @JsonProperty(required = true, value = JSON_PROPERTY_SETTINGS) Map settings) { + this.name = name; + this.secrets = secrets; + this.settings = settings; + } + + public WebIntegrationAccountCreateRequestAttributes name(String name) { + this.name = name; + return this; + } + + /** + * The name of the account. + * + * @return name + */ + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public WebIntegrationAccountCreateRequestAttributes secrets(Map secrets) { + this.secrets = secrets; + return this; + } + + public WebIntegrationAccountCreateRequestAttributes putSecretsItem( + String key, Object secretsItem) { + this.secrets.put(key, secretsItem); + return this; + } + + /** + * Sensitive credentials for the account. The structure and required fields vary by integration + * type. These values are write-only and never returned in responses. + * + * @return secrets + */ + @JsonProperty(JSON_PROPERTY_SECRETS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Map getSecrets() { + return secrets; + } + + public void setSecrets(Map secrets) { + this.secrets = secrets; + } + + public WebIntegrationAccountCreateRequestAttributes settings(Map settings) { + this.settings = settings; + return this; + } + + public WebIntegrationAccountCreateRequestAttributes putSettingsItem( + String key, Object settingsItem) { + this.settings.put(key, settingsItem); + return this; + } + + /** + * Integration-specific settings for the account. The structure and required fields vary by + * integration type. Use the schema endpoint (GET + * /api/v2/web-integrations/{integration_name}/accounts/schema) to retrieve the specific + * requirements for your integration before creating an account. + * + * @return settings + */ + @JsonProperty(JSON_PROPERTY_SETTINGS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Map getSettings() { + return settings; + } + + public void setSettings(Map settings) { + this.settings = settings; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountCreateRequestAttributes + */ + @JsonAnySetter + public WebIntegrationAccountCreateRequestAttributes putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountCreateRequestAttributes object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountCreateRequestAttributes webIntegrationAccountCreateRequestAttributes = + (WebIntegrationAccountCreateRequestAttributes) o; + return Objects.equals(this.name, webIntegrationAccountCreateRequestAttributes.name) + && Objects.equals(this.secrets, webIntegrationAccountCreateRequestAttributes.secrets) + && Objects.equals(this.settings, webIntegrationAccountCreateRequestAttributes.settings) + && Objects.equals( + this.additionalProperties, + webIntegrationAccountCreateRequestAttributes.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(name, secrets, settings, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountCreateRequestAttributes {\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" secrets: ").append(toIndentedString(secrets)).append("\n"); + sb.append(" settings: ").append(toIndentedString(settings)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountCreateRequestData.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountCreateRequestData.java new file mode 100644 index 00000000000..4879fce5362 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountCreateRequestData.java @@ -0,0 +1,184 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Data object for creating a web integration account. */ +@JsonPropertyOrder({ + WebIntegrationAccountCreateRequestData.JSON_PROPERTY_ATTRIBUTES, + WebIntegrationAccountCreateRequestData.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountCreateRequestData { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private WebIntegrationAccountCreateRequestAttributes attributes; + + public static final String JSON_PROPERTY_TYPE = "type"; + private WebIntegrationAccountType type = WebIntegrationAccountType.ACCOUNT; + + public WebIntegrationAccountCreateRequestData() {} + + @JsonCreator + public WebIntegrationAccountCreateRequestData( + @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES) + WebIntegrationAccountCreateRequestAttributes attributes, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) WebIntegrationAccountType type) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public WebIntegrationAccountCreateRequestData attributes( + WebIntegrationAccountCreateRequestAttributes attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * Attributes for creating a web integration account. + * + * @return attributes + */ + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WebIntegrationAccountCreateRequestAttributes getAttributes() { + return attributes; + } + + public void setAttributes(WebIntegrationAccountCreateRequestAttributes attributes) { + this.attributes = attributes; + } + + public WebIntegrationAccountCreateRequestData type(WebIntegrationAccountType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The JSON:API type for web integration accounts. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WebIntegrationAccountType getType() { + return type; + } + + public void setType(WebIntegrationAccountType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountCreateRequestData + */ + @JsonAnySetter + public WebIntegrationAccountCreateRequestData putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountCreateRequestData object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountCreateRequestData webIntegrationAccountCreateRequestData = + (WebIntegrationAccountCreateRequestData) o; + return Objects.equals(this.attributes, webIntegrationAccountCreateRequestData.attributes) + && Objects.equals(this.type, webIntegrationAccountCreateRequestData.type) + && Objects.equals( + this.additionalProperties, webIntegrationAccountCreateRequestData.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountCreateRequestData {\n"); + sb.append(" attributes: ").append(toIndentedString(attributes)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountResponse.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountResponse.java new file mode 100644 index 00000000000..98d8ea7eb3f --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountResponse.java @@ -0,0 +1,166 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Response containing a single web integration account. */ +@JsonPropertyOrder({ + WebIntegrationAccountResponse.JSON_PROPERTY_DATA, + WebIntegrationAccountResponse.JSON_PROPERTY_INTEGRATION_NAME +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private WebIntegrationAccountResponseData data; + + public static final String JSON_PROPERTY_INTEGRATION_NAME = "integration_name"; + private String integrationName; + + public WebIntegrationAccountResponse data(WebIntegrationAccountResponseData data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * Data object for a web integration account response. + * + * @return data + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WebIntegrationAccountResponseData getData() { + return data; + } + + public void setData(WebIntegrationAccountResponseData data) { + this.data = data; + } + + public WebIntegrationAccountResponse integrationName(String integrationName) { + this.integrationName = integrationName; + return this; + } + + /** + * The name of the integration. + * + * @return integrationName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_INTEGRATION_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getIntegrationName() { + return integrationName; + } + + public void setIntegrationName(String integrationName) { + this.integrationName = integrationName; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountResponse + */ + @JsonAnySetter + public WebIntegrationAccountResponse putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountResponse webIntegrationAccountResponse = (WebIntegrationAccountResponse) o; + return Objects.equals(this.data, webIntegrationAccountResponse.data) + && Objects.equals(this.integrationName, webIntegrationAccountResponse.integrationName) + && Objects.equals( + this.additionalProperties, webIntegrationAccountResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, integrationName, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountResponse {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" integrationName: ").append(toIndentedString(integrationName)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountResponseData.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountResponseData.java new file mode 100644 index 00000000000..fc9dbb31777 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountResponseData.java @@ -0,0 +1,211 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Data object for a web integration account response. */ +@JsonPropertyOrder({ + WebIntegrationAccountResponseData.JSON_PROPERTY_ATTRIBUTES, + WebIntegrationAccountResponseData.JSON_PROPERTY_ID, + WebIntegrationAccountResponseData.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountResponseData { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private WebIntegrationAccountAttributes attributes; + + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public static final String JSON_PROPERTY_TYPE = "type"; + private WebIntegrationAccountType type = WebIntegrationAccountType.ACCOUNT; + + public WebIntegrationAccountResponseData() {} + + @JsonCreator + public WebIntegrationAccountResponseData( + @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES) + WebIntegrationAccountAttributes attributes, + @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) WebIntegrationAccountType type) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + this.id = id; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public WebIntegrationAccountResponseData attributes(WebIntegrationAccountAttributes attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * Attributes for a web integration account. + * + * @return attributes + */ + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WebIntegrationAccountAttributes getAttributes() { + return attributes; + } + + public void setAttributes(WebIntegrationAccountAttributes attributes) { + this.attributes = attributes; + } + + public WebIntegrationAccountResponseData id(String id) { + this.id = id; + return this; + } + + /** + * The unique identifier for the account. + * + * @return id + */ + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public WebIntegrationAccountResponseData type(WebIntegrationAccountType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The JSON:API type for web integration accounts. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WebIntegrationAccountType getType() { + return type; + } + + public void setType(WebIntegrationAccountType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountResponseData + */ + @JsonAnySetter + public WebIntegrationAccountResponseData putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountResponseData object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountResponseData webIntegrationAccountResponseData = + (WebIntegrationAccountResponseData) o; + return Objects.equals(this.attributes, webIntegrationAccountResponseData.attributes) + && Objects.equals(this.id, webIntegrationAccountResponseData.id) + && Objects.equals(this.type, webIntegrationAccountResponseData.type) + && Objects.equals( + this.additionalProperties, webIntegrationAccountResponseData.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, id, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountResponseData {\n"); + sb.append(" attributes: ").append(toIndentedString(attributes)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponse.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponse.java new file mode 100644 index 00000000000..361def8e396 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponse.java @@ -0,0 +1,283 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * Response containing the JSON schema for an integration's account configuration. This schema + * defines the required and optional fields for both settings and secrets, including field types, + * validation rules, and descriptions. + * + *

The response is a standard JSON Schema + * (draft-07) document describing the account configuration structure. Because this is a dynamic + * JSON Schema, the exact properties vary by integration. + */ +@JsonPropertyOrder({ + WebIntegrationAccountSchemaResponse.JSON_PROPERTY__SCHEMA, + WebIntegrationAccountSchemaResponse.JSON_PROPERTY_ADDITIONAL_PROPERTIES, + WebIntegrationAccountSchemaResponse.JSON_PROPERTY_PROPERTIES, + WebIntegrationAccountSchemaResponse.JSON_PROPERTY_REQUIRED, + WebIntegrationAccountSchemaResponse.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountSchemaResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY__SCHEMA = "$schema"; + private String Schema; + + public static final String JSON_PROPERTY_ADDITIONAL_PROPERTIES = "additionalProperties"; + private Boolean additionalProperties; + + public static final String JSON_PROPERTY_PROPERTIES = "properties"; + private WebIntegrationAccountSchemaResponseProperties properties; + + public static final String JSON_PROPERTY_REQUIRED = "required"; + private List required = new ArrayList<>(); + + public static final String JSON_PROPERTY_TYPE = "type"; + private String type; + + public WebIntegrationAccountSchemaResponse() {} + + @JsonCreator + public WebIntegrationAccountSchemaResponse( + @JsonProperty(required = true, value = JSON_PROPERTY__SCHEMA) String Schema, + @JsonProperty(required = true, value = JSON_PROPERTY_PROPERTIES) + WebIntegrationAccountSchemaResponseProperties properties, + @JsonProperty(required = true, value = JSON_PROPERTY_REQUIRED) List required, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) String type) { + this.Schema = Schema; + this.properties = properties; + this.unparsed |= properties.unparsed; + this.required = required; + this.type = type; + } + + public WebIntegrationAccountSchemaResponse Schema(String Schema) { + this.Schema = Schema; + return this; + } + + /** + * The JSON Schema version URI. + * + * @return Schema + */ + @JsonProperty(JSON_PROPERTY__SCHEMA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getSchema() { + return Schema; + } + + public void setSchema(String Schema) { + this.Schema = Schema; + } + + public WebIntegrationAccountSchemaResponse additionalProperties(Boolean additionalProperties) { + this.additionalProperties = additionalProperties; + return this; + } + + /** + * Whether additional properties are allowed at the root level (typically false). + * + * @return additionalProperties + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ADDITIONAL_PROPERTIES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getAdditionalProperties() { + return additionalProperties; + } + + public void setAdditionalProperties(Boolean additionalProperties) { + this.additionalProperties = additionalProperties; + } + + public WebIntegrationAccountSchemaResponse properties( + WebIntegrationAccountSchemaResponseProperties properties) { + this.properties = properties; + this.unparsed |= properties.unparsed; + return this; + } + + /** + * The properties object containing settings and secrets schema definitions. Both are always + * present in every integration schema, but the fields within each vary depending on the specific + * integration. + * + * @return properties + */ + @JsonProperty(JSON_PROPERTY_PROPERTIES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WebIntegrationAccountSchemaResponseProperties getProperties() { + return properties; + } + + public void setProperties(WebIntegrationAccountSchemaResponseProperties properties) { + this.properties = properties; + } + + public WebIntegrationAccountSchemaResponse required(List required) { + this.required = required; + return this; + } + + public WebIntegrationAccountSchemaResponse addRequiredItem(String requiredItem) { + this.required.add(requiredItem); + return this; + } + + /** + * List of required top-level properties. + * + * @return required + */ + @JsonProperty(JSON_PROPERTY_REQUIRED) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getRequired() { + return required; + } + + public void setRequired(List required) { + this.required = required; + } + + public WebIntegrationAccountSchemaResponse type(String type) { + this.type = type; + return this; + } + + /** + * The root type of the schema (always "object"). + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountSchemaResponse + */ + @JsonAnySetter + public WebIntegrationAccountSchemaResponse putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountSchemaResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountSchemaResponse webIntegrationAccountSchemaResponse = + (WebIntegrationAccountSchemaResponse) o; + return Objects.equals(this.Schema, webIntegrationAccountSchemaResponse.Schema) + && Objects.equals( + this.additionalProperties, webIntegrationAccountSchemaResponse.additionalProperties) + && Objects.equals(this.properties, webIntegrationAccountSchemaResponse.properties) + && Objects.equals(this.required, webIntegrationAccountSchemaResponse.required) + && Objects.equals(this.type, webIntegrationAccountSchemaResponse.type) + && Objects.equals( + this.additionalProperties, webIntegrationAccountSchemaResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + Schema, additionalProperties, properties, required, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountSchemaResponse {\n"); + sb.append(" Schema: ").append(toIndentedString(Schema)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append(" properties: ").append(toIndentedString(properties)).append("\n"); + sb.append(" required: ").append(toIndentedString(required)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseProperties.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseProperties.java new file mode 100644 index 00000000000..ade7928b920 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseProperties.java @@ -0,0 +1,192 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * The properties object containing settings and secrets schema definitions. Both are always present + * in every integration schema, but the fields within each vary depending on the specific + * integration. + */ +@JsonPropertyOrder({ + WebIntegrationAccountSchemaResponseProperties.JSON_PROPERTY_SECRETS, + WebIntegrationAccountSchemaResponseProperties.JSON_PROPERTY_SETTINGS +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountSchemaResponseProperties { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_SECRETS = "secrets"; + private WebIntegrationAccountSchemaResponseSecretsObject secrets; + + public static final String JSON_PROPERTY_SETTINGS = "settings"; + private WebIntegrationAccountSchemaResponseSettingsObject settings; + + public WebIntegrationAccountSchemaResponseProperties() {} + + @JsonCreator + public WebIntegrationAccountSchemaResponseProperties( + @JsonProperty(required = true, value = JSON_PROPERTY_SECRETS) + WebIntegrationAccountSchemaResponseSecretsObject secrets, + @JsonProperty(required = true, value = JSON_PROPERTY_SETTINGS) + WebIntegrationAccountSchemaResponseSettingsObject settings) { + this.secrets = secrets; + this.unparsed |= secrets.unparsed; + this.settings = settings; + this.unparsed |= settings.unparsed; + } + + public WebIntegrationAccountSchemaResponseProperties secrets( + WebIntegrationAccountSchemaResponseSecretsObject secrets) { + this.secrets = secrets; + this.unparsed |= secrets.unparsed; + return this; + } + + /** + * JSON Schema definition for the secrets object. Contains sensitive credentials required for the + * integration such as API keys, tokens, and passwords. These values are write-only and never + * returned in responses. + * + * @return secrets + */ + @JsonProperty(JSON_PROPERTY_SECRETS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WebIntegrationAccountSchemaResponseSecretsObject getSecrets() { + return secrets; + } + + public void setSecrets(WebIntegrationAccountSchemaResponseSecretsObject secrets) { + this.secrets = secrets; + } + + public WebIntegrationAccountSchemaResponseProperties settings( + WebIntegrationAccountSchemaResponseSettingsObject settings) { + this.settings = settings; + this.unparsed |= settings.unparsed; + return this; + } + + /** + * JSON Schema definition for the settings object. Contains integration-specific configuration + * fields such as account identifiers, feature toggles, and non-sensitive configuration options. + * + * @return settings + */ + @JsonProperty(JSON_PROPERTY_SETTINGS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WebIntegrationAccountSchemaResponseSettingsObject getSettings() { + return settings; + } + + public void setSettings(WebIntegrationAccountSchemaResponseSettingsObject settings) { + this.settings = settings; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountSchemaResponseProperties + */ + @JsonAnySetter + public WebIntegrationAccountSchemaResponseProperties putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountSchemaResponseProperties object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountSchemaResponseProperties webIntegrationAccountSchemaResponseProperties = + (WebIntegrationAccountSchemaResponseProperties) o; + return Objects.equals(this.secrets, webIntegrationAccountSchemaResponseProperties.secrets) + && Objects.equals(this.settings, webIntegrationAccountSchemaResponseProperties.settings) + && Objects.equals( + this.additionalProperties, + webIntegrationAccountSchemaResponseProperties.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(secrets, settings, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountSchemaResponseProperties {\n"); + sb.append(" secrets: ").append(toIndentedString(secrets)).append("\n"); + sb.append(" settings: ").append(toIndentedString(settings)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseSecretsObject.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseSecretsObject.java new file mode 100644 index 00000000000..103e5133927 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseSecretsObject.java @@ -0,0 +1,254 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * JSON Schema definition for the secrets object. Contains sensitive credentials required for the + * integration such as API keys, tokens, and passwords. These values are write-only and never + * returned in responses. + */ +@JsonPropertyOrder({ + WebIntegrationAccountSchemaResponseSecretsObject.JSON_PROPERTY_ADDITIONAL_PROPERTIES, + WebIntegrationAccountSchemaResponseSecretsObject.JSON_PROPERTY_PROPERTIES, + WebIntegrationAccountSchemaResponseSecretsObject.JSON_PROPERTY_REQUIRED, + WebIntegrationAccountSchemaResponseSecretsObject.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountSchemaResponseSecretsObject { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ADDITIONAL_PROPERTIES = "additionalProperties"; + private Boolean additionalProperties; + + public static final String JSON_PROPERTY_PROPERTIES = "properties"; + private Map properties = null; + + public static final String JSON_PROPERTY_REQUIRED = "required"; + private List required = null; + + public static final String JSON_PROPERTY_TYPE = "type"; + private String type; + + public WebIntegrationAccountSchemaResponseSecretsObject additionalProperties( + Boolean additionalProperties) { + this.additionalProperties = additionalProperties; + return this; + } + + /** + * Whether additional properties are allowed (typically false). + * + * @return additionalProperties + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ADDITIONAL_PROPERTIES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getAdditionalProperties() { + return additionalProperties; + } + + public void setAdditionalProperties(Boolean additionalProperties) { + this.additionalProperties = additionalProperties; + } + + public WebIntegrationAccountSchemaResponseSecretsObject properties( + Map properties) { + this.properties = properties; + return this; + } + + public WebIntegrationAccountSchemaResponseSecretsObject putPropertiesItem( + String key, WebIntegrationAccountSchemaResponseSettingsField propertiesItem) { + if (this.properties == null) { + this.properties = new HashMap<>(); + } + this.properties.put(key, propertiesItem); + return this; + } + + /** + * The individual secret fields for this integration. Field names and types vary by integration. + * + * @return properties + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PROPERTIES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Map getProperties() { + return properties; + } + + public void setProperties( + Map properties) { + this.properties = properties; + } + + public WebIntegrationAccountSchemaResponseSecretsObject required(List required) { + this.required = required; + return this; + } + + public WebIntegrationAccountSchemaResponseSecretsObject addRequiredItem(String requiredItem) { + if (this.required == null) { + this.required = new ArrayList<>(); + } + this.required.add(requiredItem); + return this; + } + + /** + * List of required secret field names. + * + * @return required + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REQUIRED) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getRequired() { + return required; + } + + public void setRequired(List required) { + this.required = required; + } + + public WebIntegrationAccountSchemaResponseSecretsObject type(String type) { + this.type = type; + return this; + } + + /** + * Always "object" for the secrets container. + * + * @return type + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountSchemaResponseSecretsObject + */ + @JsonAnySetter + public WebIntegrationAccountSchemaResponseSecretsObject putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountSchemaResponseSecretsObject object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountSchemaResponseSecretsObject + webIntegrationAccountSchemaResponseSecretsObject = + (WebIntegrationAccountSchemaResponseSecretsObject) o; + return Objects.equals( + this.additionalProperties, + webIntegrationAccountSchemaResponseSecretsObject.additionalProperties) + && Objects.equals( + this.properties, webIntegrationAccountSchemaResponseSecretsObject.properties) + && Objects.equals(this.required, webIntegrationAccountSchemaResponseSecretsObject.required) + && Objects.equals(this.type, webIntegrationAccountSchemaResponseSecretsObject.type) + && Objects.equals( + this.additionalProperties, + webIntegrationAccountSchemaResponseSecretsObject.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(additionalProperties, properties, required, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountSchemaResponseSecretsObject {\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append(" properties: ").append(toIndentedString(properties)).append("\n"); + sb.append(" required: ").append(toIndentedString(required)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseSettingsField.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseSettingsField.java new file mode 100644 index 00000000000..72c2ddfc52a --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseSettingsField.java @@ -0,0 +1,288 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * JSON Schema definition for a single field within settings or secrets. The exact fields vary by + * integration. + */ +@JsonPropertyOrder({ + WebIntegrationAccountSchemaResponseSettingsField.JSON_PROPERTY_ADDITIONAL_PROPERTIES, + WebIntegrationAccountSchemaResponseSettingsField.JSON_PROPERTY_DEFAULT, + WebIntegrationAccountSchemaResponseSettingsField.JSON_PROPERTY_DESCRIPTION, + WebIntegrationAccountSchemaResponseSettingsField.JSON_PROPERTY_ITEMS, + WebIntegrationAccountSchemaResponseSettingsField.JSON_PROPERTY_MIN_LENGTH, + WebIntegrationAccountSchemaResponseSettingsField.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountSchemaResponseSettingsField { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ADDITIONAL_PROPERTIES = "additionalProperties"; + private Boolean additionalProperties; + + public static final String JSON_PROPERTY_DEFAULT = "default"; + private Object _default = null; + + public static final String JSON_PROPERTY_DESCRIPTION = "description"; + private String description; + + public static final String JSON_PROPERTY_ITEMS = "items"; + private Object items; + + public static final String JSON_PROPERTY_MIN_LENGTH = "minLength"; + private Long minLength; + + public static final String JSON_PROPERTY_TYPE = "type"; + private String type; + + public WebIntegrationAccountSchemaResponseSettingsField additionalProperties( + Boolean additionalProperties) { + this.additionalProperties = additionalProperties; + return this; + } + + /** + * Whether additional properties are allowed for this field. + * + * @return additionalProperties + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ADDITIONAL_PROPERTIES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getAdditionalProperties() { + return additionalProperties; + } + + public void setAdditionalProperties(Boolean additionalProperties) { + this.additionalProperties = additionalProperties; + } + + public WebIntegrationAccountSchemaResponseSettingsField _default(Object _default) { + this._default = _default; + return this; + } + + /** + * Default value for the field if not provided. + * + * @return _default + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DEFAULT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Object getDefault() { + return _default; + } + + public void setDefault(Object _default) { + this._default = _default; + } + + public WebIntegrationAccountSchemaResponseSettingsField description(String description) { + this.description = description; + return this; + } + + /** + * Human-readable description of the field's purpose. + * + * @return description + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public WebIntegrationAccountSchemaResponseSettingsField items(Object items) { + this.items = items; + return this; + } + + /** + * Schema for array items when type is "array". + * + * @return items + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ITEMS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Object getItems() { + return items; + } + + public void setItems(Object items) { + this.items = items; + } + + public WebIntegrationAccountSchemaResponseSettingsField minLength(Long minLength) { + this.minLength = minLength; + return this; + } + + /** + * Minimum length for string fields. + * + * @return minLength + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_MIN_LENGTH) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getMinLength() { + return minLength; + } + + public void setMinLength(Long minLength) { + this.minLength = minLength; + } + + public WebIntegrationAccountSchemaResponseSettingsField type(String type) { + this.type = type; + return this; + } + + /** + * The data type of the field (string, boolean, integer, array, object). + * + * @return type + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountSchemaResponseSettingsField + */ + @JsonAnySetter + public WebIntegrationAccountSchemaResponseSettingsField putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountSchemaResponseSettingsField object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountSchemaResponseSettingsField + webIntegrationAccountSchemaResponseSettingsField = + (WebIntegrationAccountSchemaResponseSettingsField) o; + return Objects.equals( + this.additionalProperties, + webIntegrationAccountSchemaResponseSettingsField.additionalProperties) + && Objects.equals(this._default, webIntegrationAccountSchemaResponseSettingsField._default) + && Objects.equals( + this.description, webIntegrationAccountSchemaResponseSettingsField.description) + && Objects.equals(this.items, webIntegrationAccountSchemaResponseSettingsField.items) + && Objects.equals( + this.minLength, webIntegrationAccountSchemaResponseSettingsField.minLength) + && Objects.equals(this.type, webIntegrationAccountSchemaResponseSettingsField.type) + && Objects.equals( + this.additionalProperties, + webIntegrationAccountSchemaResponseSettingsField.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + additionalProperties, _default, description, items, minLength, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountSchemaResponseSettingsField {\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append(" _default: ").append(toIndentedString(_default)).append("\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" items: ").append(toIndentedString(items)).append("\n"); + sb.append(" minLength: ").append(toIndentedString(minLength)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseSettingsObject.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseSettingsObject.java new file mode 100644 index 00000000000..7b3441573c7 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountSchemaResponseSettingsObject.java @@ -0,0 +1,253 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * JSON Schema definition for the settings object. Contains integration-specific configuration + * fields such as account identifiers, feature toggles, and non-sensitive configuration options. + */ +@JsonPropertyOrder({ + WebIntegrationAccountSchemaResponseSettingsObject.JSON_PROPERTY_ADDITIONAL_PROPERTIES, + WebIntegrationAccountSchemaResponseSettingsObject.JSON_PROPERTY_PROPERTIES, + WebIntegrationAccountSchemaResponseSettingsObject.JSON_PROPERTY_REQUIRED, + WebIntegrationAccountSchemaResponseSettingsObject.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountSchemaResponseSettingsObject { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ADDITIONAL_PROPERTIES = "additionalProperties"; + private Boolean additionalProperties; + + public static final String JSON_PROPERTY_PROPERTIES = "properties"; + private Map properties = null; + + public static final String JSON_PROPERTY_REQUIRED = "required"; + private List required = null; + + public static final String JSON_PROPERTY_TYPE = "type"; + private String type; + + public WebIntegrationAccountSchemaResponseSettingsObject additionalProperties( + Boolean additionalProperties) { + this.additionalProperties = additionalProperties; + return this; + } + + /** + * Whether additional properties are allowed (typically false). + * + * @return additionalProperties + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ADDITIONAL_PROPERTIES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getAdditionalProperties() { + return additionalProperties; + } + + public void setAdditionalProperties(Boolean additionalProperties) { + this.additionalProperties = additionalProperties; + } + + public WebIntegrationAccountSchemaResponseSettingsObject properties( + Map properties) { + this.properties = properties; + return this; + } + + public WebIntegrationAccountSchemaResponseSettingsObject putPropertiesItem( + String key, WebIntegrationAccountSchemaResponseSettingsField propertiesItem) { + if (this.properties == null) { + this.properties = new HashMap<>(); + } + this.properties.put(key, propertiesItem); + return this; + } + + /** + * The individual setting fields for this integration. Field names and types vary by integration. + * + * @return properties + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PROPERTIES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Map getProperties() { + return properties; + } + + public void setProperties( + Map properties) { + this.properties = properties; + } + + public WebIntegrationAccountSchemaResponseSettingsObject required(List required) { + this.required = required; + return this; + } + + public WebIntegrationAccountSchemaResponseSettingsObject addRequiredItem(String requiredItem) { + if (this.required == null) { + this.required = new ArrayList<>(); + } + this.required.add(requiredItem); + return this; + } + + /** + * List of required setting field names. + * + * @return required + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REQUIRED) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getRequired() { + return required; + } + + public void setRequired(List required) { + this.required = required; + } + + public WebIntegrationAccountSchemaResponseSettingsObject type(String type) { + this.type = type; + return this; + } + + /** + * Always "object" for the settings container. + * + * @return type + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountSchemaResponseSettingsObject + */ + @JsonAnySetter + public WebIntegrationAccountSchemaResponseSettingsObject putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountSchemaResponseSettingsObject object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountSchemaResponseSettingsObject + webIntegrationAccountSchemaResponseSettingsObject = + (WebIntegrationAccountSchemaResponseSettingsObject) o; + return Objects.equals( + this.additionalProperties, + webIntegrationAccountSchemaResponseSettingsObject.additionalProperties) + && Objects.equals( + this.properties, webIntegrationAccountSchemaResponseSettingsObject.properties) + && Objects.equals(this.required, webIntegrationAccountSchemaResponseSettingsObject.required) + && Objects.equals(this.type, webIntegrationAccountSchemaResponseSettingsObject.type) + && Objects.equals( + this.additionalProperties, + webIntegrationAccountSchemaResponseSettingsObject.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(additionalProperties, properties, required, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountSchemaResponseSettingsObject {\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append(" properties: ").append(toIndentedString(properties)).append("\n"); + sb.append(" required: ").append(toIndentedString(required)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountType.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountType.java new file mode 100644 index 00000000000..99fc2e19815 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountType.java @@ -0,0 +1,55 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** The JSON:API type for web integration accounts. */ +@JsonSerialize(using = WebIntegrationAccountType.WebIntegrationAccountTypeSerializer.class) +public class WebIntegrationAccountType extends ModelEnum { + + private static final Set allowedValues = new HashSet(Arrays.asList("Account")); + + public static final WebIntegrationAccountType ACCOUNT = new WebIntegrationAccountType("Account"); + + WebIntegrationAccountType(String value) { + super(value, allowedValues); + } + + public static class WebIntegrationAccountTypeSerializer + extends StdSerializer { + public WebIntegrationAccountTypeSerializer(Class t) { + super(t); + } + + public WebIntegrationAccountTypeSerializer() { + this(null); + } + + @Override + public void serialize( + WebIntegrationAccountType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static WebIntegrationAccountType fromValue(String value) { + return new WebIntegrationAccountType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountUpdateRequest.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountUpdateRequest.java new file mode 100644 index 00000000000..b31834191a0 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountUpdateRequest.java @@ -0,0 +1,148 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Payload for updating a web integration account. */ +@JsonPropertyOrder({WebIntegrationAccountUpdateRequest.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountUpdateRequest { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private WebIntegrationAccountUpdateRequestData data; + + public WebIntegrationAccountUpdateRequest() {} + + @JsonCreator + public WebIntegrationAccountUpdateRequest( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) + WebIntegrationAccountUpdateRequestData data) { + this.data = data; + this.unparsed |= data.unparsed; + } + + public WebIntegrationAccountUpdateRequest data(WebIntegrationAccountUpdateRequestData data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * Data object for updating a web integration account. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WebIntegrationAccountUpdateRequestData getData() { + return data; + } + + public void setData(WebIntegrationAccountUpdateRequestData data) { + this.data = data; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountUpdateRequest + */ + @JsonAnySetter + public WebIntegrationAccountUpdateRequest putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountUpdateRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountUpdateRequest webIntegrationAccountUpdateRequest = + (WebIntegrationAccountUpdateRequest) o; + return Objects.equals(this.data, webIntegrationAccountUpdateRequest.data) + && Objects.equals( + this.additionalProperties, webIntegrationAccountUpdateRequest.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountUpdateRequest {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountUpdateRequestAttributes.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountUpdateRequestAttributes.java new file mode 100644 index 00000000000..e002eee3fa0 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountUpdateRequestAttributes.java @@ -0,0 +1,218 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * Attributes for updating a web integration account. All fields are optional; only provide the + * fields you want to update. + */ +@JsonPropertyOrder({ + WebIntegrationAccountUpdateRequestAttributes.JSON_PROPERTY_NAME, + WebIntegrationAccountUpdateRequestAttributes.JSON_PROPERTY_SECRETS, + WebIntegrationAccountUpdateRequestAttributes.JSON_PROPERTY_SETTINGS +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountUpdateRequestAttributes { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_NAME = "name"; + private String name; + + public static final String JSON_PROPERTY_SECRETS = "secrets"; + private Map secrets = null; + + public static final String JSON_PROPERTY_SETTINGS = "settings"; + private Map settings = null; + + public WebIntegrationAccountUpdateRequestAttributes name(String name) { + this.name = name; + return this; + } + + /** + * The name of the account. + * + * @return name + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public WebIntegrationAccountUpdateRequestAttributes secrets(Map secrets) { + this.secrets = secrets; + return this; + } + + public WebIntegrationAccountUpdateRequestAttributes putSecretsItem( + String key, Object secretsItem) { + if (this.secrets == null) { + this.secrets = new HashMap<>(); + } + this.secrets.put(key, secretsItem); + return this; + } + + /** + * Sensitive credentials to update. Only the secrets provided are updated. These values are + * write-only and never returned in responses. + * + * @return secrets + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_SECRETS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Map getSecrets() { + return secrets; + } + + public void setSecrets(Map secrets) { + this.secrets = secrets; + } + + public WebIntegrationAccountUpdateRequestAttributes settings(Map settings) { + this.settings = settings; + return this; + } + + public WebIntegrationAccountUpdateRequestAttributes putSettingsItem( + String key, Object settingsItem) { + if (this.settings == null) { + this.settings = new HashMap<>(); + } + this.settings.put(key, settingsItem); + return this; + } + + /** + * Integration-specific settings to update. Only the fields provided are updated. The structure + * varies by integration type. See the integration's schema for available fields. + * + * @return settings + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_SETTINGS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Map getSettings() { + return settings; + } + + public void setSettings(Map settings) { + this.settings = settings; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountUpdateRequestAttributes + */ + @JsonAnySetter + public WebIntegrationAccountUpdateRequestAttributes putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountUpdateRequestAttributes object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountUpdateRequestAttributes webIntegrationAccountUpdateRequestAttributes = + (WebIntegrationAccountUpdateRequestAttributes) o; + return Objects.equals(this.name, webIntegrationAccountUpdateRequestAttributes.name) + && Objects.equals(this.secrets, webIntegrationAccountUpdateRequestAttributes.secrets) + && Objects.equals(this.settings, webIntegrationAccountUpdateRequestAttributes.settings) + && Objects.equals( + this.additionalProperties, + webIntegrationAccountUpdateRequestAttributes.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(name, secrets, settings, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountUpdateRequestAttributes {\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" secrets: ").append(toIndentedString(secrets)).append("\n"); + sb.append(" settings: ").append(toIndentedString(settings)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountUpdateRequestData.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountUpdateRequestData.java new file mode 100644 index 00000000000..e4b061e0e62 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountUpdateRequestData.java @@ -0,0 +1,182 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Data object for updating a web integration account. */ +@JsonPropertyOrder({ + WebIntegrationAccountUpdateRequestData.JSON_PROPERTY_ATTRIBUTES, + WebIntegrationAccountUpdateRequestData.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountUpdateRequestData { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private WebIntegrationAccountUpdateRequestAttributes attributes; + + public static final String JSON_PROPERTY_TYPE = "type"; + private WebIntegrationAccountType type = WebIntegrationAccountType.ACCOUNT; + + public WebIntegrationAccountUpdateRequestData() {} + + @JsonCreator + public WebIntegrationAccountUpdateRequestData( + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) WebIntegrationAccountType type) { + this.type = type; + this.unparsed |= !type.isValid(); + } + + public WebIntegrationAccountUpdateRequestData attributes( + WebIntegrationAccountUpdateRequestAttributes attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * Attributes for updating a web integration account. All fields are optional; only provide the + * fields you want to update. + * + * @return attributes + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WebIntegrationAccountUpdateRequestAttributes getAttributes() { + return attributes; + } + + public void setAttributes(WebIntegrationAccountUpdateRequestAttributes attributes) { + this.attributes = attributes; + } + + public WebIntegrationAccountUpdateRequestData type(WebIntegrationAccountType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The JSON:API type for web integration accounts. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public WebIntegrationAccountType getType() { + return type; + } + + public void setType(WebIntegrationAccountType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountUpdateRequestData + */ + @JsonAnySetter + public WebIntegrationAccountUpdateRequestData putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountUpdateRequestData object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountUpdateRequestData webIntegrationAccountUpdateRequestData = + (WebIntegrationAccountUpdateRequestData) o; + return Objects.equals(this.attributes, webIntegrationAccountUpdateRequestData.attributes) + && Objects.equals(this.type, webIntegrationAccountUpdateRequestData.type) + && Objects.equals( + this.additionalProperties, webIntegrationAccountUpdateRequestData.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountUpdateRequestData {\n"); + sb.append(" attributes: ").append(toIndentedString(attributes)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountsResponse.java b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountsResponse.java new file mode 100644 index 00000000000..e49aa3b164f --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/WebIntegrationAccountsResponse.java @@ -0,0 +1,180 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** Response containing a list of web integration accounts. */ +@JsonPropertyOrder({ + WebIntegrationAccountsResponse.JSON_PROPERTY_DATA, + WebIntegrationAccountsResponse.JSON_PROPERTY_INTEGRATION_NAME +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class WebIntegrationAccountsResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private List data = null; + + public static final String JSON_PROPERTY_INTEGRATION_NAME = "integration_name"; + private String integrationName; + + public WebIntegrationAccountsResponse data(List data) { + this.data = data; + for (WebIntegrationAccountResponseData item : data) { + this.unparsed |= item.unparsed; + } + return this; + } + + public WebIntegrationAccountsResponse addDataItem(WebIntegrationAccountResponseData dataItem) { + if (this.data == null) { + this.data = new ArrayList<>(); + } + this.data.add(dataItem); + this.unparsed |= dataItem.unparsed; + return this; + } + + /** + * Getdata + * + * @return data + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public WebIntegrationAccountsResponse integrationName(String integrationName) { + this.integrationName = integrationName; + return this; + } + + /** + * The name of the integration. + * + * @return integrationName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_INTEGRATION_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getIntegrationName() { + return integrationName; + } + + public void setIntegrationName(String integrationName) { + this.integrationName = integrationName; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return WebIntegrationAccountsResponse + */ + @JsonAnySetter + public WebIntegrationAccountsResponse putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this WebIntegrationAccountsResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebIntegrationAccountsResponse webIntegrationAccountsResponse = + (WebIntegrationAccountsResponse) o; + return Objects.equals(this.data, webIntegrationAccountsResponse.data) + && Objects.equals(this.integrationName, webIntegrationAccountsResponse.integrationName) + && Objects.equals( + this.additionalProperties, webIntegrationAccountsResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, integrationName, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebIntegrationAccountsResponse {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" integrationName: ").append(toIndentedString(integrationName)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/test/resources/cassettes/features/v2/Create_integration_account_returns_Created_response.freeze b/src/test/resources/cassettes/features/v2/Create_integration_account_returns_Created_response.freeze new file mode 100644 index 00000000000..ee56d681a17 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Create_integration_account_returns_Created_response.freeze @@ -0,0 +1 @@ +2026-01-16T00:21:52.989Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_integration_account_returns_Created_response.json b/src/test/resources/cassettes/features/v2/Create_integration_account_returns_Created_response.json new file mode 100644 index 00000000000..f209bd46ef7 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Create_integration_account_returns_Created_response.json @@ -0,0 +1,32 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"name\":\"Test-Create_integration_account_returns_Created_response-1768522912\",\"secrets\":{\"api_key_token\":\"test_secret_token\"},\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}},\"type\":\"Account\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/web-integrations/twilio/accounts", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"591eebe4-998f-49f0-b5db-a6b76e3ff392\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-Create_integration_account_returns_Created_response-1768522912\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "657e1bc8-d7c7-b991-aec2-3fcee4c48443" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_integration_account_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Delete_integration_account_returns_OK_response.freeze new file mode 100644 index 00000000000..54451354153 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Delete_integration_account_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-01-16T00:21:53.514Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_integration_account_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Delete_integration_account_returns_OK_response.json new file mode 100644 index 00000000000..101de1c080d --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Delete_integration_account_returns_OK_response.json @@ -0,0 +1,57 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"name\":\"Test-Delete_integration_account_returns_OK_response-1768522913\",\"secrets\":{\"api_key_token\":\"test_secret_token_value\"},\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}},\"type\":\"Account\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/web-integrations/twilio/accounts", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"2ef78fa1-8ebd-4dc8-8db7-1516563d9a35\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-Delete_integration_account_returns_OK_response-1768522913\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "a2197037-fd4b-273c-0921-261676cde17c" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/web-integrations/twilio/accounts/2ef78fa1-8ebd-4dc8-8db7-1516563d9a35", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "ca5b2b00-8182-544f-6e90-27ea25d21c13" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_account_schema_for_an_integration_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Get_account_schema_for_an_integration_returns_OK_response.freeze new file mode 100644 index 00000000000..5b4b6c40750 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_account_schema_for_an_integration_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-01-16T00:23:39.895Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_account_schema_for_an_integration_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Get_account_schema_for_an_integration_returns_OK_response.json new file mode 100644 index 00000000000..d4dd0f759d7 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_account_schema_for_an_integration_returns_OK_response.json @@ -0,0 +1,28 @@ +[ + { + "httpRequest": { + "headers": {}, + "method": "GET", + "path": "/api/v2/web-integrations/twilio/accounts/schema", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"additionalProperties\":false,\"properties\":{\"secrets\":{\"additionalProperties\":false,\"properties\":{\"api_key_token\":{\"additionalProperties\":false,\"description\":\"Twilio API Key Secret (token) corresponding to the API Key SID. Keep this secure as it provides authentication access.\",\"minLength\":1,\"type\":\"string\"}},\"required\":[\"api_key_token\"],\"type\":\"object\"},\"settings\":{\"additionalProperties\":false,\"properties\":{\"account_sid\":{\"additionalProperties\":false,\"description\":\"Twilio Account SID that uniquely identifies your Twilio account. Found in Twilio Console \\u003e Account Info.\",\"minLength\":1,\"type\":\"string\"},\"alerts\":{\"additionalProperties\":false,\"description\":\"Enable collection of Twilio Alerts logs to monitor account alerts and notifications\",\"type\":\"boolean\"},\"api_key\":{\"additionalProperties\":false,\"description\":\"Twilio API Key SID for authentication. Create from Twilio Console \\u003e Account \\u003e API Keys \\u0026 Tokens.\",\"minLength\":1,\"type\":\"string\"},\"call_summaries\":{\"additionalProperties\":false,\"description\":\"Enable collection of Twilio Voice call summaries to track voice call performance and metadata\",\"type\":\"boolean\"},\"ccm_enabled\":{\"additionalProperties\":false,\"description\":\"Enable Cloud Cost Management to monitor Twilio usage costs and identify optimization opportunities\",\"type\":\"boolean\"},\"censor_logs\":{\"additionalProperties\":false,\"description\":\"Enable censoring of sensitive data in logs. When true, phone numbers in the 'to' field and SMS message bodies are censored for privacy.\",\"type\":\"boolean\"},\"events\":{\"additionalProperties\":false,\"description\":\"Enable collection of Twilio Events logs to monitor account-level events and activities\",\"type\":\"boolean\"},\"messages\":{\"additionalProperties\":false,\"description\":\"Enable collection of Twilio Messages logs to track SMS and messaging activity\",\"type\":\"boolean\"}},\"required\":[\"api_key\",\"account_sid\",\"events\",\"messages\",\"alerts\",\"call_summaries\",\"ccm_enabled\",\"censor_logs\"],\"type\":\"object\"}},\"required\":[\"settings\",\"secrets\"],\"type\":\"object\"}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "75560e83-ca56-9ae8-6233-1483d36282bd" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_integration_account_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Get_integration_account_returns_OK_response.freeze new file mode 100644 index 00000000000..67caccae486 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_integration_account_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-01-16T00:21:54.756Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_integration_account_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Get_integration_account_returns_OK_response.json new file mode 100644 index 00000000000..c0bcbc85169 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_integration_account_returns_OK_response.json @@ -0,0 +1,58 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"name\":\"Test-Get_integration_account_returns_OK_response-1768522914\",\"secrets\":{\"api_key_token\":\"test_secret_token_value\"},\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}},\"type\":\"Account\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/web-integrations/twilio/accounts", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"945d4bbe-d24e-4530-a4db-3dc27329e5e8\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-Get_integration_account_returns_OK_response-1768522914\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "9de09fb2-7607-508c-83c9-4886d1b755ae" + }, + { + "httpRequest": { + "headers": {}, + "method": "GET", + "path": "/api/v2/web-integrations/twilio/accounts/945d4bbe-d24e-4530-a4db-3dc27329e5e8", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"945d4bbe-d24e-4530-a4db-3dc27329e5e8\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-Get_integration_account_returns_OK_response-1768522914\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "6ec9bc6c-56a3-56c0-cad3-df1e58cb062e" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/List_integration_accounts_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/List_integration_accounts_returns_OK_response.freeze new file mode 100644 index 00000000000..3e3e9e31421 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/List_integration_accounts_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-01-16T00:21:55.952Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/List_integration_accounts_returns_OK_response.json b/src/test/resources/cassettes/features/v2/List_integration_accounts_returns_OK_response.json new file mode 100644 index 00000000000..cd2789a6ac8 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/List_integration_accounts_returns_OK_response.json @@ -0,0 +1,58 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"name\":\"Test-List_integration_accounts_returns_OK_response-1768522915\",\"secrets\":{\"api_key_token\":\"test_secret_token_value\"},\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}},\"type\":\"Account\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/web-integrations/twilio/accounts", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"a491e2ce-8537-4015-8552-d76b23f9c2a2\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-List_integration_accounts_returns_OK_response-1768522915\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "0bad62e1-1013-f327-9001-211c97a28bf6" + }, + { + "httpRequest": { + "headers": {}, + "method": "GET", + "path": "/api/v2/web-integrations/twilio/accounts", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":[{\"id\":\"cea19da0-127c-46bd-af1f-dab6524dc139\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-Create_integration_account_returns_Created_response-1768495642\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}}},{\"id\":\"07527a04-9eab-4528-8d55-072bb4cbfdfd\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-Get_integration_account_returns_OK_response-1768495644\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}}},{\"id\":\"efa743ed-c968-49df-97ce-f078b8f6a871\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-List_integration_accounts_returns_OK_response-1768495645\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}}},{\"id\":\"4fe972b3-5a53-414f-9304-0a683f403f46\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-Update_integration_account_returns_OK_response-1768495646-updated\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":false,\"censor_logs\":true,\"events\":false,\"messages\":false}}},{\"id\":\"591eebe4-998f-49f0-b5db-a6b76e3ff392\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-Create_integration_account_returns_Created_response-1768522912\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}}},{\"id\":\"945d4bbe-d24e-4530-a4db-3dc27329e5e8\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-Get_integration_account_returns_OK_response-1768522914\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}}},{\"id\":\"a491e2ce-8537-4015-8552-d76b23f9c2a2\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-List_integration_accounts_returns_OK_response-1768522915\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}}}]}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "903f5d3c-6322-d306-3ec3-ef11186597bc" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_integration_account_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Update_integration_account_returns_OK_response.freeze new file mode 100644 index 00000000000..954730cedd3 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_integration_account_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-01-16T00:21:56.916Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_integration_account_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Update_integration_account_returns_OK_response.json new file mode 100644 index 00000000000..d51934b8c73 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_integration_account_returns_OK_response.json @@ -0,0 +1,62 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"name\":\"Test-Update_integration_account_returns_OK_response-1768522916\",\"secrets\":{\"api_key_token\":\"test_secret_token_value\"},\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}},\"type\":\"Account\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/web-integrations/twilio/accounts", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"4458ffbb-09e3-4b11-8b59-7ac39a766164\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-Update_integration_account_returns_OK_response-1768522916\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":true,\"censor_logs\":true,\"events\":true,\"messages\":true}}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "a6ebe030-cddb-9817-3ba2-5d44f3fb2e02" + }, + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"name\":\"Test-Update_integration_account_returns_OK_response-1768522916-updated\",\"settings\":{\"ccm_enabled\":false,\"events\":false,\"messages\":false}},\"type\":\"Account\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/web-integrations/twilio/accounts/4458ffbb-09e3-4b11-8b59-7ac39a766164", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"4458ffbb-09e3-4b11-8b59-7ac39a766164\",\"type\":\"Account\",\"attributes\":{\"name\":\"Test-Update_integration_account_returns_OK_response-1768522916-updated\",\"settings\":{\"account_sid\":\"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"alerts\":true,\"api_key\":\"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"call_summaries\":true,\"ccm_enabled\":false,\"censor_logs\":true,\"events\":false,\"messages\":false}}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "661977ae-dd27-b514-0f94-3ef4e63af306" + } +] \ No newline at end of file diff --git a/src/test/resources/com/datadog/api/client/v2/api/given.json b/src/test/resources/com/datadog/api/client/v2/api/given.json index 76980d4ce3d..027b09ca181 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/given.json +++ b/src/test/resources/com/datadog/api/client/v2/api/given.json @@ -1443,6 +1443,22 @@ "tag": "Users", "operationId": "CreateUser" }, + { + "parameters": [ + { + "name": "integration_name", + "value": "\"twilio\"" + }, + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"Account\",\n \"attributes\": {\n \"name\": \"{{ unique }}\",\n \"settings\": {\n \"api_key\": \"SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n \"account_sid\": \"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n \"events\": true,\n \"messages\": true,\n \"alerts\": true,\n \"call_summaries\": true,\n \"ccm_enabled\": true,\n \"censor_logs\": true\n },\n \"secrets\": {\n \"api_key_token\": \"test_secret_token_value\"\n }\n }\n }\n}" + } + ], + "step": "there is a valid \"web_integration_account\" in the system", + "key": "web_integration_account", + "tag": "Integration Accounts", + "operationId": "CreateWebIntegrationAccount" + }, { "parameters": [ { diff --git a/src/test/resources/com/datadog/api/client/v2/api/integration_accounts.feature b/src/test/resources/com/datadog/api/client/v2/api/integration_accounts.feature new file mode 100644 index 00000000000..54b4cea828a --- /dev/null +++ b/src/test/resources/com/datadog/api/client/v2/api/integration_accounts.feature @@ -0,0 +1,179 @@ +@endpoint(integration-accounts) @endpoint(integration-accounts-v2) +Feature: Integration Accounts + Configure and manage third-party integrations with Datadog. This API + provides a unified interface for managing integration accounts across + various external services. Each integration has its own unique schema + that defines the required settings and secrets. Before creating or + updating an account, use the schema endpoint to retrieve the specific + requirements, field types, validation rules, and available configuration + options for your integration. **Note**: This API manages integration + account configurations only. It does not support Grace Resources, + Reference Tables, or Custom Queries CRUD operations. For those features, + refer to each integration's dedicated documentation. Supported + Integrations: - + [Twilio](https://docs.datadoghq.com/integrations/twilio/) - + [Snowflake](https://docs.datadoghq.com/integrations/snowflake-web/) - + [Databricks](https://docs.datadoghq.com/integrations/databricks/) + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "IntegrationAccounts" API + + @generated @skip @team:DataDog/web-integrations + Scenario: Create integration account returns "Bad Request: The request body is malformed or the integration name format is invalid." response + Given new "CreateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account", "secrets": {"api_key_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}, "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "alerts": true, "api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "call_summaries": true, "ccm_enabled": true, "censor_logs": true, "events": true, "messages": true}}, "type": "Account"}} + When the request is sent + Then the response status is 400 Bad Request: The request body is malformed or the integration name format is invalid. + + @generated @skip @team:DataDog/web-integrations + Scenario: Create integration account returns "Created: The account was successfully created." response + Given new "CreateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account", "secrets": {"api_key_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}, "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "alerts": true, "api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "call_summaries": true, "ccm_enabled": true, "censor_logs": true, "events": true, "messages": true}}, "type": "Account"}} + When the request is sent + Then the response status is 201 Created: The account was successfully created. + + @generated @skip @team:DataDog/web-integrations + Scenario: Create integration account returns "Not Found: The integration does not exist." response + Given new "CreateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account", "secrets": {"api_key_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}, "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "alerts": true, "api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "call_summaries": true, "ccm_enabled": true, "censor_logs": true, "events": true, "messages": true}}, "type": "Account"}} + When the request is sent + Then the response status is 404 Not Found: The integration does not exist. + + @generated @skip @team:DataDog/web-integrations + Scenario: Create integration account returns "Unprocessable Entity: The account configuration does not match the integration schema." response + Given new "CreateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account", "secrets": {"api_key_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}, "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "alerts": true, "api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "call_summaries": true, "ccm_enabled": true, "censor_logs": true, "events": true, "messages": true}}, "type": "Account"}} + When the request is sent + Then the response status is 422 Unprocessable Entity: The account configuration does not match the integration schema. + + @generated @skip @team:DataDog/web-integrations + Scenario: Delete integration account returns "Bad Request: The integration name or account ID format is invalid." response + Given new "DeleteWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request: The integration name or account ID format is invalid. + + @generated @skip @team:DataDog/web-integrations + Scenario: Delete integration account returns "Not Found: The integration or account does not exist." response + Given new "DeleteWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found: The integration or account does not exist. + + @generated @skip @team:DataDog/web-integrations + Scenario: Delete integration account returns "OK: The account was successfully deleted." response + Given new "DeleteWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK: The account was successfully deleted. + + @generated @skip @team:DataDog/web-integrations + Scenario: Get account schema for an integration returns "Bad Request: The integration name format is invalid." response + Given new "GetWebIntegrationAccountSchema" request + And request contains "integration_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request: The integration name format is invalid. + + @generated @skip @team:DataDog/web-integrations + Scenario: Get account schema for an integration returns "Not Found: The integration does not exist or has no schema available." response + Given new "GetWebIntegrationAccountSchema" request + And request contains "integration_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found: The integration does not exist or has no schema available. + + @generated @skip @team:DataDog/web-integrations + Scenario: Get account schema for an integration returns "OK: The JSON schema for the integration's account configuration." response + Given new "GetWebIntegrationAccountSchema" request + And request contains "integration_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK: The JSON schema for the integration's account configuration. + + @generated @skip @team:DataDog/web-integrations + Scenario: Get integration account returns "Bad Request: The integration name or account ID format is invalid." response + Given new "GetWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request: The integration name or account ID format is invalid. + + @generated @skip @team:DataDog/web-integrations + Scenario: Get integration account returns "Not Found: The integration or account does not exist." response + Given new "GetWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found: The integration or account does not exist. + + @generated @skip @team:DataDog/web-integrations + Scenario: Get integration account returns "OK: The account details for the specified integration." response + Given new "GetWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK: The account details for the specified integration. + + @generated @skip @team:DataDog/web-integrations + Scenario: List integration accounts returns "Bad Request: The integration name format is invalid." response + Given new "ListWebIntegrationAccounts" request + And request contains "integration_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request: The integration name format is invalid. + + @generated @skip @team:DataDog/web-integrations + Scenario: List integration accounts returns "Not Found: The integration does not exist." response + Given new "ListWebIntegrationAccounts" request + And request contains "integration_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found: The integration does not exist. + + @generated @skip @team:DataDog/web-integrations + Scenario: List integration accounts returns "OK: List of all accounts for the specified integration." response + Given new "ListWebIntegrationAccounts" request + And request contains "integration_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK: List of all accounts for the specified integration. + + @generated @skip @team:DataDog/web-integrations + Scenario: Update integration account returns "Bad Request: The request body is malformed or the integration name/account ID format is invalid." response + Given new "UpdateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account (Updated)", "secrets": {"api_key_token": "new_secret_token_value"}, "settings": {"ccm_enabled": true, "events": true, "messages": false}}, "type": "Account"}} + When the request is sent + Then the response status is 400 Bad Request: The request body is malformed or the integration name/account ID format is invalid. + + @generated @skip @team:DataDog/web-integrations + Scenario: Update integration account returns "Not Found: The integration or account does not exist." response + Given new "UpdateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account (Updated)", "secrets": {"api_key_token": "new_secret_token_value"}, "settings": {"ccm_enabled": true, "events": true, "messages": false}}, "type": "Account"}} + When the request is sent + Then the response status is 404 Not Found: The integration or account does not exist. + + @generated @skip @team:DataDog/web-integrations + Scenario: Update integration account returns "OK: The account was successfully updated." response + Given new "UpdateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account (Updated)", "secrets": {"api_key_token": "new_secret_token_value"}, "settings": {"ccm_enabled": true, "events": true, "messages": false}}, "type": "Account"}} + When the request is sent + Then the response status is 200 OK: The account was successfully updated. + + @generated @skip @team:DataDog/web-integrations + Scenario: Update integration account returns "Unprocessable Entity: The account configuration does not match the integration schema." response + Given new "UpdateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account (Updated)", "secrets": {"api_key_token": "new_secret_token_value"}, "settings": {"ccm_enabled": true, "events": true, "messages": false}}, "type": "Account"}} + When the request is sent + Then the response status is 422 Unprocessable Entity: The account configuration does not match the integration schema. diff --git a/src/test/resources/com/datadog/api/client/v2/api/undo.json b/src/test/resources/com/datadog/api/client/v2/api/undo.json index a04c9b283b9..93438d32937 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/undo.json +++ b/src/test/resources/com/datadog/api/client/v2/api/undo.json @@ -6209,6 +6209,53 @@ "type": "safe" } }, + "ListWebIntegrationAccounts": { + "tag": "Integration Accounts", + "undo": { + "type": "safe" + } + }, + "CreateWebIntegrationAccount": { + "tag": "Integration Accounts", + "undo": { + "operationId": "DeleteWebIntegrationAccount", + "parameters": [ + { + "name": "integration_name", + "source": "integration_name" + }, + { + "name": "account_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "GetWebIntegrationAccountSchema": { + "tag": "Integration Accounts", + "undo": { + "type": "safe" + } + }, + "DeleteWebIntegrationAccount": { + "tag": "Integration Accounts", + "undo": { + "type": "idempotent" + } + }, + "GetWebIntegrationAccount": { + "tag": "Integration Accounts", + "undo": { + "type": "safe" + } + }, + "UpdateWebIntegrationAccount": { + "tag": "Integration Accounts", + "undo": { + "type": "idempotent" + } + }, "CreateWorkflow": { "tag": "Workflow Automation", "undo": { diff --git a/src/test/resources/com/datadog/api/client/v2/api/web_integrations.feature b/src/test/resources/com/datadog/api/client/v2/api/web_integrations.feature new file mode 100644 index 00000000000..067af24109a --- /dev/null +++ b/src/test/resources/com/datadog/api/client/v2/api/web_integrations.feature @@ -0,0 +1,258 @@ +@endpoint(web-integrations) @endpoint(web-integrations-v2) +Feature: Web Integrations + Configure and manage third-party web integrations with Datadog. This API + provides a unified interface for managing integration accounts across + various external services. Each integration has its own unique schema + that defines the required settings and secrets. Before creating or + updating an account, use the schema endpoint to retrieve the specific + requirements, field types, validation rules, and available configuration + options for your integration. Supported Integrations: - twilio - + snowflake-web - databricks + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "IntegrationAccounts" API + + @skip @team:DataDog/web-integrations + Scenario: Create integration account returns "Bad Request" response with invalid integration name + Given new "CreateWebIntegrationAccount" request + And request contains "integration_name" parameter with value "invalid-integration-name" + And body with value {"data": {"type": "Account", "attributes": {"name": "Test Account", "settings": {"api_key": "SKtest", "account_sid": "ACtest", "events": true, "messages": true, "alerts": true, "call_summaries": true, "ccm_enabled": true, "censor_logs": true}, "secrets": {"api_key_token": "test_token"}}}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/web-integrations + Scenario: Create integration account returns "Bad Request: The request body is malformed or the integration name format is invalid." response + Given new "CreateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account", "secrets": {"api_key_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}, "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "alerts": true, "api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "call_summaries": true, "ccm_enabled": true, "censor_logs": true, "events": true, "messages": true}}, "type": "Account"}} + When the request is sent + Then the response status is 400 Bad Request: The request body is malformed or the integration name format is invalid. + + @skip @team:DataDog/web-integrations + Scenario: Create integration account returns "Created" response + Given new "CreateWebIntegrationAccount" request + And request contains "integration_name" parameter with value "twilio" + And body with value {"data": {"type": "Account", "attributes": {"name": "{{ unique }}", "settings": {"api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "events": true, "messages": true, "alerts": true, "call_summaries": true, "ccm_enabled": true, "censor_logs": true}, "secrets": {"api_key_token": "test_secret_token"}}}} + When the request is sent + Then the response status is 201 Created + And the response "data.type" is equal to "Account" + And the response "data.attributes.name" is equal to "{{ unique }}" + And the response "data.attributes.settings.api_key" is equal to "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + And the response "data.attributes.settings.account_sid" is equal to "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + + @generated @skip @team:DataDog/web-integrations + Scenario: Create integration account returns "Created: The account was successfully created." response + Given new "CreateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account", "secrets": {"api_key_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}, "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "alerts": true, "api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "call_summaries": true, "ccm_enabled": true, "censor_logs": true, "events": true, "messages": true}}, "type": "Account"}} + When the request is sent + Then the response status is 201 Created: The account was successfully created. + + @generated @skip @team:DataDog/web-integrations + Scenario: Create integration account returns "Not Found: The integration does not exist." response + Given new "CreateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account", "secrets": {"api_key_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}, "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "alerts": true, "api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "call_summaries": true, "ccm_enabled": true, "censor_logs": true, "events": true, "messages": true}}, "type": "Account"}} + When the request is sent + Then the response status is 404 Not Found: The integration does not exist. + + @skip @team:DataDog/web-integrations + Scenario: Create integration account returns "Unprocessable Entity" response with missing required field + Given new "CreateWebIntegrationAccount" request + And request contains "integration_name" parameter with value "twilio" + And body with value {"data": {"type": "Account", "attributes": {"name": "Test Account", "settings": {"api_key": "SKtest"}, "secrets": {"api_key_token": "test_token"}}}} + When the request is sent + Then the response status is 422 Unprocessable Entity + + @generated @skip @team:DataDog/web-integrations + Scenario: Create integration account returns "Unprocessable Entity: The account configuration does not match the integration schema." response + Given new "CreateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account", "secrets": {"api_key_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}, "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "alerts": true, "api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "call_summaries": true, "ccm_enabled": true, "censor_logs": true, "events": true, "messages": true}}, "type": "Account"}} + When the request is sent + Then the response status is 422 Unprocessable Entity: The account configuration does not match the integration schema. + + @generated @skip @team:DataDog/web-integrations + Scenario: Delete integration account returns "Bad Request: The integration name or account ID format is invalid." response + Given new "DeleteWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request: The integration name or account ID format is invalid. + + @generated @skip @team:DataDog/web-integrations + Scenario: Delete integration account returns "Not Found: The integration or account does not exist." response + Given new "DeleteWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found: The integration or account does not exist. + + @skip @team:DataDog/web-integrations + Scenario: Delete integration account returns "OK" response + Given there is a valid "web_integration_account" in the system + And new "DeleteWebIntegrationAccount" request + And request contains "integration_name" parameter with value "twilio" + And request contains "account_id" parameter from "web_integration_account.data.id" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/web-integrations + Scenario: Delete integration account returns "OK: The account was successfully deleted." response + Given new "DeleteWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK: The account was successfully deleted. + + @generated @skip @team:DataDog/web-integrations + Scenario: Get account schema for an integration returns "Bad Request: The integration name format is invalid." response + Given new "GetWebIntegrationAccountSchema" request + And request contains "integration_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request: The integration name format is invalid. + + @generated @skip @team:DataDog/web-integrations + Scenario: Get account schema for an integration returns "Not Found: The integration does not exist or has no schema available." response + Given new "GetWebIntegrationAccountSchema" request + And request contains "integration_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found: The integration does not exist or has no schema available. + + @replay-only @team:DataDog/web-integrations + Scenario: Get account schema for an integration returns "OK" response + Given new "GetWebIntegrationAccountSchema" request + And request contains "integration_name" parameter with value "twilio" + When the request is sent + Then the response status is 200 OK + And the response "type" is equal to "object" + And the response "properties.settings.properties.api_key" has field "type" + And the response "properties.secrets.properties.api_key_token" has field "type" + + @generated @skip @team:DataDog/web-integrations + Scenario: Get account schema for an integration returns "OK: The JSON schema for the integration's account configuration." response + Given new "GetWebIntegrationAccountSchema" request + And request contains "integration_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK: The JSON schema for the integration's account configuration. + + @generated @skip @team:DataDog/web-integrations + Scenario: Get integration account returns "Bad Request: The integration name or account ID format is invalid." response + Given new "GetWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request: The integration name or account ID format is invalid. + + @generated @skip @team:DataDog/web-integrations + Scenario: Get integration account returns "Not Found: The integration or account does not exist." response + Given new "GetWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found: The integration or account does not exist. + + @skip @team:DataDog/web-integrations + Scenario: Get integration account returns "OK" response + Given there is a valid "web_integration_account" in the system + And new "GetWebIntegrationAccount" request + And request contains "integration_name" parameter with value "twilio" + And request contains "account_id" parameter from "web_integration_account.data.id" + When the request is sent + Then the response status is 200 OK + And the response "data.type" is equal to "Account" + And the response "data.attributes.name" is equal to "{{ unique }}" + And the response "data.attributes.settings" has field "api_key" + And the response "data.attributes.settings" has field "account_sid" + + @generated @skip @team:DataDog/web-integrations + Scenario: Get integration account returns "OK: The account details for the specified integration." response + Given new "GetWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK: The account details for the specified integration. + + @generated @skip @team:DataDog/web-integrations + Scenario: List integration accounts returns "Bad Request: The integration name format is invalid." response + Given new "ListWebIntegrationAccounts" request + And request contains "integration_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request: The integration name format is invalid. + + @generated @skip @team:DataDog/web-integrations + Scenario: List integration accounts returns "Not Found: The integration does not exist." response + Given new "ListWebIntegrationAccounts" request + And request contains "integration_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found: The integration does not exist. + + @skip @team:DataDog/web-integrations + Scenario: List integration accounts returns "OK" response + Given there is a valid "web_integration_account" in the system + And new "ListWebIntegrationAccounts" request + And request contains "integration_name" parameter with value "twilio" + When the request is sent + Then the response status is 200 OK + And the response "data[0].type" is equal to "Account" + And the response "data[0].attributes" has field "name" + And the response "data[0].attributes" has field "settings" + + @generated @skip @team:DataDog/web-integrations + Scenario: List integration accounts returns "OK: List of all accounts for the specified integration." response + Given new "ListWebIntegrationAccounts" request + And request contains "integration_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK: List of all accounts for the specified integration. + + @generated @skip @team:DataDog/web-integrations + Scenario: Update integration account returns "Bad Request: The request body is malformed or the integration name/account ID format is invalid." response + Given new "UpdateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account (Updated)", "secrets": {"api_key_token": "new_secret_token_value"}, "settings": {"ccm_enabled": true, "events": true, "messages": false}}, "type": "Account"}} + When the request is sent + Then the response status is 400 Bad Request: The request body is malformed or the integration name/account ID format is invalid. + + @generated @skip @team:DataDog/web-integrations + Scenario: Update integration account returns "Not Found: The integration or account does not exist." response + Given new "UpdateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account (Updated)", "secrets": {"api_key_token": "new_secret_token_value"}, "settings": {"ccm_enabled": true, "events": true, "messages": false}}, "type": "Account"}} + When the request is sent + Then the response status is 404 Not Found: The integration or account does not exist. + + @skip @team:DataDog/web-integrations + Scenario: Update integration account returns "OK" response + Given there is a valid "web_integration_account" in the system + And new "UpdateWebIntegrationAccount" request + And request contains "integration_name" parameter with value "twilio" + And request contains "account_id" parameter from "web_integration_account.data.id" + And body with value {"data": {"type": "Account", "attributes": {"name": "{{ unique }}-updated", "settings": {"events": false, "messages": false, "ccm_enabled": false}}}} + When the request is sent + Then the response status is 200 OK + And the response "data.type" is equal to "Account" + And the response "data.attributes.name" is equal to "{{ unique }}-updated" + And the response "data.attributes.settings.events" is false + And the response "data.attributes.settings.messages" is false + + @generated @skip @team:DataDog/web-integrations + Scenario: Update integration account returns "OK: The account was successfully updated." response + Given new "UpdateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account (Updated)", "secrets": {"api_key_token": "new_secret_token_value"}, "settings": {"ccm_enabled": true, "events": true, "messages": false}}, "type": "Account"}} + When the request is sent + Then the response status is 200 OK: The account was successfully updated. + + @generated @skip @team:DataDog/web-integrations + Scenario: Update integration account returns "Unprocessable Entity: The account configuration does not match the integration schema." response + Given new "UpdateWebIntegrationAccount" request + And request contains "integration_name" parameter from "REPLACE.ME" + And request contains "account_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "My Production Account (Updated)", "secrets": {"api_key_token": "new_secret_token_value"}, "settings": {"ccm_enabled": true, "events": true, "messages": false}}, "type": "Account"}} + When the request is sent + Then the response status is 422 Unprocessable Entity: The account configuration does not match the integration schema.