From 1dd038f5e0ffdf2fbe98f9bb245985020e103216 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Sat, 20 Jun 2026 22:42:12 +0000 Subject: [PATCH] Regenerate client from commit 3661c59 of spec repo --- .generator/schemas/v2/openapi.yaml | 1182 ++++++++++++++++ .../CreateAmsIntegrationAccount.java | 53 + .../DeleteAmsIntegrationAccount.java | 23 + .../GetAmsIntegrationAccount.java | 25 + .../GetAmsIntegrationAccountSchema.java | 28 + .../ListAmsIntegrationAccounts.java | 27 + .../UpdateAmsIntegrationAccount.java | 48 + .../client/v2/api/IntegrationAccountsApi.java | 1254 +++++++++++++++++ .../AmsIntegrationAccountAttributes.java | 182 +++ .../AmsIntegrationAccountCreateRequest.java | 148 ++ ...grationAccountCreateRequestAttributes.java | 221 +++ ...msIntegrationAccountCreateRequestData.java | 184 +++ .../model/AmsIntegrationAccountResponse.java | 166 +++ .../AmsIntegrationAccountResponseData.java | 211 +++ .../AmsIntegrationAccountSchemaResponse.java | 254 ++++ ...rationAccountSchemaResponseProperties.java | 192 +++ ...ionAccountSchemaResponseSecretsObject.java | 254 ++++ ...ionAccountSchemaResponseSettingsField.java | 288 ++++ ...onAccountSchemaResponseSettingsObject.java | 253 ++++ .../v2/model/AmsIntegrationAccountType.java | 55 + .../AmsIntegrationAccountUpdateRequest.java | 148 ++ ...grationAccountUpdateRequestAttributes.java | 218 +++ ...msIntegrationAccountUpdateRequestData.java | 182 +++ .../model/AmsIntegrationAccountsResponse.java | 180 +++ .../com/datadog/api/client/v2/api/given.json | 20 + .../v2/api/integration_accounts.feature | 199 +++ .../com/datadog/api/client/v2/api/undo.json | 51 + 27 files changed, 6046 insertions(+) create mode 100644 examples/v2/integration-accounts/CreateAmsIntegrationAccount.java create mode 100644 examples/v2/integration-accounts/DeleteAmsIntegrationAccount.java create mode 100644 examples/v2/integration-accounts/GetAmsIntegrationAccount.java create mode 100644 examples/v2/integration-accounts/GetAmsIntegrationAccountSchema.java create mode 100644 examples/v2/integration-accounts/ListAmsIntegrationAccounts.java create mode 100644 examples/v2/integration-accounts/UpdateAmsIntegrationAccount.java create mode 100644 src/main/java/com/datadog/api/client/v2/api/IntegrationAccountsApi.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountAttributes.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountCreateRequest.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountCreateRequestAttributes.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountCreateRequestData.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountResponse.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountResponseData.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponse.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponseProperties.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponseSecretsObject.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponseSettingsField.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountSchemaResponseSettingsObject.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountType.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountUpdateRequest.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountUpdateRequestAttributes.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountUpdateRequestData.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/AmsIntegrationAccountsResponse.java create mode 100644 src/test/resources/com/datadog/api/client/v2/api/integration_accounts.feature 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": {