diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml
index 65d674fb23d..6424cf71884 100644
--- a/.generator/schemas/v2/openapi.yaml
+++ b/.generator/schemas/v2/openapi.yaml
@@ -1968,6 +1968,64 @@ components:
type: string
requestBodies: {}
responses:
+ AmsIntegrationAccountSchemaBadRequestResponse:
+ 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."
+ AmsIntegrationAccountSchemaForbiddenResponse:
+ 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."
+ AmsIntegrationAccountSchemaNotFoundResponse:
+ 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."
+ AmsIntegrationAccountSchemaTooManyRequestsResponse:
+ 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.
BadRequestResponse:
content:
"application/json":
@@ -2100,6 +2158,324 @@ components:
schema:
$ref: "#/components/schemas/JSONAPIErrorResponse"
description: The server cannot process the request because it contains invalid data.
+ 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.
@@ -6394,6 +6770,370 @@ components:
x-enum-varnames:
- FEATURE_GATE
- CANARY
+ AmsIntegrationAccountAttributes:
+ 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
+ AmsIntegrationAccountCreateRequest:
+ description: Payload for creating a web integration account.
+ properties:
+ data:
+ $ref: "#/components/schemas/AmsIntegrationAccountCreateRequestData"
+ required:
+ - data
+ type: object
+ AmsIntegrationAccountCreateRequestAttributes:
+ 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/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
+ AmsIntegrationAccountCreateRequestData:
+ description: Data object for creating a web integration account.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/AmsIntegrationAccountCreateRequestAttributes"
+ type:
+ $ref: "#/components/schemas/AmsIntegrationAccountType"
+ required:
+ - type
+ - attributes
+ type: object
+ AmsIntegrationAccountResponse:
+ description: Response containing a single web integration account.
+ properties:
+ data:
+ $ref: "#/components/schemas/AmsIntegrationAccountResponseData"
+ integration_name:
+ description: The name of the integration.
+ example: "twilio"
+ type: string
+ type: object
+ AmsIntegrationAccountResponseData:
+ description: Data object for a web integration account response.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/AmsIntegrationAccountAttributes"
+ id:
+ description: The unique identifier for the account.
+ example: "abc123def456"
+ type: string
+ type:
+ $ref: "#/components/schemas/AmsIntegrationAccountType"
+ required:
+ - id
+ - type
+ - attributes
+ type: object
+ AmsIntegrationAccountSchemaResponse:
+ 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:
+ properties:
+ secrets:
+ $ref: "#/components/schemas/AmsIntegrationAccountSchemaResponseExampleSecrets"
+ settings:
+ $ref: "#/components/schemas/AmsIntegrationAccountSchemaResponseExampleSettings"
+ required:
+ - settings
+ - secrets
+ type: "object"
+ properties:
+ additionalProperties:
+ description: Whether additional properties are allowed at the root level (typically false).
+ example: false
+ type: boolean
+ properties:
+ $ref: "#/components/schemas/AmsIntegrationAccountSchemaResponseProperties"
+ 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:
+ - type
+ - properties
+ - required
+ type: object
+ AmsIntegrationAccountSchemaResponseExampleSecrets:
+ additionalProperties: false
+ description: Example secrets object for a Twilio integration account schema response.
+ 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"
+ AmsIntegrationAccountSchemaResponseExampleSettings:
+ additionalProperties: false
+ description: Example settings object for a Twilio integration account schema response.
+ 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"
+ AmsIntegrationAccountSchemaResponseProperties:
+ 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/AmsIntegrationAccountSchemaResponseSecretsObject"
+ settings:
+ $ref: "#/components/schemas/AmsIntegrationAccountSchemaResponseSettingsObject"
+ required:
+ - settings
+ - secrets
+ type: object
+ AmsIntegrationAccountSchemaResponseSecretsObject:
+ 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/AmsIntegrationAccountSchemaResponseSettingsField"
+ 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
+ AmsIntegrationAccountSchemaResponseSettingsField:
+ 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
+ AmsIntegrationAccountSchemaResponseSettingsObject:
+ 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/AmsIntegrationAccountSchemaResponseSettingsField"
+ 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
+ AmsIntegrationAccountType:
+ default: Account
+ description: The JSON:API type for web integration accounts.
+ enum:
+ - Account
+ example: Account
+ type: string
+ x-enum-varnames:
+ - ACCOUNT
+ AmsIntegrationAccountUpdateRequest:
+ description: Payload for updating a web integration account.
+ properties:
+ data:
+ $ref: "#/components/schemas/AmsIntegrationAccountUpdateRequestData"
+ required:
+ - data
+ type: object
+ AmsIntegrationAccountUpdateRequestAttributes:
+ 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
+ AmsIntegrationAccountUpdateRequestData:
+ description: Data object for updating a web integration account.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/AmsIntegrationAccountUpdateRequestAttributes"
+ type:
+ $ref: "#/components/schemas/AmsIntegrationAccountType"
+ required:
+ - type
+ type: object
+ AmsIntegrationAccountsResponse:
+ description: Response containing a list of web integration accounts.
+ properties:
+ data:
+ items:
+ $ref: "#/components/schemas/AmsIntegrationAccountResponseData"
+ type: array
+ integration_name:
+ description: The name of the integration.
+ example: "twilio"
+ type: string
+ type: object
AnalysisEdit:
description: A single edit operation within a fix suggestion for a rule violation.
properties:
@@ -77612,6 +78352,48 @@ components:
page:
$ref: "#/components/schemas/Pagination"
type: object
+ ResponseSchema:
+ additionalProperties: false
+ description: Example JSON Schema document for an integration account configuration.
+ properties:
+ secrets:
+ $ref: "#/components/schemas/ResponseSchema139714313396896"
+ settings:
+ $ref: "#/components/schemas/ResponseSchema139714313396096"
+ required:
+ - settings
+ - secrets
+ type: "object"
+ ResponseSchema139714313396096:
+ additionalProperties: false
+ description: Example settings schema for an integration account configuration.
+ properties:
+ account_sid:
+ description: Twilio Account SID that uniquely identifies the Twilio account.
+ example: L
+ minLength: 1
+ type: "string"
+ api_key:
+ description: Twilio API Key SID for authentication.
+ example: L
+ minLength: 1
+ type: "string"
+ required:
+ - api_key
+ - account_sid
+ type: "object"
+ ResponseSchema139714313396896:
+ additionalProperties: false
+ description: Example secrets schema for an integration account configuration.
+ properties:
+ api_key_token:
+ description: The Twilio API Key Secret corresponding to the API Key SID.
+ example: L
+ minLength: 1
+ type: "string"
+ required:
+ - api_key_token
+ type: "object"
RestrictionPolicy:
description: Restriction policy object.
properties:
@@ -143102,6 +143884,388 @@ paths:
operator: OR
permissions:
- manage_integrations
+ /api/v2/integrations/{integration_name}/interfaces/{interface_id}/accounts:
+ get:
+ description: |-
+ Retrieve all configured accounts for a specific integration within your organization.
+
+ Rate limit: 50 requests per user every 20 seconds.
+ operationId: ListAmsIntegrationAccounts
+ 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 interface.
+ example: "twilio.messaging"
+ in: path
+ name: interface_id
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ - attributes:
+ name: "My Production Account"
+ settings:
+ account_sid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ api_key: "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ id: "abc123def456"
+ type: "Account"
+ schema:
+ $ref: "#/components/schemas/AmsIntegrationAccountsResponse"
+ 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: CreateAmsIntegrationAccount
+ 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 interface.
+ example: "twilio.messaging"
+ in: path
+ name: interface_id
+ required: true
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ 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"
+ schema:
+ $ref: "#/components/schemas/AmsIntegrationAccountCreateRequest"
+ required: true
+ responses:
+ "201":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ name: "My Production Account"
+ settings:
+ account_sid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ api_key: "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ id: "abc123def456"
+ type: "Account"
+ schema:
+ $ref: "#/components/schemas/AmsIntegrationAccountResponse"
+ 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/integrations/{integration_name}/interfaces/{interface_id}/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: GetAmsIntegrationAccountSchema
+ 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 interface.
+ example: "twilio.messaging"
+ in: path
+ name: interface_id
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ $ref: "#/components/schemas/ResponseSchema"
+ schema:
+ $ref: "#/components/schemas/AmsIntegrationAccountSchemaResponse"
+ description: "OK: The JSON schema for the integration's account configuration."
+ "400":
+ $ref: "#/components/responses/AmsIntegrationAccountSchemaBadRequestResponse"
+ "403":
+ $ref: "#/components/responses/AmsIntegrationAccountSchemaForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/AmsIntegrationAccountSchemaNotFoundResponse"
+ "429":
+ $ref: "#/components/responses/AmsIntegrationAccountSchemaTooManyRequestsResponse"
+ summary: Get account schema for an integration
+ tags:
+ - Integration Accounts
+ x-permission:
+ operator: OR
+ permissions:
+ - integrations_read
+ /api/v2/integrations/{integration_name}/interfaces/{interface_id}/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: DeleteAmsIntegrationAccount
+ 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 interface.
+ example: "twilio.messaging"
+ in: path
+ name: interface_id
+ 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: GetAmsIntegrationAccount
+ 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 interface.
+ example: "twilio.messaging"
+ in: path
+ name: interface_id
+ 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:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ name: "My Production Account"
+ settings:
+ account_sid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ api_key: "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ id: "abc123def456"
+ type: "Account"
+ schema:
+ $ref: "#/components/schemas/AmsIntegrationAccountResponse"
+ 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: UpdateAmsIntegrationAccount
+ 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 interface.
+ example: "twilio.messaging"
+ in: path
+ name: interface_id
+ 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:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ name: "My Production Account (Updated)"
+ settings:
+ ccm_enabled: true
+ events: true
+ messages: false
+ type: "Account"
+ schema:
+ $ref: "#/components/schemas/AmsIntegrationAccountUpdateRequest"
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ name: "My Production Account (Updated)"
+ settings:
+ account_sid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ api_key: "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ id: "abc123def456"
+ type: "Account"
+ schema:
+ $ref: "#/components/schemas/AmsIntegrationAccountResponse"
+ 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/ip_allowlist:
get:
description: Returns the IP allowlist and its enabled or disabled state.
@@ -193632,6 +194796,24 @@ tags:
name: IP Allowlist
- description: Manage incident response, as well as associated attachments, metadata, 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
+ 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/)
+ 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/CreateAmsIntegrationAccount.java b/examples/v2/integration-accounts/CreateAmsIntegrationAccount.java
new file mode 100644
index 00000000000..5f03fef1a14
--- /dev/null
+++ b/examples/v2/integration-accounts/CreateAmsIntegrationAccount.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.AmsIntegrationAccountCreateRequest;
+import com.datadog.api.client.v2.model.AmsIntegrationAccountCreateRequestAttributes;
+import com.datadog.api.client.v2.model.AmsIntegrationAccountCreateRequestData;
+import com.datadog.api.client.v2.model.AmsIntegrationAccountResponse;
+import com.datadog.api.client.v2.model.AmsIntegrationAccountType;
+import java.util.Map;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient);
+
+ AmsIntegrationAccountCreateRequest body =
+ new AmsIntegrationAccountCreateRequest()
+ .data(
+ new AmsIntegrationAccountCreateRequestData()
+ .attributes(
+ new AmsIntegrationAccountCreateRequestAttributes()
+ .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(AmsIntegrationAccountType.ACCOUNT));
+
+ try {
+ AmsIntegrationAccountResponse result =
+ apiInstance.createAmsIntegrationAccount("twilio", "twilio.messaging", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling IntegrationAccountsApi#createAmsIntegrationAccount");
+ 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/DeleteAmsIntegrationAccount.java b/examples/v2/integration-accounts/DeleteAmsIntegrationAccount.java
new file mode 100644
index 00000000000..f59664e2fc1
--- /dev/null
+++ b/examples/v2/integration-accounts/DeleteAmsIntegrationAccount.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.deleteAmsIntegrationAccount("twilio", "twilio.messaging", "abc123def456");
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling IntegrationAccountsApi#deleteAmsIntegrationAccount");
+ 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/GetAmsIntegrationAccount.java b/examples/v2/integration-accounts/GetAmsIntegrationAccount.java
new file mode 100644
index 00000000000..e4d66b9501c
--- /dev/null
+++ b/examples/v2/integration-accounts/GetAmsIntegrationAccount.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.AmsIntegrationAccountResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient);
+
+ try {
+ AmsIntegrationAccountResponse result =
+ apiInstance.getAmsIntegrationAccount("twilio", "twilio.messaging", "abc123def456");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling IntegrationAccountsApi#getAmsIntegrationAccount");
+ 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/GetAmsIntegrationAccountSchema.java b/examples/v2/integration-accounts/GetAmsIntegrationAccountSchema.java
new file mode 100644
index 00000000000..b68bb2693c4
--- /dev/null
+++ b/examples/v2/integration-accounts/GetAmsIntegrationAccountSchema.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.AmsIntegrationAccountSchemaResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient);
+
+ try {
+ AmsIntegrationAccountSchemaResponse result =
+ apiInstance.getAmsIntegrationAccountSchema("twilio", "twilio.messaging");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling IntegrationAccountsApi#getAmsIntegrationAccountSchema");
+ 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/ListAmsIntegrationAccounts.java b/examples/v2/integration-accounts/ListAmsIntegrationAccounts.java
new file mode 100644
index 00000000000..f9b882b2c52
--- /dev/null
+++ b/examples/v2/integration-accounts/ListAmsIntegrationAccounts.java
@@ -0,0 +1,27 @@
+// 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.AmsIntegrationAccountsResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient);
+
+ try {
+ AmsIntegrationAccountsResponse result =
+ apiInstance.listAmsIntegrationAccounts("twilio", "twilio.messaging");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling IntegrationAccountsApi#listAmsIntegrationAccounts");
+ 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/UpdateAmsIntegrationAccount.java b/examples/v2/integration-accounts/UpdateAmsIntegrationAccount.java
new file mode 100644
index 00000000000..78d5be0bf3c
--- /dev/null
+++ b/examples/v2/integration-accounts/UpdateAmsIntegrationAccount.java
@@ -0,0 +1,48 @@
+// 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.AmsIntegrationAccountResponse;
+import com.datadog.api.client.v2.model.AmsIntegrationAccountType;
+import com.datadog.api.client.v2.model.AmsIntegrationAccountUpdateRequest;
+import com.datadog.api.client.v2.model.AmsIntegrationAccountUpdateRequestAttributes;
+import com.datadog.api.client.v2.model.AmsIntegrationAccountUpdateRequestData;
+import java.util.Map;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ IntegrationAccountsApi apiInstance = new IntegrationAccountsApi(defaultClient);
+
+ AmsIntegrationAccountUpdateRequest body =
+ new AmsIntegrationAccountUpdateRequest()
+ .data(
+ new AmsIntegrationAccountUpdateRequestData()
+ .attributes(
+ new AmsIntegrationAccountUpdateRequestAttributes()
+ .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(AmsIntegrationAccountType.ACCOUNT));
+
+ try {
+ AmsIntegrationAccountResponse result =
+ apiInstance.updateAmsIntegrationAccount(
+ "twilio", "twilio.messaging", "abc123def456", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling IntegrationAccountsApi#updateAmsIntegrationAccount");
+ 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..680a8584a9e
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/api/IntegrationAccountsApi.java
@@ -0,0 +1,1254 @@
+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.AmsIntegrationAccountCreateRequest;
+import com.datadog.api.client.v2.model.AmsIntegrationAccountResponse;
+import com.datadog.api.client.v2.model.AmsIntegrationAccountSchemaResponse;
+import com.datadog.api.client.v2.model.AmsIntegrationAccountUpdateRequest;
+import com.datadog.api.client.v2.model.AmsIntegrationAccountsResponse;
+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 #createAmsIntegrationAccountWithHttpInfo}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @param body (required)
+ * @return AmsIntegrationAccountResponse
+ * @throws ApiException if fails to make API call
+ */
+ public AmsIntegrationAccountResponse createAmsIntegrationAccount(
+ String integrationName, String interfaceId, AmsIntegrationAccountCreateRequest body)
+ throws ApiException {
+ return createAmsIntegrationAccountWithHttpInfo(integrationName, interfaceId, body).getData();
+ }
+
+ /**
+ * Create integration account.
+ *
+ *
See {@link #createAmsIntegrationAccountWithHttpInfoAsync}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @param body (required)
+ * @return CompletableFuture<AmsIntegrationAccountResponse>
+ */
+ public CompletableFuture createAmsIntegrationAccountAsync(
+ String integrationName, String interfaceId, AmsIntegrationAccountCreateRequest body) {
+ return createAmsIntegrationAccountWithHttpInfoAsync(integrationName, interfaceId, 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 interfaceId The unique identifier of the interface. (required)
+ * @param body (required)
+ * @return ApiResponse<AmsIntegrationAccountResponse>
+ * @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 createAmsIntegrationAccountWithHttpInfo(
+ String integrationName, String interfaceId, AmsIntegrationAccountCreateRequest 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"
+ + " createAmsIntegrationAccount");
+ }
+
+ // verify the required parameter 'interfaceId' is set
+ if (interfaceId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'interfaceId' when calling createAmsIntegrationAccount");
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ throw new ApiException(
+ 400, "Missing the required parameter 'body' when calling createAmsIntegrationAccount");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integrations/{integration_name}/interfaces/{interface_id}/accounts"
+ .replaceAll(
+ "\\{" + "integration_name" + "\\}",
+ apiClient.escapeString(integrationName.toString()))
+ .replaceAll(
+ "\\{" + "interface_id" + "\\}", apiClient.escapeString(interfaceId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.IntegrationAccountsApi.createAmsIntegrationAccount",
+ 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 #createAmsIntegrationAccountWithHttpInfo}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @param body (required)
+ * @return CompletableFuture<ApiResponse<AmsIntegrationAccountResponse>>
+ */
+ public CompletableFuture>
+ createAmsIntegrationAccountWithHttpInfoAsync(
+ String integrationName, String interfaceId, AmsIntegrationAccountCreateRequest 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"
+ + " createAmsIntegrationAccount"));
+ return result;
+ }
+
+ // verify the required parameter 'interfaceId' is set
+ if (interfaceId == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'interfaceId' when calling"
+ + " createAmsIntegrationAccount"));
+ 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 createAmsIntegrationAccount"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integrations/{integration_name}/interfaces/{interface_id}/accounts"
+ .replaceAll(
+ "\\{" + "integration_name" + "\\}",
+ apiClient.escapeString(integrationName.toString()))
+ .replaceAll(
+ "\\{" + "interface_id" + "\\}", apiClient.escapeString(interfaceId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.IntegrationAccountsApi.createAmsIntegrationAccount",
+ 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 #deleteAmsIntegrationAccountWithHttpInfo}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @param accountId The unique identifier of the account. (required)
+ * @throws ApiException if fails to make API call
+ */
+ public void deleteAmsIntegrationAccount(
+ String integrationName, String interfaceId, String accountId) throws ApiException {
+ deleteAmsIntegrationAccountWithHttpInfo(integrationName, interfaceId, accountId);
+ }
+
+ /**
+ * Delete integration account.
+ *
+ *
See {@link #deleteAmsIntegrationAccountWithHttpInfoAsync}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @param accountId The unique identifier of the account. (required)
+ * @return CompletableFuture
+ */
+ public CompletableFuture deleteAmsIntegrationAccountAsync(
+ String integrationName, String interfaceId, String accountId) {
+ return deleteAmsIntegrationAccountWithHttpInfoAsync(integrationName, interfaceId, 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 interfaceId The unique identifier of the interface. (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 deleteAmsIntegrationAccountWithHttpInfo(
+ String integrationName, String interfaceId, 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"
+ + " deleteAmsIntegrationAccount");
+ }
+
+ // verify the required parameter 'interfaceId' is set
+ if (interfaceId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'interfaceId' when calling deleteAmsIntegrationAccount");
+ }
+
+ // verify the required parameter 'accountId' is set
+ if (accountId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'accountId' when calling deleteAmsIntegrationAccount");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integrations/{integration_name}/interfaces/{interface_id}/accounts/{account_id}"
+ .replaceAll(
+ "\\{" + "integration_name" + "\\}",
+ apiClient.escapeString(integrationName.toString()))
+ .replaceAll(
+ "\\{" + "interface_id" + "\\}", apiClient.escapeString(interfaceId.toString()))
+ .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.IntegrationAccountsApi.deleteAmsIntegrationAccount",
+ 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 #deleteAmsIntegrationAccountWithHttpInfo}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @param accountId The unique identifier of the account. (required)
+ * @return CompletableFuture<ApiResponse<Void>>
+ */
+ public CompletableFuture> deleteAmsIntegrationAccountWithHttpInfoAsync(
+ String integrationName, String interfaceId, 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"
+ + " deleteAmsIntegrationAccount"));
+ return result;
+ }
+
+ // verify the required parameter 'interfaceId' is set
+ if (interfaceId == null) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'interfaceId' when calling"
+ + " deleteAmsIntegrationAccount"));
+ 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"
+ + " deleteAmsIntegrationAccount"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integrations/{integration_name}/interfaces/{interface_id}/accounts/{account_id}"
+ .replaceAll(
+ "\\{" + "integration_name" + "\\}",
+ apiClient.escapeString(integrationName.toString()))
+ .replaceAll(
+ "\\{" + "interface_id" + "\\}", apiClient.escapeString(interfaceId.toString()))
+ .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.IntegrationAccountsApi.deleteAmsIntegrationAccount",
+ 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 #getAmsIntegrationAccountWithHttpInfo}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @param accountId The unique identifier of the account. (required)
+ * @return AmsIntegrationAccountResponse
+ * @throws ApiException if fails to make API call
+ */
+ public AmsIntegrationAccountResponse getAmsIntegrationAccount(
+ String integrationName, String interfaceId, String accountId) throws ApiException {
+ return getAmsIntegrationAccountWithHttpInfo(integrationName, interfaceId, accountId).getData();
+ }
+
+ /**
+ * Get integration account.
+ *
+ *
See {@link #getAmsIntegrationAccountWithHttpInfoAsync}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @param accountId The unique identifier of the account. (required)
+ * @return CompletableFuture<AmsIntegrationAccountResponse>
+ */
+ public CompletableFuture getAmsIntegrationAccountAsync(
+ String integrationName, String interfaceId, String accountId) {
+ return getAmsIntegrationAccountWithHttpInfoAsync(integrationName, interfaceId, 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 interfaceId The unique identifier of the interface. (required)
+ * @param accountId The unique identifier of the account. (required)
+ * @return ApiResponse<AmsIntegrationAccountResponse>
+ * @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 getAmsIntegrationAccountWithHttpInfo(
+ String integrationName, String interfaceId, 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 getAmsIntegrationAccount");
+ }
+
+ // verify the required parameter 'interfaceId' is set
+ if (interfaceId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'interfaceId' when calling getAmsIntegrationAccount");
+ }
+
+ // verify the required parameter 'accountId' is set
+ if (accountId == null) {
+ throw new ApiException(
+ 400, "Missing the required parameter 'accountId' when calling getAmsIntegrationAccount");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integrations/{integration_name}/interfaces/{interface_id}/accounts/{account_id}"
+ .replaceAll(
+ "\\{" + "integration_name" + "\\}",
+ apiClient.escapeString(integrationName.toString()))
+ .replaceAll(
+ "\\{" + "interface_id" + "\\}", apiClient.escapeString(interfaceId.toString()))
+ .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.IntegrationAccountsApi.getAmsIntegrationAccount",
+ 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 #getAmsIntegrationAccountWithHttpInfo}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @param accountId The unique identifier of the account. (required)
+ * @return CompletableFuture<ApiResponse<AmsIntegrationAccountResponse>>
+ */
+ public CompletableFuture>
+ getAmsIntegrationAccountWithHttpInfoAsync(
+ String integrationName, String interfaceId, 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"
+ + " getAmsIntegrationAccount"));
+ return result;
+ }
+
+ // verify the required parameter 'interfaceId' is set
+ if (interfaceId == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'interfaceId' when calling"
+ + " getAmsIntegrationAccount"));
+ 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 getAmsIntegrationAccount"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integrations/{integration_name}/interfaces/{interface_id}/accounts/{account_id}"
+ .replaceAll(
+ "\\{" + "integration_name" + "\\}",
+ apiClient.escapeString(integrationName.toString()))
+ .replaceAll(
+ "\\{" + "interface_id" + "\\}", apiClient.escapeString(interfaceId.toString()))
+ .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.IntegrationAccountsApi.getAmsIntegrationAccount",
+ 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 #getAmsIntegrationAccountSchemaWithHttpInfo}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @return AmsIntegrationAccountSchemaResponse
+ * @throws ApiException if fails to make API call
+ */
+ public AmsIntegrationAccountSchemaResponse getAmsIntegrationAccountSchema(
+ String integrationName, String interfaceId) throws ApiException {
+ return getAmsIntegrationAccountSchemaWithHttpInfo(integrationName, interfaceId).getData();
+ }
+
+ /**
+ * Get account schema for an integration.
+ *
+ *
See {@link #getAmsIntegrationAccountSchemaWithHttpInfoAsync}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @return CompletableFuture<AmsIntegrationAccountSchemaResponse>
+ */
+ public CompletableFuture getAmsIntegrationAccountSchemaAsync(
+ String integrationName, String interfaceId) {
+ return getAmsIntegrationAccountSchemaWithHttpInfoAsync(integrationName, interfaceId)
+ .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)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @return ApiResponse<AmsIntegrationAccountSchemaResponse>
+ * @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
+ getAmsIntegrationAccountSchemaWithHttpInfo(String integrationName, String interfaceId)
+ 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"
+ + " getAmsIntegrationAccountSchema");
+ }
+
+ // verify the required parameter 'interfaceId' is set
+ if (interfaceId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'interfaceId' when calling"
+ + " getAmsIntegrationAccountSchema");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integrations/{integration_name}/interfaces/{interface_id}/accounts/schema"
+ .replaceAll(
+ "\\{" + "integration_name" + "\\}",
+ apiClient.escapeString(integrationName.toString()))
+ .replaceAll(
+ "\\{" + "interface_id" + "\\}", apiClient.escapeString(interfaceId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.IntegrationAccountsApi.getAmsIntegrationAccountSchema",
+ 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 #getAmsIntegrationAccountSchemaWithHttpInfo}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @return CompletableFuture<ApiResponse<AmsIntegrationAccountSchemaResponse>>
+ */
+ public CompletableFuture>
+ getAmsIntegrationAccountSchemaWithHttpInfoAsync(String integrationName, String interfaceId) {
+ 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"
+ + " getAmsIntegrationAccountSchema"));
+ return result;
+ }
+
+ // verify the required parameter 'interfaceId' is set
+ if (interfaceId == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'interfaceId' when calling"
+ + " getAmsIntegrationAccountSchema"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integrations/{integration_name}/interfaces/{interface_id}/accounts/schema"
+ .replaceAll(
+ "\\{" + "integration_name" + "\\}",
+ apiClient.escapeString(integrationName.toString()))
+ .replaceAll(
+ "\\{" + "interface_id" + "\\}", apiClient.escapeString(interfaceId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.IntegrationAccountsApi.getAmsIntegrationAccountSchema",
+ 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 #listAmsIntegrationAccountsWithHttpInfo}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @return AmsIntegrationAccountsResponse
+ * @throws ApiException if fails to make API call
+ */
+ public AmsIntegrationAccountsResponse listAmsIntegrationAccounts(
+ String integrationName, String interfaceId) throws ApiException {
+ return listAmsIntegrationAccountsWithHttpInfo(integrationName, interfaceId).getData();
+ }
+
+ /**
+ * List integration accounts.
+ *
+ *
See {@link #listAmsIntegrationAccountsWithHttpInfoAsync}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @return CompletableFuture<AmsIntegrationAccountsResponse>
+ */
+ public CompletableFuture listAmsIntegrationAccountsAsync(
+ String integrationName, String interfaceId) {
+ return listAmsIntegrationAccountsWithHttpInfoAsync(integrationName, interfaceId)
+ .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)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @return ApiResponse<AmsIntegrationAccountsResponse>
+ * @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 listAmsIntegrationAccountsWithHttpInfo(
+ String integrationName, String interfaceId) 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"
+ + " listAmsIntegrationAccounts");
+ }
+
+ // verify the required parameter 'interfaceId' is set
+ if (interfaceId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'interfaceId' when calling listAmsIntegrationAccounts");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integrations/{integration_name}/interfaces/{interface_id}/accounts"
+ .replaceAll(
+ "\\{" + "integration_name" + "\\}",
+ apiClient.escapeString(integrationName.toString()))
+ .replaceAll(
+ "\\{" + "interface_id" + "\\}", apiClient.escapeString(interfaceId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.IntegrationAccountsApi.listAmsIntegrationAccounts",
+ 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 #listAmsIntegrationAccountsWithHttpInfo}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @return CompletableFuture<ApiResponse<AmsIntegrationAccountsResponse>>
+ */
+ public CompletableFuture>
+ listAmsIntegrationAccountsWithHttpInfoAsync(String integrationName, String interfaceId) {
+ 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"
+ + " listAmsIntegrationAccounts"));
+ return result;
+ }
+
+ // verify the required parameter 'interfaceId' is set
+ if (interfaceId == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'interfaceId' when calling"
+ + " listAmsIntegrationAccounts"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integrations/{integration_name}/interfaces/{interface_id}/accounts"
+ .replaceAll(
+ "\\{" + "integration_name" + "\\}",
+ apiClient.escapeString(integrationName.toString()))
+ .replaceAll(
+ "\\{" + "interface_id" + "\\}", apiClient.escapeString(interfaceId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.IntegrationAccountsApi.listAmsIntegrationAccounts",
+ 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 #updateAmsIntegrationAccountWithHttpInfo}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @param accountId The unique identifier of the account. (required)
+ * @param body (required)
+ * @return AmsIntegrationAccountResponse
+ * @throws ApiException if fails to make API call
+ */
+ public AmsIntegrationAccountResponse updateAmsIntegrationAccount(
+ String integrationName,
+ String interfaceId,
+ String accountId,
+ AmsIntegrationAccountUpdateRequest body)
+ throws ApiException {
+ return updateAmsIntegrationAccountWithHttpInfo(integrationName, interfaceId, accountId, body)
+ .getData();
+ }
+
+ /**
+ * Update integration account.
+ *
+ *
See {@link #updateAmsIntegrationAccountWithHttpInfoAsync}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @param accountId The unique identifier of the account. (required)
+ * @param body (required)
+ * @return CompletableFuture<AmsIntegrationAccountResponse>
+ */
+ public CompletableFuture updateAmsIntegrationAccountAsync(
+ String integrationName,
+ String interfaceId,
+ String accountId,
+ AmsIntegrationAccountUpdateRequest body) {
+ return updateAmsIntegrationAccountWithHttpInfoAsync(
+ integrationName, interfaceId, 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 interfaceId The unique identifier of the interface. (required)
+ * @param accountId The unique identifier of the account. (required)
+ * @param body (required)
+ * @return ApiResponse<AmsIntegrationAccountResponse>
+ * @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 updateAmsIntegrationAccountWithHttpInfo(
+ String integrationName,
+ String interfaceId,
+ String accountId,
+ AmsIntegrationAccountUpdateRequest 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"
+ + " updateAmsIntegrationAccount");
+ }
+
+ // verify the required parameter 'interfaceId' is set
+ if (interfaceId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'interfaceId' when calling updateAmsIntegrationAccount");
+ }
+
+ // verify the required parameter 'accountId' is set
+ if (accountId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'accountId' when calling updateAmsIntegrationAccount");
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ throw new ApiException(
+ 400, "Missing the required parameter 'body' when calling updateAmsIntegrationAccount");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integrations/{integration_name}/interfaces/{interface_id}/accounts/{account_id}"
+ .replaceAll(
+ "\\{" + "integration_name" + "\\}",
+ apiClient.escapeString(integrationName.toString()))
+ .replaceAll(
+ "\\{" + "interface_id" + "\\}", apiClient.escapeString(interfaceId.toString()))
+ .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.IntegrationAccountsApi.updateAmsIntegrationAccount",
+ 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 #updateAmsIntegrationAccountWithHttpInfo}.
+ *
+ * @param integrationName The name of the integration. (required)
+ * @param interfaceId The unique identifier of the interface. (required)
+ * @param accountId The unique identifier of the account. (required)
+ * @param body (required)
+ * @return CompletableFuture<ApiResponse<AmsIntegrationAccountResponse>>
+ */
+ public CompletableFuture>
+ updateAmsIntegrationAccountWithHttpInfoAsync(
+ String integrationName,
+ String interfaceId,
+ String accountId,
+ AmsIntegrationAccountUpdateRequest 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"
+ + " updateAmsIntegrationAccount"));
+ return result;
+ }
+
+ // verify the required parameter 'interfaceId' is set
+ if (interfaceId == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'interfaceId' when calling"
+ + " updateAmsIntegrationAccount"));
+ 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"
+ + " updateAmsIntegrationAccount"));
+ 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 updateAmsIntegrationAccount"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integrations/{integration_name}/interfaces/{interface_id}/accounts/{account_id}"
+ .replaceAll(
+ "\\{" + "integration_name" + "\\}",
+ apiClient.escapeString(integrationName.toString()))
+ .replaceAll(
+ "\\{" + "interface_id" + "\\}", apiClient.escapeString(interfaceId.toString()))
+ .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.IntegrationAccountsApi.updateAmsIntegrationAccount",
+ 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/AmsIntegrationAccountAttributes.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountAttributes.java
new file mode 100644
index 00000000000..f19499a5e54
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountAttributes.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({
+ AmsIntegrationAccountAttributes.JSON_PROPERTY_NAME,
+ AmsIntegrationAccountAttributes.JSON_PROPERTY_SETTINGS
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountAttributes {
+ @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 AmsIntegrationAccountAttributes() {}
+
+ @JsonCreator
+ public AmsIntegrationAccountAttributes(
+ @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 AmsIntegrationAccountAttributes 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 AmsIntegrationAccountAttributes settings(Map settings) {
+ this.settings = settings;
+ return this;
+ }
+
+ public AmsIntegrationAccountAttributes 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 AmsIntegrationAccountAttributes
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountAttributes 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 AmsIntegrationAccountAttributes object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountAttributes amsIntegrationAccountAttributes =
+ (AmsIntegrationAccountAttributes) o;
+ return Objects.equals(this.name, amsIntegrationAccountAttributes.name)
+ && Objects.equals(this.settings, amsIntegrationAccountAttributes.settings)
+ && Objects.equals(
+ this.additionalProperties, amsIntegrationAccountAttributes.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, settings, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountAttributes {\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/AmsIntegrationAccountCreateRequest.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountCreateRequest.java
new file mode 100644
index 00000000000..edcd8005939
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountCreateRequest.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({AmsIntegrationAccountCreateRequest.JSON_PROPERTY_DATA})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountCreateRequest {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_DATA = "data";
+ private AmsIntegrationAccountCreateRequestData data;
+
+ public AmsIntegrationAccountCreateRequest() {}
+
+ @JsonCreator
+ public AmsIntegrationAccountCreateRequest(
+ @JsonProperty(required = true, value = JSON_PROPERTY_DATA)
+ AmsIntegrationAccountCreateRequestData data) {
+ this.data = data;
+ this.unparsed |= data.unparsed;
+ }
+
+ public AmsIntegrationAccountCreateRequest data(AmsIntegrationAccountCreateRequestData 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 AmsIntegrationAccountCreateRequestData getData() {
+ return data;
+ }
+
+ public void setData(AmsIntegrationAccountCreateRequestData 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 AmsIntegrationAccountCreateRequest
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountCreateRequest 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 AmsIntegrationAccountCreateRequest object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountCreateRequest amsIntegrationAccountCreateRequest =
+ (AmsIntegrationAccountCreateRequest) o;
+ return Objects.equals(this.data, amsIntegrationAccountCreateRequest.data)
+ && Objects.equals(
+ this.additionalProperties, amsIntegrationAccountCreateRequest.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(data, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountCreateRequest {\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/AmsIntegrationAccountCreateRequestAttributes.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountCreateRequestAttributes.java
new file mode 100644
index 00000000000..066806633bd
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountCreateRequestAttributes.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({
+ AmsIntegrationAccountCreateRequestAttributes.JSON_PROPERTY_NAME,
+ AmsIntegrationAccountCreateRequestAttributes.JSON_PROPERTY_SECRETS,
+ AmsIntegrationAccountCreateRequestAttributes.JSON_PROPERTY_SETTINGS
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountCreateRequestAttributes {
+ @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 AmsIntegrationAccountCreateRequestAttributes() {}
+
+ @JsonCreator
+ public AmsIntegrationAccountCreateRequestAttributes(
+ @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 AmsIntegrationAccountCreateRequestAttributes 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 AmsIntegrationAccountCreateRequestAttributes secrets(Map secrets) {
+ this.secrets = secrets;
+ return this;
+ }
+
+ public AmsIntegrationAccountCreateRequestAttributes 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 AmsIntegrationAccountCreateRequestAttributes settings(Map settings) {
+ this.settings = settings;
+ return this;
+ }
+
+ public AmsIntegrationAccountCreateRequestAttributes 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/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 AmsIntegrationAccountCreateRequestAttributes
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountCreateRequestAttributes 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 AmsIntegrationAccountCreateRequestAttributes object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountCreateRequestAttributes amsIntegrationAccountCreateRequestAttributes =
+ (AmsIntegrationAccountCreateRequestAttributes) o;
+ return Objects.equals(this.name, amsIntegrationAccountCreateRequestAttributes.name)
+ && Objects.equals(this.secrets, amsIntegrationAccountCreateRequestAttributes.secrets)
+ && Objects.equals(this.settings, amsIntegrationAccountCreateRequestAttributes.settings)
+ && Objects.equals(
+ this.additionalProperties,
+ amsIntegrationAccountCreateRequestAttributes.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, secrets, settings, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountCreateRequestAttributes {\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/AmsIntegrationAccountCreateRequestData.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountCreateRequestData.java
new file mode 100644
index 00000000000..a5987787a59
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountCreateRequestData.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({
+ AmsIntegrationAccountCreateRequestData.JSON_PROPERTY_ATTRIBUTES,
+ AmsIntegrationAccountCreateRequestData.JSON_PROPERTY_TYPE
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountCreateRequestData {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_ATTRIBUTES = "attributes";
+ private AmsIntegrationAccountCreateRequestAttributes attributes;
+
+ public static final String JSON_PROPERTY_TYPE = "type";
+ private AmsIntegrationAccountType type = AmsIntegrationAccountType.ACCOUNT;
+
+ public AmsIntegrationAccountCreateRequestData() {}
+
+ @JsonCreator
+ public AmsIntegrationAccountCreateRequestData(
+ @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES)
+ AmsIntegrationAccountCreateRequestAttributes attributes,
+ @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) AmsIntegrationAccountType type) {
+ this.attributes = attributes;
+ this.unparsed |= attributes.unparsed;
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ }
+
+ public AmsIntegrationAccountCreateRequestData attributes(
+ AmsIntegrationAccountCreateRequestAttributes 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 AmsIntegrationAccountCreateRequestAttributes getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(AmsIntegrationAccountCreateRequestAttributes attributes) {
+ this.attributes = attributes;
+ }
+
+ public AmsIntegrationAccountCreateRequestData type(AmsIntegrationAccountType 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 AmsIntegrationAccountType getType() {
+ return type;
+ }
+
+ public void setType(AmsIntegrationAccountType 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 AmsIntegrationAccountCreateRequestData
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountCreateRequestData 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 AmsIntegrationAccountCreateRequestData object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountCreateRequestData amsIntegrationAccountCreateRequestData =
+ (AmsIntegrationAccountCreateRequestData) o;
+ return Objects.equals(this.attributes, amsIntegrationAccountCreateRequestData.attributes)
+ && Objects.equals(this.type, amsIntegrationAccountCreateRequestData.type)
+ && Objects.equals(
+ this.additionalProperties, amsIntegrationAccountCreateRequestData.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(attributes, type, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountCreateRequestData {\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/AmsIntegrationAccountResponse.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountResponse.java
new file mode 100644
index 00000000000..2fe5d9bb811
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountResponse.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({
+ AmsIntegrationAccountResponse.JSON_PROPERTY_DATA,
+ AmsIntegrationAccountResponse.JSON_PROPERTY_INTEGRATION_NAME
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountResponse {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_DATA = "data";
+ private AmsIntegrationAccountResponseData data;
+
+ public static final String JSON_PROPERTY_INTEGRATION_NAME = "integration_name";
+ private String integrationName;
+
+ public AmsIntegrationAccountResponse data(AmsIntegrationAccountResponseData 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 AmsIntegrationAccountResponseData getData() {
+ return data;
+ }
+
+ public void setData(AmsIntegrationAccountResponseData data) {
+ this.data = data;
+ }
+
+ public AmsIntegrationAccountResponse 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 AmsIntegrationAccountResponse
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountResponse 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 AmsIntegrationAccountResponse object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountResponse amsIntegrationAccountResponse = (AmsIntegrationAccountResponse) o;
+ return Objects.equals(this.data, amsIntegrationAccountResponse.data)
+ && Objects.equals(this.integrationName, amsIntegrationAccountResponse.integrationName)
+ && Objects.equals(
+ this.additionalProperties, amsIntegrationAccountResponse.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(data, integrationName, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountResponse {\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/AmsIntegrationAccountResponseData.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountResponseData.java
new file mode 100644
index 00000000000..c1375bccc20
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountResponseData.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({
+ AmsIntegrationAccountResponseData.JSON_PROPERTY_ATTRIBUTES,
+ AmsIntegrationAccountResponseData.JSON_PROPERTY_ID,
+ AmsIntegrationAccountResponseData.JSON_PROPERTY_TYPE
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountResponseData {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_ATTRIBUTES = "attributes";
+ private AmsIntegrationAccountAttributes attributes;
+
+ public static final String JSON_PROPERTY_ID = "id";
+ private String id;
+
+ public static final String JSON_PROPERTY_TYPE = "type";
+ private AmsIntegrationAccountType type = AmsIntegrationAccountType.ACCOUNT;
+
+ public AmsIntegrationAccountResponseData() {}
+
+ @JsonCreator
+ public AmsIntegrationAccountResponseData(
+ @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES)
+ AmsIntegrationAccountAttributes attributes,
+ @JsonProperty(required = true, value = JSON_PROPERTY_ID) String id,
+ @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) AmsIntegrationAccountType type) {
+ this.attributes = attributes;
+ this.unparsed |= attributes.unparsed;
+ this.id = id;
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ }
+
+ public AmsIntegrationAccountResponseData attributes(AmsIntegrationAccountAttributes 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 AmsIntegrationAccountAttributes getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(AmsIntegrationAccountAttributes attributes) {
+ this.attributes = attributes;
+ }
+
+ public AmsIntegrationAccountResponseData 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 AmsIntegrationAccountResponseData type(AmsIntegrationAccountType 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 AmsIntegrationAccountType getType() {
+ return type;
+ }
+
+ public void setType(AmsIntegrationAccountType 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 AmsIntegrationAccountResponseData
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountResponseData 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 AmsIntegrationAccountResponseData object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountResponseData amsIntegrationAccountResponseData =
+ (AmsIntegrationAccountResponseData) o;
+ return Objects.equals(this.attributes, amsIntegrationAccountResponseData.attributes)
+ && Objects.equals(this.id, amsIntegrationAccountResponseData.id)
+ && Objects.equals(this.type, amsIntegrationAccountResponseData.type)
+ && Objects.equals(
+ this.additionalProperties, amsIntegrationAccountResponseData.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(attributes, id, type, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountResponseData {\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/AmsIntegrationAccountSchemaResponse.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponse.java
new file mode 100644
index 00000000000..75ef5c5d642
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponse.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.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({
+ AmsIntegrationAccountSchemaResponse.JSON_PROPERTY_ADDITIONAL_PROPERTIES,
+ AmsIntegrationAccountSchemaResponse.JSON_PROPERTY_PROPERTIES,
+ AmsIntegrationAccountSchemaResponse.JSON_PROPERTY_REQUIRED,
+ AmsIntegrationAccountSchemaResponse.JSON_PROPERTY_TYPE
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountSchemaResponse {
+ @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 AmsIntegrationAccountSchemaResponseProperties 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 AmsIntegrationAccountSchemaResponse() {}
+
+ @JsonCreator
+ public AmsIntegrationAccountSchemaResponse(
+ @JsonProperty(required = true, value = JSON_PROPERTY_PROPERTIES)
+ AmsIntegrationAccountSchemaResponseProperties properties,
+ @JsonProperty(required = true, value = JSON_PROPERTY_REQUIRED) List required,
+ @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) String type) {
+ this.properties = properties;
+ this.unparsed |= properties.unparsed;
+ this.required = required;
+ this.type = type;
+ }
+
+ public AmsIntegrationAccountSchemaResponse 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 AmsIntegrationAccountSchemaResponse properties(
+ AmsIntegrationAccountSchemaResponseProperties 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 AmsIntegrationAccountSchemaResponseProperties getProperties() {
+ return properties;
+ }
+
+ public void setProperties(AmsIntegrationAccountSchemaResponseProperties properties) {
+ this.properties = properties;
+ }
+
+ public AmsIntegrationAccountSchemaResponse required(List required) {
+ this.required = required;
+ return this;
+ }
+
+ public AmsIntegrationAccountSchemaResponse 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 AmsIntegrationAccountSchemaResponse 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 AmsIntegrationAccountSchemaResponse
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountSchemaResponse 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 AmsIntegrationAccountSchemaResponse object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountSchemaResponse amsIntegrationAccountSchemaResponse =
+ (AmsIntegrationAccountSchemaResponse) o;
+ return Objects.equals(
+ this.additionalProperties, amsIntegrationAccountSchemaResponse.additionalProperties)
+ && Objects.equals(this.properties, amsIntegrationAccountSchemaResponse.properties)
+ && Objects.equals(this.required, amsIntegrationAccountSchemaResponse.required)
+ && Objects.equals(this.type, amsIntegrationAccountSchemaResponse.type)
+ && Objects.equals(
+ this.additionalProperties, amsIntegrationAccountSchemaResponse.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(additionalProperties, properties, required, type, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountSchemaResponse {\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/AmsIntegrationAccountSchemaResponseProperties.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponseProperties.java
new file mode 100644
index 00000000000..2112bef37f6
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponseProperties.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({
+ AmsIntegrationAccountSchemaResponseProperties.JSON_PROPERTY_SECRETS,
+ AmsIntegrationAccountSchemaResponseProperties.JSON_PROPERTY_SETTINGS
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountSchemaResponseProperties {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_SECRETS = "secrets";
+ private AmsIntegrationAccountSchemaResponseSecretsObject secrets;
+
+ public static final String JSON_PROPERTY_SETTINGS = "settings";
+ private AmsIntegrationAccountSchemaResponseSettingsObject settings;
+
+ public AmsIntegrationAccountSchemaResponseProperties() {}
+
+ @JsonCreator
+ public AmsIntegrationAccountSchemaResponseProperties(
+ @JsonProperty(required = true, value = JSON_PROPERTY_SECRETS)
+ AmsIntegrationAccountSchemaResponseSecretsObject secrets,
+ @JsonProperty(required = true, value = JSON_PROPERTY_SETTINGS)
+ AmsIntegrationAccountSchemaResponseSettingsObject settings) {
+ this.secrets = secrets;
+ this.unparsed |= secrets.unparsed;
+ this.settings = settings;
+ this.unparsed |= settings.unparsed;
+ }
+
+ public AmsIntegrationAccountSchemaResponseProperties secrets(
+ AmsIntegrationAccountSchemaResponseSecretsObject 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 AmsIntegrationAccountSchemaResponseSecretsObject getSecrets() {
+ return secrets;
+ }
+
+ public void setSecrets(AmsIntegrationAccountSchemaResponseSecretsObject secrets) {
+ this.secrets = secrets;
+ }
+
+ public AmsIntegrationAccountSchemaResponseProperties settings(
+ AmsIntegrationAccountSchemaResponseSettingsObject 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 AmsIntegrationAccountSchemaResponseSettingsObject getSettings() {
+ return settings;
+ }
+
+ public void setSettings(AmsIntegrationAccountSchemaResponseSettingsObject 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 AmsIntegrationAccountSchemaResponseProperties
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountSchemaResponseProperties 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 AmsIntegrationAccountSchemaResponseProperties object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountSchemaResponseProperties amsIntegrationAccountSchemaResponseProperties =
+ (AmsIntegrationAccountSchemaResponseProperties) o;
+ return Objects.equals(this.secrets, amsIntegrationAccountSchemaResponseProperties.secrets)
+ && Objects.equals(this.settings, amsIntegrationAccountSchemaResponseProperties.settings)
+ && Objects.equals(
+ this.additionalProperties,
+ amsIntegrationAccountSchemaResponseProperties.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(secrets, settings, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountSchemaResponseProperties {\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/AmsIntegrationAccountSchemaResponseSecretsObject.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponseSecretsObject.java
new file mode 100644
index 00000000000..3a7102ae543
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponseSecretsObject.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({
+ AmsIntegrationAccountSchemaResponseSecretsObject.JSON_PROPERTY_ADDITIONAL_PROPERTIES,
+ AmsIntegrationAccountSchemaResponseSecretsObject.JSON_PROPERTY_PROPERTIES,
+ AmsIntegrationAccountSchemaResponseSecretsObject.JSON_PROPERTY_REQUIRED,
+ AmsIntegrationAccountSchemaResponseSecretsObject.JSON_PROPERTY_TYPE
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountSchemaResponseSecretsObject {
+ @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 AmsIntegrationAccountSchemaResponseSecretsObject 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 AmsIntegrationAccountSchemaResponseSecretsObject properties(
+ Map properties) {
+ this.properties = properties;
+ return this;
+ }
+
+ public AmsIntegrationAccountSchemaResponseSecretsObject putPropertiesItem(
+ String key, AmsIntegrationAccountSchemaResponseSettingsField 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 AmsIntegrationAccountSchemaResponseSecretsObject required(List required) {
+ this.required = required;
+ return this;
+ }
+
+ public AmsIntegrationAccountSchemaResponseSecretsObject 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 AmsIntegrationAccountSchemaResponseSecretsObject 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 AmsIntegrationAccountSchemaResponseSecretsObject
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountSchemaResponseSecretsObject 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 AmsIntegrationAccountSchemaResponseSecretsObject object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountSchemaResponseSecretsObject
+ amsIntegrationAccountSchemaResponseSecretsObject =
+ (AmsIntegrationAccountSchemaResponseSecretsObject) o;
+ return Objects.equals(
+ this.additionalProperties,
+ amsIntegrationAccountSchemaResponseSecretsObject.additionalProperties)
+ && Objects.equals(
+ this.properties, amsIntegrationAccountSchemaResponseSecretsObject.properties)
+ && Objects.equals(this.required, amsIntegrationAccountSchemaResponseSecretsObject.required)
+ && Objects.equals(this.type, amsIntegrationAccountSchemaResponseSecretsObject.type)
+ && Objects.equals(
+ this.additionalProperties,
+ amsIntegrationAccountSchemaResponseSecretsObject.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(additionalProperties, properties, required, type, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountSchemaResponseSecretsObject {\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/AmsIntegrationAccountSchemaResponseSettingsField.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponseSettingsField.java
new file mode 100644
index 00000000000..e20aeca1f0d
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponseSettingsField.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({
+ AmsIntegrationAccountSchemaResponseSettingsField.JSON_PROPERTY_ADDITIONAL_PROPERTIES,
+ AmsIntegrationAccountSchemaResponseSettingsField.JSON_PROPERTY_DEFAULT,
+ AmsIntegrationAccountSchemaResponseSettingsField.JSON_PROPERTY_DESCRIPTION,
+ AmsIntegrationAccountSchemaResponseSettingsField.JSON_PROPERTY_ITEMS,
+ AmsIntegrationAccountSchemaResponseSettingsField.JSON_PROPERTY_MIN_LENGTH,
+ AmsIntegrationAccountSchemaResponseSettingsField.JSON_PROPERTY_TYPE
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountSchemaResponseSettingsField {
+ @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 AmsIntegrationAccountSchemaResponseSettingsField 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 AmsIntegrationAccountSchemaResponseSettingsField _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 AmsIntegrationAccountSchemaResponseSettingsField 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 AmsIntegrationAccountSchemaResponseSettingsField 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 AmsIntegrationAccountSchemaResponseSettingsField 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 AmsIntegrationAccountSchemaResponseSettingsField 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 AmsIntegrationAccountSchemaResponseSettingsField
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountSchemaResponseSettingsField 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 AmsIntegrationAccountSchemaResponseSettingsField object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountSchemaResponseSettingsField
+ amsIntegrationAccountSchemaResponseSettingsField =
+ (AmsIntegrationAccountSchemaResponseSettingsField) o;
+ return Objects.equals(
+ this.additionalProperties,
+ amsIntegrationAccountSchemaResponseSettingsField.additionalProperties)
+ && Objects.equals(this._default, amsIntegrationAccountSchemaResponseSettingsField._default)
+ && Objects.equals(
+ this.description, amsIntegrationAccountSchemaResponseSettingsField.description)
+ && Objects.equals(this.items, amsIntegrationAccountSchemaResponseSettingsField.items)
+ && Objects.equals(
+ this.minLength, amsIntegrationAccountSchemaResponseSettingsField.minLength)
+ && Objects.equals(this.type, amsIntegrationAccountSchemaResponseSettingsField.type)
+ && Objects.equals(
+ this.additionalProperties,
+ amsIntegrationAccountSchemaResponseSettingsField.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 AmsIntegrationAccountSchemaResponseSettingsField {\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/AmsIntegrationAccountSchemaResponseSettingsObject.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponseSettingsObject.java
new file mode 100644
index 00000000000..392d072ecf7
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponseSettingsObject.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({
+ AmsIntegrationAccountSchemaResponseSettingsObject.JSON_PROPERTY_ADDITIONAL_PROPERTIES,
+ AmsIntegrationAccountSchemaResponseSettingsObject.JSON_PROPERTY_PROPERTIES,
+ AmsIntegrationAccountSchemaResponseSettingsObject.JSON_PROPERTY_REQUIRED,
+ AmsIntegrationAccountSchemaResponseSettingsObject.JSON_PROPERTY_TYPE
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountSchemaResponseSettingsObject {
+ @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 AmsIntegrationAccountSchemaResponseSettingsObject 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 AmsIntegrationAccountSchemaResponseSettingsObject properties(
+ Map properties) {
+ this.properties = properties;
+ return this;
+ }
+
+ public AmsIntegrationAccountSchemaResponseSettingsObject putPropertiesItem(
+ String key, AmsIntegrationAccountSchemaResponseSettingsField 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 AmsIntegrationAccountSchemaResponseSettingsObject required(List required) {
+ this.required = required;
+ return this;
+ }
+
+ public AmsIntegrationAccountSchemaResponseSettingsObject 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 AmsIntegrationAccountSchemaResponseSettingsObject 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 AmsIntegrationAccountSchemaResponseSettingsObject
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountSchemaResponseSettingsObject 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 AmsIntegrationAccountSchemaResponseSettingsObject object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountSchemaResponseSettingsObject
+ amsIntegrationAccountSchemaResponseSettingsObject =
+ (AmsIntegrationAccountSchemaResponseSettingsObject) o;
+ return Objects.equals(
+ this.additionalProperties,
+ amsIntegrationAccountSchemaResponseSettingsObject.additionalProperties)
+ && Objects.equals(
+ this.properties, amsIntegrationAccountSchemaResponseSettingsObject.properties)
+ && Objects.equals(this.required, amsIntegrationAccountSchemaResponseSettingsObject.required)
+ && Objects.equals(this.type, amsIntegrationAccountSchemaResponseSettingsObject.type)
+ && Objects.equals(
+ this.additionalProperties,
+ amsIntegrationAccountSchemaResponseSettingsObject.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(additionalProperties, properties, required, type, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountSchemaResponseSettingsObject {\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/AmsIntegrationAccountType.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountType.java
new file mode 100644
index 00000000000..a62ee4cebd9
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountType.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 = AmsIntegrationAccountType.AmsIntegrationAccountTypeSerializer.class)
+public class AmsIntegrationAccountType extends ModelEnum {
+
+ private static final Set allowedValues = new HashSet(Arrays.asList("Account"));
+
+ public static final AmsIntegrationAccountType ACCOUNT = new AmsIntegrationAccountType("Account");
+
+ AmsIntegrationAccountType(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class AmsIntegrationAccountTypeSerializer
+ extends StdSerializer {
+ public AmsIntegrationAccountTypeSerializer(Class t) {
+ super(t);
+ }
+
+ public AmsIntegrationAccountTypeSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ AmsIntegrationAccountType value, JsonGenerator jgen, SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static AmsIntegrationAccountType fromValue(String value) {
+ return new AmsIntegrationAccountType(value);
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountUpdateRequest.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountUpdateRequest.java
new file mode 100644
index 00000000000..515384be651
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountUpdateRequest.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({AmsIntegrationAccountUpdateRequest.JSON_PROPERTY_DATA})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountUpdateRequest {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_DATA = "data";
+ private AmsIntegrationAccountUpdateRequestData data;
+
+ public AmsIntegrationAccountUpdateRequest() {}
+
+ @JsonCreator
+ public AmsIntegrationAccountUpdateRequest(
+ @JsonProperty(required = true, value = JSON_PROPERTY_DATA)
+ AmsIntegrationAccountUpdateRequestData data) {
+ this.data = data;
+ this.unparsed |= data.unparsed;
+ }
+
+ public AmsIntegrationAccountUpdateRequest data(AmsIntegrationAccountUpdateRequestData 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 AmsIntegrationAccountUpdateRequestData getData() {
+ return data;
+ }
+
+ public void setData(AmsIntegrationAccountUpdateRequestData 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 AmsIntegrationAccountUpdateRequest
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountUpdateRequest 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 AmsIntegrationAccountUpdateRequest object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountUpdateRequest amsIntegrationAccountUpdateRequest =
+ (AmsIntegrationAccountUpdateRequest) o;
+ return Objects.equals(this.data, amsIntegrationAccountUpdateRequest.data)
+ && Objects.equals(
+ this.additionalProperties, amsIntegrationAccountUpdateRequest.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(data, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountUpdateRequest {\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/AmsIntegrationAccountUpdateRequestAttributes.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountUpdateRequestAttributes.java
new file mode 100644
index 00000000000..b41070ddc40
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountUpdateRequestAttributes.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({
+ AmsIntegrationAccountUpdateRequestAttributes.JSON_PROPERTY_NAME,
+ AmsIntegrationAccountUpdateRequestAttributes.JSON_PROPERTY_SECRETS,
+ AmsIntegrationAccountUpdateRequestAttributes.JSON_PROPERTY_SETTINGS
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountUpdateRequestAttributes {
+ @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 AmsIntegrationAccountUpdateRequestAttributes 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 AmsIntegrationAccountUpdateRequestAttributes secrets(Map secrets) {
+ this.secrets = secrets;
+ return this;
+ }
+
+ public AmsIntegrationAccountUpdateRequestAttributes 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 AmsIntegrationAccountUpdateRequestAttributes settings(Map settings) {
+ this.settings = settings;
+ return this;
+ }
+
+ public AmsIntegrationAccountUpdateRequestAttributes 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 AmsIntegrationAccountUpdateRequestAttributes
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountUpdateRequestAttributes 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 AmsIntegrationAccountUpdateRequestAttributes object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountUpdateRequestAttributes amsIntegrationAccountUpdateRequestAttributes =
+ (AmsIntegrationAccountUpdateRequestAttributes) o;
+ return Objects.equals(this.name, amsIntegrationAccountUpdateRequestAttributes.name)
+ && Objects.equals(this.secrets, amsIntegrationAccountUpdateRequestAttributes.secrets)
+ && Objects.equals(this.settings, amsIntegrationAccountUpdateRequestAttributes.settings)
+ && Objects.equals(
+ this.additionalProperties,
+ amsIntegrationAccountUpdateRequestAttributes.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, secrets, settings, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountUpdateRequestAttributes {\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/AmsIntegrationAccountUpdateRequestData.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountUpdateRequestData.java
new file mode 100644
index 00000000000..21137aa6da3
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountUpdateRequestData.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({
+ AmsIntegrationAccountUpdateRequestData.JSON_PROPERTY_ATTRIBUTES,
+ AmsIntegrationAccountUpdateRequestData.JSON_PROPERTY_TYPE
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountUpdateRequestData {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_ATTRIBUTES = "attributes";
+ private AmsIntegrationAccountUpdateRequestAttributes attributes;
+
+ public static final String JSON_PROPERTY_TYPE = "type";
+ private AmsIntegrationAccountType type = AmsIntegrationAccountType.ACCOUNT;
+
+ public AmsIntegrationAccountUpdateRequestData() {}
+
+ @JsonCreator
+ public AmsIntegrationAccountUpdateRequestData(
+ @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) AmsIntegrationAccountType type) {
+ this.type = type;
+ this.unparsed |= !type.isValid();
+ }
+
+ public AmsIntegrationAccountUpdateRequestData attributes(
+ AmsIntegrationAccountUpdateRequestAttributes 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 AmsIntegrationAccountUpdateRequestAttributes getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(AmsIntegrationAccountUpdateRequestAttributes attributes) {
+ this.attributes = attributes;
+ }
+
+ public AmsIntegrationAccountUpdateRequestData type(AmsIntegrationAccountType 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 AmsIntegrationAccountType getType() {
+ return type;
+ }
+
+ public void setType(AmsIntegrationAccountType 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 AmsIntegrationAccountUpdateRequestData
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountUpdateRequestData 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 AmsIntegrationAccountUpdateRequestData object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountUpdateRequestData amsIntegrationAccountUpdateRequestData =
+ (AmsIntegrationAccountUpdateRequestData) o;
+ return Objects.equals(this.attributes, amsIntegrationAccountUpdateRequestData.attributes)
+ && Objects.equals(this.type, amsIntegrationAccountUpdateRequestData.type)
+ && Objects.equals(
+ this.additionalProperties, amsIntegrationAccountUpdateRequestData.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(attributes, type, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountUpdateRequestData {\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/AmsIntegrationAccountsResponse.java b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountsResponse.java
new file mode 100644
index 00000000000..41e5da4767d
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountsResponse.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({
+ AmsIntegrationAccountsResponse.JSON_PROPERTY_DATA,
+ AmsIntegrationAccountsResponse.JSON_PROPERTY_INTEGRATION_NAME
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class AmsIntegrationAccountsResponse {
+ @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 AmsIntegrationAccountsResponse data(List data) {
+ this.data = data;
+ for (AmsIntegrationAccountResponseData item : data) {
+ this.unparsed |= item.unparsed;
+ }
+ return this;
+ }
+
+ public AmsIntegrationAccountsResponse addDataItem(AmsIntegrationAccountResponseData 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 AmsIntegrationAccountsResponse 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 AmsIntegrationAccountsResponse
+ */
+ @JsonAnySetter
+ public AmsIntegrationAccountsResponse 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 AmsIntegrationAccountsResponse object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AmsIntegrationAccountsResponse amsIntegrationAccountsResponse =
+ (AmsIntegrationAccountsResponse) o;
+ return Objects.equals(this.data, amsIntegrationAccountsResponse.data)
+ && Objects.equals(this.integrationName, amsIntegrationAccountsResponse.integrationName)
+ && Objects.equals(
+ this.additionalProperties, amsIntegrationAccountsResponse.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(data, integrationName, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AmsIntegrationAccountsResponse {\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/com/datadog/api/client/v2/api/given.json b/src/test/resources/com/datadog/api/client/v2/api/given.json
index 0f9de6d48a2..dab2215ce31 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
@@ -834,6 +834,26 @@
"tag": "Okta Integration",
"operationId": "CreateOktaAccount"
},
+ {
+ "parameters": [
+ {
+ "name": "integration_name",
+ "value": "\"twilio\""
+ },
+ {
+ "name": "interface_id",
+ "value": "\"twilio.messaging\""
+ },
+ {
+ "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": "CreateAmsIntegrationAccount"
+ },
{
"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..c0d96602bda
--- /dev/null
+++ b/src/test/resources/com/datadog/api/client/v2/api/integration_accounts.feature
@@ -0,0 +1,199 @@
+@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/saas-integrations
+ Scenario: Create integration account returns "Bad Request: The request body is malformed or the integration name format is invalid." response
+ Given new "CreateAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Create integration account returns "Created: The account was successfully created." response
+ Given new "CreateAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Create integration account returns "Not Found: The integration does not exist." response
+ Given new "CreateAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Create integration account returns "Unprocessable Entity: The account configuration does not match the integration schema." response
+ Given new "CreateAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Delete integration account returns "Bad Request: The integration name or account ID format is invalid." response
+ Given new "DeleteAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Delete integration account returns "Not Found: The integration or account does not exist." response
+ Given new "DeleteAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Delete integration account returns "OK: The account was successfully deleted." response
+ Given new "DeleteAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Get account schema for an integration returns "Bad Request: The integration name format is invalid." response
+ Given new "GetAmsIntegrationAccountSchema" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Get account schema for an integration returns "Not Found: The integration does not exist or has no schema available." response
+ Given new "GetAmsIntegrationAccountSchema" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Get account schema for an integration returns "OK: The JSON schema for the integration's account configuration." response
+ Given new "GetAmsIntegrationAccountSchema" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Get integration account returns "Bad Request: The integration name or account ID format is invalid." response
+ Given new "GetAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Get integration account returns "Not Found: The integration or account does not exist." response
+ Given new "GetAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Get integration account returns "OK: The account details for the specified integration." response
+ Given new "GetAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: List integration accounts returns "Bad Request: The integration name format is invalid." response
+ Given new "ListAmsIntegrationAccounts" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: List integration accounts returns "Not Found: The integration does not exist." response
+ Given new "ListAmsIntegrationAccounts" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: List integration accounts returns "OK: List of all accounts for the specified integration." response
+ Given new "ListAmsIntegrationAccounts" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-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 "UpdateAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Update integration account returns "Not Found: The integration or account does not exist." response
+ Given new "UpdateAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Update integration account returns "OK: The account was successfully updated." response
+ Given new "UpdateAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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/saas-integrations
+ Scenario: Update integration account returns "Unprocessable Entity: The account configuration does not match the integration schema." response
+ Given new "UpdateAmsIntegrationAccount" request
+ And request contains "integration_name" parameter from "REPLACE.ME"
+ And request contains "interface_id" 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 a5c43f6c0f2..33e331e2b1a 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
@@ -4191,6 +4191,57 @@
"type": "idempotent"
}
},
+ "ListAmsIntegrationAccounts": {
+ "tag": "Integration Accounts",
+ "undo": {
+ "type": "safe"
+ }
+ },
+ "CreateAmsIntegrationAccount": {
+ "tag": "Integration Accounts",
+ "undo": {
+ "operationId": "DeleteAmsIntegrationAccount",
+ "parameters": [
+ {
+ "name": "integration_name",
+ "source": "integration_name"
+ },
+ {
+ "name": "interface_id",
+ "source": "interface_id"
+ },
+ {
+ "name": "account_id",
+ "source": "data.id"
+ }
+ ],
+ "type": "unsafe"
+ }
+ },
+ "GetAmsIntegrationAccountSchema": {
+ "tag": "Integration Accounts",
+ "undo": {
+ "type": "safe"
+ }
+ },
+ "DeleteAmsIntegrationAccount": {
+ "tag": "Integration Accounts",
+ "undo": {
+ "type": "idempotent"
+ }
+ },
+ "GetAmsIntegrationAccount": {
+ "tag": "Integration Accounts",
+ "undo": {
+ "type": "safe"
+ }
+ },
+ "UpdateAmsIntegrationAccount": {
+ "tag": "Integration Accounts",
+ "undo": {
+ "type": "idempotent"
+ }
+ },
"GetIPAllowlist": {
"tag": "IP Allowlist",
"undo": {