diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index acd63e70a6..2db585986c 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -885,6 +885,27 @@ components: required: true schema: type: string + IntegrationAccountIdParameter: + description: Unique identifier of the integration account. + in: path + name: account_id + required: true + schema: + type: string + IntegrationAccountIntegrationIdParameter: + description: Grouping/RBAC scope. Selects the integration whose accounts are addressed. + in: path + name: integration_id + required: true + schema: + $ref: "#/components/schemas/IntegrationAccountIntegrationId" + IntegrationAccountInterfaceIdParameter: + description: Selects the interface (source-type) within the integration. + in: path + name: interface_id + required: true + schema: + $ref: "#/components/schemas/IntegrationAccountInterfaceId" IssueIDPathParameter: description: The identifier of the issue. example: "c1726a66-1f64-11ee-b338-da7ad0900002" @@ -31063,9 +31084,17 @@ components: type: string values: description: |- - Column values in row order. The element type matches the column's `type`; - for example a `VARCHAR` column carries strings, a `TIMESTAMP` column carries - Unix-millisecond integers. `null` is allowed for missing values. + Column values in row order, one entry per result row. The element type + follows the column's `type`. The following serialization rules should be + taken into account: + + - `BIGINT` values are encoded as JSON numbers in the signed 64-bit integer range. + - `DECIMAL` values are encoded as JSON numbers with 64-bit double precision. + - `TIMESTAMP` and `DATE` values are encoded as Unix-millisecond integers; a + `DATE` resolves to midnight UTC. + - `JSON` values are returned as a JSON-encoded string. + + `null` is allowed for any column type where a value is missing. example: - web-store - checkout @@ -33971,6 +34000,345 @@ components: - score - severity type: object + ElasticCloudAuthentication: + description: >- + Authentication methods supported by the Elastic Cloud interface. Exactly one is set, selected by its `type`. + oneOf: + - $ref: "#/components/schemas/ElasticCloudBasicAuth" + ElasticCloudBasicAuth: + description: Username & password authentication for Elastic Cloud. + properties: + password: + description: Password used to authenticate against the deployment. + example: your-password + type: string + writeOnly: true + type: + $ref: "#/components/schemas/ElasticCloudBasicAuthType" + username: + description: Username used to authenticate against the deployment. + example: datadog + type: string + required: + - type + - username + - password + type: object + ElasticCloudBasicAuthType: + default: basic + description: Authentication method discriminator. + enum: + - basic + example: basic + type: string + x-enum-varnames: + - BASIC + ElasticCloudCcmAuthentication: + description: >- + Authentication methods supported by the Elastic Cloud CCM interface. Exactly one is set, selected by its `type`. + oneOf: + - $ref: "#/components/schemas/ElasticCloudCcmTokenAuth" + ElasticCloudCcmDataflow: + description: An Elastic Cloud CCM dataflow toggle. The set of dataflow ids is fixed by the interface schema. + properties: + enabled: + description: Whether the dataflow is enabled. + example: true + type: boolean + id: + $ref: "#/components/schemas/ElasticCloudCcmDataflowId" + status: + $ref: "#/components/schemas/IntegrationAccountDataflowStatus" + required: + - id + type: object + ElasticCloudCcmDataflowId: + description: Identifier of an Elastic Cloud CCM dataflow. + enum: + - elastic-cloud-cost-data + example: elastic-cloud-cost-data + type: string + x-enum-varnames: + - COST_DATA + ElasticCloudCcmInterface: + description: Elastic Cloud CCM (Cloud Cost Management) interface configuration. + properties: + authentication: + $ref: "#/components/schemas/ElasticCloudCcmAuthentication" + dataflows: + description: Dataflows for the Elastic Cloud CCM interface. + items: + $ref: "#/components/schemas/ElasticCloudCcmDataflow" + type: array + settings: + $ref: "#/components/schemas/ElasticCloudCcmSettings" + type: + $ref: "#/components/schemas/ElasticCloudCcmInterfaceType" + required: + - type + - authentication + type: object + ElasticCloudCcmInterfaceType: + description: Interface discriminator for the Elastic Cloud CCM interface. + enum: + - elastic-cloud-ccm + example: elastic-cloud-ccm + type: string + x-enum-varnames: + - ELASTIC_CLOUD_CCM + ElasticCloudCcmInterfaceUpdate: + description: Partial Elastic Cloud CCM interface for updates. + properties: + authentication: + $ref: "#/components/schemas/ElasticCloudCcmAuthentication" + dataflows: + description: Dataflows for the Elastic Cloud CCM interface. + items: + $ref: "#/components/schemas/ElasticCloudCcmDataflow" + type: array + settings: + $ref: "#/components/schemas/ElasticCloudCcmSettingsUpdate" + type: + $ref: "#/components/schemas/ElasticCloudCcmInterfaceType" + required: + - type + type: object + ElasticCloudCcmSettings: + description: Elastic Cloud CCM interface settings. + properties: + elastic_org_id: + description: Your Elastic Cloud organization ID, found in your organization settings. + example: "2079364244" + type: string + required: + - elastic_org_id + type: object + ElasticCloudCcmSettingsUpdate: + description: Partial Elastic Cloud CCM interface settings for updates. + properties: + elastic_org_id: + description: Your Elastic Cloud organization ID, found in your organization settings. + example: "2079364244" + type: string + type: object + ElasticCloudCcmTokenAuth: + description: Encrypted token (bearer token) authentication for Elastic Cloud CCM. + properties: + api_key: + description: >- + Billing API key. An Elastic Cloud API key with read access to both Billing and Deployments. Create one under Organization settings > API Keys. + example: your-billing-api-key + type: string + writeOnly: true + type: + $ref: "#/components/schemas/ElasticCloudCcmTokenAuthType" + required: + - type + - api_key + type: object + ElasticCloudCcmTokenAuthType: + default: bearer_token + description: Authentication method discriminator. + enum: + - bearer_token + example: bearer_token + type: string + x-enum-varnames: + - BEARER_TOKEN + ElasticCloudDataflow: + description: An Elastic Cloud dataflow toggle. The set of dataflow ids is fixed by the interface schema. + properties: + enabled: + description: Whether the dataflow is enabled. + example: true + type: boolean + id: + $ref: "#/components/schemas/ElasticCloudDataflowId" + status: + $ref: "#/components/schemas/IntegrationAccountDataflowStatus" + required: + - id + type: object + ElasticCloudDataflowId: + description: Identifier of an Elastic Cloud dataflow. + enum: + - elastic-cloud-metrics + example: elastic-cloud-metrics + type: string + x-enum-varnames: + - METRICS + ElasticCloudIntegration: + description: Elastic Cloud integration configuration. + properties: + interface: + $ref: "#/components/schemas/ElasticCloudInterface" + type: + $ref: "#/components/schemas/ElasticCloudIntegrationType" + required: + - type + - interface + type: object + ElasticCloudIntegrationType: + description: Integration discriminator for Elastic Cloud. + enum: + - elastic-cloud + example: elastic-cloud + type: string + x-enum-varnames: + - ELASTIC_CLOUD + ElasticCloudIntegrationUpdate: + description: Partial Elastic Cloud integration configuration for updates. + properties: + interface: + $ref: "#/components/schemas/ElasticCloudInterfaceUpdate" + type: + $ref: "#/components/schemas/ElasticCloudIntegrationType" + required: + - type + type: object + ElasticCloudInterface: + description: >- + Elastic Cloud interface (source-type). Exactly one interface variant is set, selected by its `type`. + oneOf: + - $ref: "#/components/schemas/ElasticCloudMonitoringInterface" + - $ref: "#/components/schemas/ElasticCloudCcmInterface" + ElasticCloudInterfaceUpdate: + description: >- + Partial Elastic Cloud interface for updates. Exactly one interface variant is set, selected by its `type`. + oneOf: + - $ref: "#/components/schemas/ElasticCloudMonitoringInterfaceUpdate" + - $ref: "#/components/schemas/ElasticCloudCcmInterfaceUpdate" + ElasticCloudMonitoringInterface: + description: Elastic Cloud monitoring interface (source-type) configuration. + properties: + authentication: + $ref: "#/components/schemas/ElasticCloudAuthentication" + dataflows: + description: Dataflows for the Elastic Cloud monitoring interface. + items: + $ref: "#/components/schemas/ElasticCloudDataflow" + type: array + settings: + $ref: "#/components/schemas/ElasticCloudSettings" + type: + $ref: "#/components/schemas/ElasticCloudMonitoringInterfaceType" + required: + - type + - authentication + type: object + ElasticCloudMonitoringInterfaceType: + description: Interface discriminator for the Elastic Cloud monitoring interface. + enum: + - elastic-cloud + example: elastic-cloud + type: string + x-enum-varnames: + - ELASTIC_CLOUD + ElasticCloudMonitoringInterfaceUpdate: + description: Partial Elastic Cloud monitoring interface for updates. + properties: + authentication: + $ref: "#/components/schemas/ElasticCloudAuthentication" + dataflows: + description: Dataflows for the Elastic Cloud monitoring interface. + items: + $ref: "#/components/schemas/ElasticCloudDataflow" + type: array + settings: + $ref: "#/components/schemas/ElasticCloudSettingsUpdate" + type: + $ref: "#/components/schemas/ElasticCloudMonitoringInterfaceType" + required: + - type + type: object + ElasticCloudSettings: + description: Elastic Cloud interface settings. + properties: + cat_allocation_stats_enabled: + description: Enable to collect shard allocation metrics. + example: false + type: boolean + detailed_index_stats_enabled: + description: Enable to collect index-specific stats. + example: false + type: boolean + index_stats_enabled: + description: Enable to collect metrics about the indices in your cluster. + example: false + type: boolean + pending_task_stats_enabled: + description: Enable to collect metrics about pending tasks. + example: false + type: boolean + pshard_graceful_to_enabled: + description: Enable to collect all metrics even if primary shard metric collection times out. + example: false + type: boolean + pshard_stats_enabled: + description: Enable to collect metrics over primary shards. + example: false + type: boolean + slm_stats_enabled: + description: Enable to collect snapshot lifecycle management metrics. + example: false + type: boolean + tags: + description: Custom tags for this deployment. + example: + - env:prod + items: + type: string + type: array + url: + description: Deployment URL. + example: "https://example.es.us-central1.gcp.cloud.es.io:9243" + type: string + required: + - url + type: object + ElasticCloudSettingsUpdate: + description: Partial Elastic Cloud interface settings for updates. + properties: + cat_allocation_stats_enabled: + description: Enable to collect shard allocation metrics. + example: false + type: boolean + detailed_index_stats_enabled: + description: Enable to collect index-specific stats. + example: false + type: boolean + index_stats_enabled: + description: Enable to collect metrics about the indices in your cluster. + example: false + type: boolean + pending_task_stats_enabled: + description: Enable to collect metrics about pending tasks. + example: false + type: boolean + pshard_graceful_to_enabled: + description: Enable to collect all metrics even if primary shard metric collection times out. + example: false + type: boolean + pshard_stats_enabled: + description: Enable to collect metrics over primary shards. + example: false + type: boolean + slm_stats_enabled: + description: Enable to collect snapshot lifecycle management metrics. + example: false + type: boolean + tags: + description: Custom tags for this deployment. + example: + - env:prod + items: + type: string + type: array + url: + description: Deployment URL. + example: "https://example.es.us-central1.gcp.cloud.es.io:9243" + type: string + type: object Enabled: description: Field used to enable or disable the rule. example: true @@ -48598,6 +48966,189 @@ components: - id - attributes type: object + IntegrationAccountAttributes: + description: >- + Attributes of an integration account. The `integration` field is a strongly-typed, per-integration union. + properties: + integration: + $ref: "#/components/schemas/IntegrationAccountIntegration" + name: + description: Human-readable name of the account. + example: twilio-prod + type: string + permissions: + $ref: "#/components/schemas/IntegrationAccountPermissions" + required: + - name + - integration + type: object + IntegrationAccountCreateData: + description: Data envelope for creating an integration account. + properties: + attributes: + $ref: "#/components/schemas/IntegrationAccountAttributes" + type: + $ref: "#/components/schemas/IntegrationAccountType" + required: + - type + - attributes + type: object + IntegrationAccountData: + description: Data envelope of an integration account, including server-assigned identity. + properties: + attributes: + $ref: "#/components/schemas/IntegrationAccountAttributes" + id: + description: Server-generated unique identifier of the integration account. + example: 953a0060-81ec-4221-aed4-d4733b59cd96 + readOnly: true + type: string + type: + $ref: "#/components/schemas/IntegrationAccountType" + required: + - id + - type + - attributes + type: object + IntegrationAccountDataflowHealth: + description: Collection health of a single dataflow. + enum: + - DATAFLOW_HEALTH_OK + - DATAFLOW_HEALTH_BROKEN + - DATAFLOW_HEALTH_UNKNOWN + example: DATAFLOW_HEALTH_OK + type: string + x-enum-varnames: + - OK + - BROKEN + - UNKNOWN + IntegrationAccountDataflowStatus: + description: Read-only, server-computed collection status of a dataflow. + properties: + health: + $ref: "#/components/schemas/IntegrationAccountDataflowHealth" + message: + description: Human-readable detail, populated when the dataflow is not healthy. + example: "" + type: string + updated_at: + description: Time the status was last computed. + example: "2026-06-25T08:30:50Z" + format: date-time + type: string + readOnly: true + type: object + IntegrationAccountIntegration: + description: >- + Strongly-typed, per-integration configuration. Exactly one integration variant is set, selected by its `type`. + oneOf: + - $ref: "#/components/schemas/TwilioIntegration" + - $ref: "#/components/schemas/ElasticCloudIntegration" + IntegrationAccountIntegrationId: + description: Supported integration ids (the `integration_id` path scope). + enum: + - elastic-cloud + - twilio + example: twilio + type: string + x-enum-varnames: + - ELASTIC_CLOUD + - TWILIO + IntegrationAccountIntegrationUpdate: + description: >- + Strongly-typed, per-integration partial configuration. Exactly one integration variant is set, selected by its `type`. + oneOf: + - $ref: "#/components/schemas/TwilioIntegrationUpdate" + - $ref: "#/components/schemas/ElasticCloudIntegrationUpdate" + IntegrationAccountInterfaceId: + description: Supported interface (source-type) ids (the `interface_id` path scope). + enum: + - elastic-cloud + - elastic-cloud-ccm + - twilio + example: twilio + type: string + x-enum-varnames: + - ELASTIC_CLOUD + - ELASTIC_CLOUD_CCM + - TWILIO + IntegrationAccountPermissions: + description: Read-only permission information for the account, derived from its restriction policy. + properties: + resource_id: + description: Restriction-policy resource identifier of this account. + example: "integration-account:twilio:953a0060-81ec-4221-aed4-d4733b59cd96" + readOnly: true + type: string + user_can_edit: + description: Whether the requesting user may edit this account. + example: true + readOnly: true + type: boolean + readOnly: true + type: object + IntegrationAccountRequest: + description: Request payload to create an integration account. + properties: + data: + $ref: "#/components/schemas/IntegrationAccountCreateData" + required: + - data + type: object + IntegrationAccountResponse: + description: Response payload for a single integration account. + properties: + data: + $ref: "#/components/schemas/IntegrationAccountData" + type: object + IntegrationAccountType: + default: integration-account + description: JSON:API resource type for an integration account. Always `integration-account`. + enum: + - integration-account + example: integration-account + type: string + x-enum-varnames: + - INTEGRATION_ACCOUNT + IntegrationAccountUpdateAttributes: + description: >- + Updatable attributes of an integration account. Every field is optional; only the fields provided are changed. + properties: + integration: + $ref: "#/components/schemas/IntegrationAccountIntegrationUpdate" + name: + description: Human-readable name of the account. + example: twilio-prod + type: string + type: object + IntegrationAccountUpdateData: + description: Data envelope for updating an integration account. + properties: + attributes: + $ref: "#/components/schemas/IntegrationAccountUpdateAttributes" + type: + $ref: "#/components/schemas/IntegrationAccountType" + required: + - type + - attributes + type: object + IntegrationAccountUpdateRequest: + description: Request payload to update an integration account as a partial merge. + properties: + data: + $ref: "#/components/schemas/IntegrationAccountUpdateData" + required: + - data + type: object + IntegrationAccountsResponse: + description: Response payload for a list of integration accounts. + properties: + data: + description: List of integration accounts. + items: + $ref: "#/components/schemas/IntegrationAccountData" + type: array + type: object IntegrationAttributes: description: Attributes for an integration. properties: @@ -109798,6 +110349,167 @@ components: type: string x-enum-varnames: - TRIGGER_WORKFLOW_AUTOMATION + TwilioAuthentication: + description: >- + Authentication methods supported by the Twilio interface. Exactly one is set, selected by its `type`. + oneOf: + - $ref: "#/components/schemas/TwilioBasicAuth" + TwilioBasicAuth: + description: API Key & Secret authentication for Twilio. + properties: + api_key: + description: Twilio API Key SID for authentication. Create from Twilio Console > Account > API Keys & Tokens. + example: SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + type: string + api_key_token: + description: Twilio API Key Secret (token) corresponding to the API Key SID. + example: your-api-key-secret + type: string + writeOnly: true + type: + $ref: "#/components/schemas/TwilioBasicAuthType" + required: + - type + - api_key + - api_key_token + type: object + TwilioBasicAuthType: + default: basic + description: Authentication method discriminator. + enum: + - basic + example: basic + type: string + x-enum-varnames: + - BASIC + TwilioDataflow: + description: A Twilio dataflow toggle. The set of dataflow ids is fixed by the interface schema. + properties: + enabled: + description: Whether the dataflow is enabled. + example: true + type: boolean + id: + $ref: "#/components/schemas/TwilioDataflowId" + status: + $ref: "#/components/schemas/IntegrationAccountDataflowStatus" + required: + - id + type: object + TwilioDataflowId: + description: Identifier of a Twilio dataflow. + enum: + - twilio-cloud-cost-metrics + - twilio-events-logs + - twilio-messages-logs + - twilio-alerts-logs + - twilio-call-summaries-logs + example: twilio-messages-logs + type: string + x-enum-varnames: + - CLOUD_COST_METRICS + - EVENTS_LOGS + - MESSAGES_LOGS + - ALERTS_LOGS + - CALL_SUMMARIES_LOGS + TwilioIntegration: + description: Twilio integration configuration. + properties: + interface: + $ref: "#/components/schemas/TwilioInterface" + type: + $ref: "#/components/schemas/TwilioIntegrationType" + required: + - type + - interface + type: object + TwilioIntegrationType: + description: Integration discriminator for Twilio. + enum: + - twilio + example: twilio + type: string + x-enum-varnames: + - TWILIO + TwilioIntegrationUpdate: + description: Partial Twilio integration configuration for updates. + properties: + interface: + $ref: "#/components/schemas/TwilioInterfaceUpdate" + type: + $ref: "#/components/schemas/TwilioIntegrationType" + required: + - type + type: object + TwilioInterface: + description: Twilio interface (source-type) configuration. + properties: + authentication: + $ref: "#/components/schemas/TwilioAuthentication" + dataflows: + description: Dataflows for the Twilio interface. + items: + $ref: "#/components/schemas/TwilioDataflow" + type: array + settings: + $ref: "#/components/schemas/TwilioSettings" + type: + $ref: "#/components/schemas/TwilioInterfaceType" + required: + - type + - authentication + type: object + TwilioInterfaceType: + description: Interface discriminator for Twilio. + enum: + - twilio + example: twilio + type: string + x-enum-varnames: + - TWILIO + TwilioInterfaceUpdate: + description: Partial Twilio interface (source-type) configuration for updates. + properties: + authentication: + $ref: "#/components/schemas/TwilioAuthentication" + dataflows: + description: Dataflows for the Twilio interface. + items: + $ref: "#/components/schemas/TwilioDataflow" + type: array + settings: + $ref: "#/components/schemas/TwilioSettingsUpdate" + type: + $ref: "#/components/schemas/TwilioInterfaceType" + required: + - type + type: object + TwilioSettings: + description: Twilio interface settings. + properties: + account_sid: + description: Twilio Account SID that uniquely identifies your Twilio account. + example: ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + type: string + censor_logs: + description: When enabled, phone numbers in the `to` field and SMS message bodies are censored for privacy. + example: true + type: boolean + required: + - account_sid + type: object + TwilioSettingsUpdate: + description: Partial Twilio interface settings for updates. + properties: + account_sid: + description: Twilio Account SID that uniquely identifies your Twilio account. + example: ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + type: string + censor_logs: + description: When enabled, phone numbers in the `to` field and SMS message bodies are censored for privacy. + example: true + type: boolean + type: object UCConfigPair: description: The definition of `UCConfigPair` object. example: @@ -135602,9 +136314,6 @@ paths: summary: Execute a tabular DDSQL query tags: - DDSQL - x-unstable: |- - **Note**: This endpoint is in preview and is subject to change. - If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/ddsql/query/tabular/fetch: post: description: |- @@ -135713,9 +136422,6 @@ paths: summary: Fetch the result of a DDSQL query tags: - DDSQL - x-unstable: |- - **Note**: This endpoint is in preview and is subject to change. - If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/deletion/data/{product}: post: description: Creates a data deletion request by providing a query and a timeframe targeting the proper data. @@ -151115,6 +151821,265 @@ paths: operator: OR permissions: - manage_integrations + /api/v2/integrations/{integration_id}/interfaces/{interface_id}/accounts: + get: + description: List the integration accounts for a given integration/interface. + operationId: ListIntegrationAccounts + parameters: + - $ref: "#/components/parameters/IntegrationAccountIntegrationIdParameter" + - $ref: "#/components/parameters/IntegrationAccountInterfaceIdParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + integration: + interface: + authentication: + api_key: SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + type: basic + dataflows: + - enabled: true + id: twilio-messages-logs + status: + health: DATAFLOW_HEALTH_OK + updated_at: "2026-06-25T08:30:50Z" + settings: + account_sid: ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + censor_logs: true + type: twilio + type: twilio + name: twilio-prod + permissions: + resource_id: "integration-account:twilio:953a0060-81ec-4221-aed4-d4733b59cd96" + user_can_edit: true + id: 953a0060-81ec-4221-aed4-d4733b59cd96 + type: integration-account + schema: + $ref: "#/components/schemas/IntegrationAccountsResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List integration accounts + tags: + - Integration Accounts + x-unstable: |- + **Note**: This endpoint is in public beta. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + post: + description: Create an integration account for a given integration/interface. + operationId: CreateIntegrationAccount + parameters: + - $ref: "#/components/parameters/IntegrationAccountIntegrationIdParameter" + - $ref: "#/components/parameters/IntegrationAccountInterfaceIdParameter" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/IntegrationAccountRequest" + required: true + responses: + "201": + content: + application/json: + examples: + default: + value: + data: + attributes: + integration: + interface: + authentication: + api_key: SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + type: basic + dataflows: + - enabled: true + id: twilio-messages-logs + status: + health: DATAFLOW_HEALTH_OK + updated_at: "2026-06-25T08:30:50Z" + settings: + account_sid: ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + censor_logs: true + type: twilio + type: twilio + name: twilio-prod + permissions: + resource_id: "integration-account:twilio:953a0060-81ec-4221-aed4-d4733b59cd96" + user_can_edit: true + id: 953a0060-81ec-4221-aed4-d4733b59cd96 + type: integration-account + schema: + $ref: "#/components/schemas/IntegrationAccountResponse" + description: Created + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Create an integration account + tags: + - Integration Accounts + x-codegen-request-body-name: body + x-unstable: |- + **Note**: This endpoint is in public beta. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/integrations/{integration_id}/interfaces/{interface_id}/accounts/{account_id}: + delete: + description: Delete an integration account. + operationId: DeleteIntegrationAccount + parameters: + - $ref: "#/components/parameters/IntegrationAccountIntegrationIdParameter" + - $ref: "#/components/parameters/IntegrationAccountInterfaceIdParameter" + - $ref: "#/components/parameters/IntegrationAccountIdParameter" + responses: + "204": + description: No Content + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Delete an integration account + tags: + - Integration Accounts + x-unstable: |- + **Note**: This endpoint is in public beta. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + get: + description: Get a single integration account. + operationId: GetIntegrationAccount + parameters: + - $ref: "#/components/parameters/IntegrationAccountIntegrationIdParameter" + - $ref: "#/components/parameters/IntegrationAccountInterfaceIdParameter" + - $ref: "#/components/parameters/IntegrationAccountIdParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + integration: + interface: + authentication: + api_key: SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + type: basic + dataflows: + - enabled: true + id: twilio-messages-logs + status: + health: DATAFLOW_HEALTH_OK + updated_at: "2026-06-25T08:30:50Z" + settings: + account_sid: ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + censor_logs: true + type: twilio + type: twilio + name: twilio-prod + permissions: + resource_id: "integration-account:twilio:953a0060-81ec-4221-aed4-d4733b59cd96" + user_can_edit: true + id: 953a0060-81ec-4221-aed4-d4733b59cd96 + type: integration-account + schema: + $ref: "#/components/schemas/IntegrationAccountResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get an integration account + tags: + - Integration Accounts + x-unstable: |- + **Note**: This endpoint is in public beta. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + patch: + description: >- + Update an integration account. The update is a partial merge: only the fields provided are changed, so a name-only or settings-only update does not need to resend the full integration payload or write-only credentials. When present, `type` selects the integration/interface variant. Top-level attributes and the contents of `authentication` and `settings` are merged one level deep; the `dataflows` array is merged by `id`. + operationId: UpdateIntegrationAccount + parameters: + - $ref: "#/components/parameters/IntegrationAccountIntegrationIdParameter" + - $ref: "#/components/parameters/IntegrationAccountInterfaceIdParameter" + - $ref: "#/components/parameters/IntegrationAccountIdParameter" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/IntegrationAccountUpdateRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + integration: + interface: + authentication: + api_key: SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + type: basic + dataflows: + - enabled: true + id: twilio-messages-logs + status: + health: DATAFLOW_HEALTH_OK + updated_at: "2026-06-25T08:30:50Z" + settings: + account_sid: ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + censor_logs: true + type: twilio + type: twilio + name: twilio-prod + permissions: + resource_id: "integration-account:twilio:953a0060-81ec-4221-aed4-d4733b59cd96" + user_can_edit: true + id: 953a0060-81ec-4221-aed4-d4733b59cd96 + type: integration-account + schema: + $ref: "#/components/schemas/IntegrationAccountResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Update an integration account + tags: + - Integration Accounts + x-codegen-request-body-name: body + x-unstable: |- + **Note**: This endpoint is in public beta. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/ip_allowlist: get: description: Returns the IP allowlist and its enabled or disabled state. @@ -204600,6 +205565,9 @@ tags: name: Identity Providers - 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: >- + Manage accounts for Datadog integrations served by the Account Management Service (AMS). The account payload is strongly typed per integration and interface. + name: Integration Accounts - description: |- The Integrations API is used to list available integrations and retrieve information about their installation status. diff --git a/docs/datadog_api_client.v2.api.rst b/docs/datadog_api_client.v2.api.rst index 6a00bda396..3d624c4a4d 100644 --- a/docs/datadog_api_client.v2.api.rst +++ b/docs/datadog_api_client.v2.api.rst @@ -445,6 +445,13 @@ datadog\_api\_client.v2.api.incidents\_api module :members: :show-inheritance: +datadog\_api\_client.v2.api.integration\_accounts\_api module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.api.integration_accounts_api + :members: + :show-inheritance: + datadog\_api\_client.v2.api.integrations\_api module ---------------------------------------------------- diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index 23d3cc34b8..4377d3f4b8 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -13409,6 +13409,181 @@ datadog\_api\_client.v2.model.due\_date\_severity module :members: :show-inheritance: +datadog\_api\_client.v2.model.elastic\_cloud\_authentication module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_authentication + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_basic\_auth module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_basic_auth + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_basic\_auth\_type module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_basic_auth_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_ccm\_authentication module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_ccm_authentication + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_ccm\_dataflow module +------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_ccm_dataflow + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_ccm\_dataflow\_id module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_ccm_dataflow_id + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_ccm\_interface module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_ccm_interface + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_ccm\_interface\_type module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_ccm_interface_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_ccm\_interface\_update module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_ccm_interface_update + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_ccm\_settings module +------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_ccm_settings + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_ccm\_settings\_update module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_ccm_settings_update + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_ccm\_token\_auth module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_ccm_token_auth + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_ccm\_token\_auth\_type module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_ccm_token_auth_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_dataflow module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_dataflow + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_dataflow\_id module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_dataflow_id + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_integration module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_integration + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_integration\_type module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_integration_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_integration\_update module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_integration_update + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_interface module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_interface + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_interface\_update module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_interface_update + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_monitoring\_interface module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_monitoring_interface + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_monitoring\_interface\_type module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_monitoring_interface_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_monitoring\_interface\_update module +---------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_monitoring_interface_update + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_settings module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_settings + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.elastic\_cloud\_settings\_update module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.elastic_cloud_settings_update + :members: + :show-inheritance: + datadog\_api\_client.v2.model.elf\_sourcemap\_attributes module --------------------------------------------------------------- @@ -19667,6 +19842,125 @@ datadog\_api\_client.v2.model.integration module :members: :show-inheritance: +datadog\_api\_client.v2.model.integration\_account\_attributes module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_account_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_create\_data module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_account_create_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_data module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_account_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_dataflow\_health module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_account_dataflow_health + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_dataflow\_status module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_account_dataflow_status + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_integration module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_account_integration + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_integration\_id module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_account_integration_id + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_integration\_update module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.integration_account_integration_update + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_interface\_id module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.integration_account_interface_id + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_permissions module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_account_permissions + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_request module +------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.integration_account_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_response module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_account_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_type module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_account_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_update\_attributes module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_account_update_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_update\_data module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_account_update_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_account\_update\_request module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_account_update_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.integration\_accounts\_response module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.integration_accounts_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.integration\_attributes module ------------------------------------------------------------ @@ -46841,6 +47135,97 @@ datadog\_api\_client.v2.model.trigger\_workflow\_automation\_action\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.twilio\_authentication module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.twilio_authentication + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.twilio\_basic\_auth module +-------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.twilio_basic_auth + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.twilio\_basic\_auth\_type module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.twilio_basic_auth_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.twilio\_dataflow module +----------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.twilio_dataflow + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.twilio\_dataflow\_id module +--------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.twilio_dataflow_id + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.twilio\_integration module +-------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.twilio_integration + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.twilio\_integration\_type module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.twilio_integration_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.twilio\_integration\_update module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.twilio_integration_update + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.twilio\_interface module +------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.twilio_interface + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.twilio\_interface\_type module +------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.twilio_interface_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.twilio\_interface\_update module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.twilio_interface_update + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.twilio\_settings module +----------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.twilio_settings + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.twilio\_settings\_update module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.twilio_settings_update + :members: + :show-inheritance: + datadog\_api\_client.v2.model.uc\_config\_pair module ----------------------------------------------------- diff --git a/examples/v2/integration-accounts/CreateIntegrationAccount.py b/examples/v2/integration-accounts/CreateIntegrationAccount.py new file mode 100644 index 0000000000..c73c199d20 --- /dev/null +++ b/examples/v2/integration-accounts/CreateIntegrationAccount.py @@ -0,0 +1,63 @@ +""" +Create an integration account returns "Created" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.integration_accounts_api import IntegrationAccountsApi +from datadog_api_client.v2.model.integration_account_attributes import IntegrationAccountAttributes +from datadog_api_client.v2.model.integration_account_create_data import IntegrationAccountCreateData +from datadog_api_client.v2.model.integration_account_integration_id import IntegrationAccountIntegrationId +from datadog_api_client.v2.model.integration_account_interface_id import IntegrationAccountInterfaceId +from datadog_api_client.v2.model.integration_account_request import IntegrationAccountRequest +from datadog_api_client.v2.model.integration_account_type import IntegrationAccountType +from datadog_api_client.v2.model.twilio_basic_auth import TwilioBasicAuth +from datadog_api_client.v2.model.twilio_basic_auth_type import TwilioBasicAuthType +from datadog_api_client.v2.model.twilio_dataflow import TwilioDataflow +from datadog_api_client.v2.model.twilio_dataflow_id import TwilioDataflowId +from datadog_api_client.v2.model.twilio_integration import TwilioIntegration +from datadog_api_client.v2.model.twilio_integration_type import TwilioIntegrationType +from datadog_api_client.v2.model.twilio_interface import TwilioInterface +from datadog_api_client.v2.model.twilio_interface_type import TwilioInterfaceType +from datadog_api_client.v2.model.twilio_settings import TwilioSettings + +body = IntegrationAccountRequest( + data=IntegrationAccountCreateData( + attributes=IntegrationAccountAttributes( + integration=TwilioIntegration( + interface=TwilioInterface( + authentication=TwilioBasicAuth( + api_key="SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + api_key_token="your-api-key-secret", + type=TwilioBasicAuthType.BASIC, + ), + dataflows=[ + TwilioDataflow( + enabled=True, + id=TwilioDataflowId.MESSAGES_LOGS, + ), + ], + settings=TwilioSettings( + account_sid="ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + censor_logs=True, + ), + type=TwilioInterfaceType.TWILIO, + ), + type=TwilioIntegrationType.TWILIO, + ), + name="twilio-prod", + ), + type=IntegrationAccountType.INTEGRATION_ACCOUNT, + ), +) + +configuration = Configuration() +configuration.unstable_operations["create_integration_account"] = True +with ApiClient(configuration) as api_client: + api_instance = IntegrationAccountsApi(api_client) + response = api_instance.create_integration_account( + integration_id=IntegrationAccountIntegrationId.TWILIO, + interface_id=IntegrationAccountInterfaceId.TWILIO, + body=body, + ) + + print(response) diff --git a/examples/v2/integration-accounts/DeleteIntegrationAccount.py b/examples/v2/integration-accounts/DeleteIntegrationAccount.py new file mode 100644 index 0000000000..def86a79d1 --- /dev/null +++ b/examples/v2/integration-accounts/DeleteIntegrationAccount.py @@ -0,0 +1,18 @@ +""" +Delete an integration account returns "No Content" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.integration_accounts_api import IntegrationAccountsApi +from datadog_api_client.v2.model.integration_account_integration_id import IntegrationAccountIntegrationId +from datadog_api_client.v2.model.integration_account_interface_id import IntegrationAccountInterfaceId + +configuration = Configuration() +configuration.unstable_operations["delete_integration_account"] = True +with ApiClient(configuration) as api_client: + api_instance = IntegrationAccountsApi(api_client) + api_instance.delete_integration_account( + integration_id=IntegrationAccountIntegrationId.TWILIO, + interface_id=IntegrationAccountInterfaceId.TWILIO, + account_id="account_id", + ) diff --git a/examples/v2/integration-accounts/GetIntegrationAccount.py b/examples/v2/integration-accounts/GetIntegrationAccount.py new file mode 100644 index 0000000000..8778b2ce60 --- /dev/null +++ b/examples/v2/integration-accounts/GetIntegrationAccount.py @@ -0,0 +1,20 @@ +""" +Get an integration account returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.integration_accounts_api import IntegrationAccountsApi +from datadog_api_client.v2.model.integration_account_integration_id import IntegrationAccountIntegrationId +from datadog_api_client.v2.model.integration_account_interface_id import IntegrationAccountInterfaceId + +configuration = Configuration() +configuration.unstable_operations["get_integration_account"] = True +with ApiClient(configuration) as api_client: + api_instance = IntegrationAccountsApi(api_client) + response = api_instance.get_integration_account( + integration_id=IntegrationAccountIntegrationId.TWILIO, + interface_id=IntegrationAccountInterfaceId.TWILIO, + account_id="account_id", + ) + + print(response) diff --git a/examples/v2/integration-accounts/ListIntegrationAccounts.py b/examples/v2/integration-accounts/ListIntegrationAccounts.py new file mode 100644 index 0000000000..720250e03c --- /dev/null +++ b/examples/v2/integration-accounts/ListIntegrationAccounts.py @@ -0,0 +1,19 @@ +""" +List integration accounts returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.integration_accounts_api import IntegrationAccountsApi +from datadog_api_client.v2.model.integration_account_integration_id import IntegrationAccountIntegrationId +from datadog_api_client.v2.model.integration_account_interface_id import IntegrationAccountInterfaceId + +configuration = Configuration() +configuration.unstable_operations["list_integration_accounts"] = True +with ApiClient(configuration) as api_client: + api_instance = IntegrationAccountsApi(api_client) + response = api_instance.list_integration_accounts( + integration_id=IntegrationAccountIntegrationId.TWILIO, + interface_id=IntegrationAccountInterfaceId.TWILIO, + ) + + print(response) diff --git a/examples/v2/integration-accounts/UpdateIntegrationAccount.py b/examples/v2/integration-accounts/UpdateIntegrationAccount.py new file mode 100644 index 0000000000..8d20503dde --- /dev/null +++ b/examples/v2/integration-accounts/UpdateIntegrationAccount.py @@ -0,0 +1,64 @@ +""" +Update an integration account returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.integration_accounts_api import IntegrationAccountsApi +from datadog_api_client.v2.model.integration_account_integration_id import IntegrationAccountIntegrationId +from datadog_api_client.v2.model.integration_account_interface_id import IntegrationAccountInterfaceId +from datadog_api_client.v2.model.integration_account_type import IntegrationAccountType +from datadog_api_client.v2.model.integration_account_update_attributes import IntegrationAccountUpdateAttributes +from datadog_api_client.v2.model.integration_account_update_data import IntegrationAccountUpdateData +from datadog_api_client.v2.model.integration_account_update_request import IntegrationAccountUpdateRequest +from datadog_api_client.v2.model.twilio_basic_auth import TwilioBasicAuth +from datadog_api_client.v2.model.twilio_basic_auth_type import TwilioBasicAuthType +from datadog_api_client.v2.model.twilio_dataflow import TwilioDataflow +from datadog_api_client.v2.model.twilio_dataflow_id import TwilioDataflowId +from datadog_api_client.v2.model.twilio_integration_type import TwilioIntegrationType +from datadog_api_client.v2.model.twilio_integration_update import TwilioIntegrationUpdate +from datadog_api_client.v2.model.twilio_interface_type import TwilioInterfaceType +from datadog_api_client.v2.model.twilio_interface_update import TwilioInterfaceUpdate +from datadog_api_client.v2.model.twilio_settings_update import TwilioSettingsUpdate + +body = IntegrationAccountUpdateRequest( + data=IntegrationAccountUpdateData( + attributes=IntegrationAccountUpdateAttributes( + integration=TwilioIntegrationUpdate( + interface=TwilioInterfaceUpdate( + authentication=TwilioBasicAuth( + api_key="SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + api_key_token="your-api-key-secret", + type=TwilioBasicAuthType.BASIC, + ), + dataflows=[ + TwilioDataflow( + enabled=True, + id=TwilioDataflowId.MESSAGES_LOGS, + ), + ], + settings=TwilioSettingsUpdate( + account_sid="ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + censor_logs=True, + ), + type=TwilioInterfaceType.TWILIO, + ), + type=TwilioIntegrationType.TWILIO, + ), + name="twilio-prod", + ), + type=IntegrationAccountType.INTEGRATION_ACCOUNT, + ), +) + +configuration = Configuration() +configuration.unstable_operations["update_integration_account"] = True +with ApiClient(configuration) as api_client: + api_instance = IntegrationAccountsApi(api_client) + response = api_instance.update_integration_account( + integration_id=IntegrationAccountIntegrationId.TWILIO, + interface_id=IntegrationAccountInterfaceId.TWILIO, + account_id="account_id", + body=body, + ) + + print(response) diff --git a/src/datadog_api_client/configuration.py b/src/datadog_api_client/configuration.py index 19b8d3d76f..68fdd7d881 100644 --- a/src/datadog_api_client/configuration.py +++ b/src/datadog_api_client/configuration.py @@ -490,8 +490,6 @@ def __init__( "v2.get_all_datasets": False, "v2.get_dataset": False, "v2.update_dataset": False, - "v2.execute_ddsql_tabular_query": False, - "v2.fetch_ddsql_tabular_query": False, "v2.cancel_data_deletion_request": False, "v2.create_data_deletion_request": False, "v2.get_data_deletion_requests": False, @@ -601,6 +599,11 @@ def __init__( "v2.update_jira_issue_template": False, "v2.create_tenancy_config": False, "v2.get_tenancy_configs": False, + "v2.create_integration_account": False, + "v2.delete_integration_account": False, + "v2.get_integration_account": False, + "v2.list_integration_accounts": False, + "v2.update_integration_account": False, "v2.add_role_to_restriction_query": False, "v2.create_restriction_query": False, "v2.delete_restriction_query": False, diff --git a/src/datadog_api_client/v2/api/integration_accounts_api.py b/src/datadog_api_client/v2/api/integration_accounts_api.py new file mode 100644 index 0000000000..26724bc241 --- /dev/null +++ b/src/datadog_api_client/v2/api/integration_accounts_api.py @@ -0,0 +1,328 @@ +# 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. +from __future__ import annotations + +from typing import Any, Dict + +from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint +from datadog_api_client.configuration import Configuration +from datadog_api_client.v2.model.integration_accounts_response import IntegrationAccountsResponse +from datadog_api_client.v2.model.integration_account_integration_id import IntegrationAccountIntegrationId +from datadog_api_client.v2.model.integration_account_interface_id import IntegrationAccountInterfaceId +from datadog_api_client.v2.model.integration_account_response import IntegrationAccountResponse +from datadog_api_client.v2.model.integration_account_request import IntegrationAccountRequest +from datadog_api_client.v2.model.integration_account_update_request import IntegrationAccountUpdateRequest + + +class IntegrationAccountsApi: + """ + Manage accounts for Datadog integrations served by the Account Management Service (AMS). The account payload is strongly typed per integration and interface. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient(Configuration()) + self.api_client = api_client + + self._create_integration_account_endpoint = _Endpoint( + settings={ + "response_type": (IntegrationAccountResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integrations/{integration_id}/interfaces/{interface_id}/accounts", + "operation_id": "create_integration_account", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "integration_id": { + "required": True, + "openapi_types": (IntegrationAccountIntegrationId,), + "attribute": "integration_id", + "location": "path", + }, + "interface_id": { + "required": True, + "openapi_types": (IntegrationAccountInterfaceId,), + "attribute": "interface_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (IntegrationAccountRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._delete_integration_account_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integrations/{integration_id}/interfaces/{interface_id}/accounts/{account_id}", + "operation_id": "delete_integration_account", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "integration_id": { + "required": True, + "openapi_types": (IntegrationAccountIntegrationId,), + "attribute": "integration_id", + "location": "path", + }, + "interface_id": { + "required": True, + "openapi_types": (IntegrationAccountInterfaceId,), + "attribute": "interface_id", + "location": "path", + }, + "account_id": { + "required": True, + "openapi_types": (str,), + "attribute": "account_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["*/*"], + }, + api_client=api_client, + ) + + self._get_integration_account_endpoint = _Endpoint( + settings={ + "response_type": (IntegrationAccountResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integrations/{integration_id}/interfaces/{interface_id}/accounts/{account_id}", + "operation_id": "get_integration_account", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "integration_id": { + "required": True, + "openapi_types": (IntegrationAccountIntegrationId,), + "attribute": "integration_id", + "location": "path", + }, + "interface_id": { + "required": True, + "openapi_types": (IntegrationAccountInterfaceId,), + "attribute": "interface_id", + "location": "path", + }, + "account_id": { + "required": True, + "openapi_types": (str,), + "attribute": "account_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_integration_accounts_endpoint = _Endpoint( + settings={ + "response_type": (IntegrationAccountsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integrations/{integration_id}/interfaces/{interface_id}/accounts", + "operation_id": "list_integration_accounts", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "integration_id": { + "required": True, + "openapi_types": (IntegrationAccountIntegrationId,), + "attribute": "integration_id", + "location": "path", + }, + "interface_id": { + "required": True, + "openapi_types": (IntegrationAccountInterfaceId,), + "attribute": "interface_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._update_integration_account_endpoint = _Endpoint( + settings={ + "response_type": (IntegrationAccountResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integrations/{integration_id}/interfaces/{interface_id}/accounts/{account_id}", + "operation_id": "update_integration_account", + "http_method": "PATCH", + "version": "v2", + }, + params_map={ + "integration_id": { + "required": True, + "openapi_types": (IntegrationAccountIntegrationId,), + "attribute": "integration_id", + "location": "path", + }, + "interface_id": { + "required": True, + "openapi_types": (IntegrationAccountInterfaceId,), + "attribute": "interface_id", + "location": "path", + }, + "account_id": { + "required": True, + "openapi_types": (str,), + "attribute": "account_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (IntegrationAccountUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + def create_integration_account( + self, + integration_id: IntegrationAccountIntegrationId, + interface_id: IntegrationAccountInterfaceId, + body: IntegrationAccountRequest, + ) -> IntegrationAccountResponse: + """Create an integration account. + + Create an integration account for a given integration/interface. + + :param integration_id: Grouping/RBAC scope. Selects the integration whose accounts are addressed. + :type integration_id: IntegrationAccountIntegrationId + :param interface_id: Selects the interface (source-type) within the integration. + :type interface_id: IntegrationAccountInterfaceId + :type body: IntegrationAccountRequest + :rtype: IntegrationAccountResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["integration_id"] = integration_id + + kwargs["interface_id"] = interface_id + + kwargs["body"] = body + + return self._create_integration_account_endpoint.call_with_http_info(**kwargs) + + def delete_integration_account( + self, + integration_id: IntegrationAccountIntegrationId, + interface_id: IntegrationAccountInterfaceId, + account_id: str, + ) -> None: + """Delete an integration account. + + Delete an integration account. + + :param integration_id: Grouping/RBAC scope. Selects the integration whose accounts are addressed. + :type integration_id: IntegrationAccountIntegrationId + :param interface_id: Selects the interface (source-type) within the integration. + :type interface_id: IntegrationAccountInterfaceId + :param account_id: Unique identifier of the integration account. + :type account_id: str + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["integration_id"] = integration_id + + kwargs["interface_id"] = interface_id + + kwargs["account_id"] = account_id + + return self._delete_integration_account_endpoint.call_with_http_info(**kwargs) + + def get_integration_account( + self, + integration_id: IntegrationAccountIntegrationId, + interface_id: IntegrationAccountInterfaceId, + account_id: str, + ) -> IntegrationAccountResponse: + """Get an integration account. + + Get a single integration account. + + :param integration_id: Grouping/RBAC scope. Selects the integration whose accounts are addressed. + :type integration_id: IntegrationAccountIntegrationId + :param interface_id: Selects the interface (source-type) within the integration. + :type interface_id: IntegrationAccountInterfaceId + :param account_id: Unique identifier of the integration account. + :type account_id: str + :rtype: IntegrationAccountResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["integration_id"] = integration_id + + kwargs["interface_id"] = interface_id + + kwargs["account_id"] = account_id + + return self._get_integration_account_endpoint.call_with_http_info(**kwargs) + + def list_integration_accounts( + self, + integration_id: IntegrationAccountIntegrationId, + interface_id: IntegrationAccountInterfaceId, + ) -> IntegrationAccountsResponse: + """List integration accounts. + + List the integration accounts for a given integration/interface. + + :param integration_id: Grouping/RBAC scope. Selects the integration whose accounts are addressed. + :type integration_id: IntegrationAccountIntegrationId + :param interface_id: Selects the interface (source-type) within the integration. + :type interface_id: IntegrationAccountInterfaceId + :rtype: IntegrationAccountsResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["integration_id"] = integration_id + + kwargs["interface_id"] = interface_id + + return self._list_integration_accounts_endpoint.call_with_http_info(**kwargs) + + def update_integration_account( + self, + integration_id: IntegrationAccountIntegrationId, + interface_id: IntegrationAccountInterfaceId, + account_id: str, + body: IntegrationAccountUpdateRequest, + ) -> IntegrationAccountResponse: + """Update an integration account. + + Update an integration account. The update is a partial merge: only the fields provided are changed, so a name-only or settings-only update does not need to resend the full integration payload or write-only credentials. When present, ``type`` selects the integration/interface variant. Top-level attributes and the contents of ``authentication`` and ``settings`` are merged one level deep; the ``dataflows`` array is merged by ``id``. + + :param integration_id: Grouping/RBAC scope. Selects the integration whose accounts are addressed. + :type integration_id: IntegrationAccountIntegrationId + :param interface_id: Selects the interface (source-type) within the integration. + :type interface_id: IntegrationAccountInterfaceId + :param account_id: Unique identifier of the integration account. + :type account_id: str + :type body: IntegrationAccountUpdateRequest + :rtype: IntegrationAccountResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["integration_id"] = integration_id + + kwargs["interface_id"] = interface_id + + kwargs["account_id"] = account_id + + kwargs["body"] = body + + return self._update_integration_account_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/apis/__init__.py b/src/datadog_api_client/v2/apis/__init__.py index 52e811b35a..97f3407549 100644 --- a/src/datadog_api_client/v2/apis/__init__.py +++ b/src/datadog_api_client/v2/apis/__init__.py @@ -62,6 +62,7 @@ from datadog_api_client.v2.api.ip_allowlist_api import IPAllowlistApi from datadog_api_client.v2.api.identity_providers_api import IdentityProvidersApi from datadog_api_client.v2.api.incidents_api import IncidentsApi +from datadog_api_client.v2.api.integration_accounts_api import IntegrationAccountsApi from datadog_api_client.v2.api.integrations_api import IntegrationsApi from datadog_api_client.v2.api.jira_integration_api import JiraIntegrationApi from datadog_api_client.v2.api.key_management_api import KeyManagementApi @@ -204,6 +205,7 @@ "IPAllowlistApi", "IdentityProvidersApi", "IncidentsApi", + "IntegrationAccountsApi", "IntegrationsApi", "JiraIntegrationApi", "KeyManagementApi", diff --git a/src/datadog_api_client/v2/model/ddsql_tabular_query_column.py b/src/datadog_api_client/v2/model/ddsql_tabular_query_column.py index ab778d989d..4fe462f5db 100644 --- a/src/datadog_api_client/v2/model/ddsql_tabular_query_column.py +++ b/src/datadog_api_client/v2/model/ddsql_tabular_query_column.py @@ -44,9 +44,17 @@ def __init__(self_, name: str, type: str, values: List[Any], **kwargs): for the full, up-to-date list. :type type: str - :param values: Column values in row order. The element type matches the column's ``type`` ; - for example a ``VARCHAR`` column carries strings, a ``TIMESTAMP`` column carries - Unix-millisecond integers. ``null`` is allowed for missing values. + :param values: Column values in row order, one entry per result row. The element type + follows the column's ``type``. The following serialization rules should be + taken into account: + + * ``BIGINT`` values are encoded as JSON numbers in the signed 64-bit integer range. + * ``DECIMAL`` values are encoded as JSON numbers with 64-bit double precision. + * ``TIMESTAMP`` and ``DATE`` values are encoded as Unix-millisecond integers; a + ``DATE`` resolves to midnight UTC. + * ``JSON`` values are returned as a JSON-encoded string. + + ``null`` is allowed for any column type where a value is missing. :type values: [bool, date, datetime, dict, float, int, list, str, UUID, none_type] """ super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/elastic_cloud_authentication.py b/src/datadog_api_client/v2/model/elastic_cloud_authentication.py new file mode 100644 index 0000000000..bf81e8aace --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_authentication.py @@ -0,0 +1,44 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class ElasticCloudAuthentication(ModelComposed): + def __init__(self, **kwargs): + """ + Authentication methods supported by the Elastic Cloud interface. Exactly one is set, selected by its ``type``. + + :param password: Password used to authenticate against the deployment. + :type password: str + + :param type: Authentication method discriminator. + :type type: ElasticCloudBasicAuthType + + :param username: Username used to authenticate against the deployment. + :type username: str + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + from datadog_api_client.v2.model.elastic_cloud_basic_auth import ElasticCloudBasicAuth + + return { + "oneOf": [ + ElasticCloudBasicAuth, + ], + } diff --git a/src/datadog_api_client/v2/model/elastic_cloud_basic_auth.py b/src/datadog_api_client/v2/model/elastic_cloud_basic_auth.py new file mode 100644 index 0000000000..ef09249929 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_basic_auth.py @@ -0,0 +1,52 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.elastic_cloud_basic_auth_type import ElasticCloudBasicAuthType + + +class ElasticCloudBasicAuth(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.elastic_cloud_basic_auth_type import ElasticCloudBasicAuthType + + return { + "password": (str,), + "type": (ElasticCloudBasicAuthType,), + "username": (str,), + } + + attribute_map = { + "password": "password", + "type": "type", + "username": "username", + } + + def __init__(self_, password: str, type: ElasticCloudBasicAuthType, username: str, **kwargs): + """ + Username & password authentication for Elastic Cloud. + + :param password: Password used to authenticate against the deployment. + :type password: str + + :param type: Authentication method discriminator. + :type type: ElasticCloudBasicAuthType + + :param username: Username used to authenticate against the deployment. + :type username: str + """ + super().__init__(kwargs) + + self_.password = password + self_.type = type + self_.username = username diff --git a/src/datadog_api_client/v2/model/elastic_cloud_basic_auth_type.py b/src/datadog_api_client/v2/model/elastic_cloud_basic_auth_type.py new file mode 100644 index 0000000000..359af1f5d8 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_basic_auth_type.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ElasticCloudBasicAuthType(ModelSimple): + """ + Authentication method discriminator. + + :param value: If omitted defaults to "basic". Must be one of ["basic"]. + :type value: str + """ + + allowed_values = { + "basic", + } + BASIC: ClassVar["ElasticCloudBasicAuthType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ElasticCloudBasicAuthType.BASIC = ElasticCloudBasicAuthType("basic") diff --git a/src/datadog_api_client/v2/model/elastic_cloud_ccm_authentication.py b/src/datadog_api_client/v2/model/elastic_cloud_ccm_authentication.py new file mode 100644 index 0000000000..4c8770bbec --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_ccm_authentication.py @@ -0,0 +1,41 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class ElasticCloudCcmAuthentication(ModelComposed): + def __init__(self, **kwargs): + """ + Authentication methods supported by the Elastic Cloud CCM interface. Exactly one is set, selected by its ``type``. + + :param api_key: Billing API key. An Elastic Cloud API key with read access to both Billing and Deployments. Create one under Organization settings > API Keys. + :type api_key: str + + :param type: Authentication method discriminator. + :type type: ElasticCloudCcmTokenAuthType + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + from datadog_api_client.v2.model.elastic_cloud_ccm_token_auth import ElasticCloudCcmTokenAuth + + return { + "oneOf": [ + ElasticCloudCcmTokenAuth, + ], + } diff --git a/src/datadog_api_client/v2/model/elastic_cloud_ccm_dataflow.py b/src/datadog_api_client/v2/model/elastic_cloud_ccm_dataflow.py new file mode 100644 index 0000000000..02bb99abe1 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_ccm_dataflow.py @@ -0,0 +1,67 @@ +# 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. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.elastic_cloud_ccm_dataflow_id import ElasticCloudCcmDataflowId + from datadog_api_client.v2.model.integration_account_dataflow_status import IntegrationAccountDataflowStatus + + +class ElasticCloudCcmDataflow(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.elastic_cloud_ccm_dataflow_id import ElasticCloudCcmDataflowId + from datadog_api_client.v2.model.integration_account_dataflow_status import IntegrationAccountDataflowStatus + + return { + "enabled": (bool,), + "id": (ElasticCloudCcmDataflowId,), + "status": (IntegrationAccountDataflowStatus,), + } + + attribute_map = { + "enabled": "enabled", + "id": "id", + "status": "status", + } + read_only_vars = { + "status", + } + + def __init__( + self_, + id: ElasticCloudCcmDataflowId, + enabled: Union[bool, UnsetType] = unset, + status: Union[IntegrationAccountDataflowStatus, UnsetType] = unset, + **kwargs, + ): + """ + An Elastic Cloud CCM dataflow toggle. The set of dataflow ids is fixed by the interface schema. + + :param enabled: Whether the dataflow is enabled. + :type enabled: bool, optional + + :param id: Identifier of an Elastic Cloud CCM dataflow. + :type id: ElasticCloudCcmDataflowId + + :param status: Read-only, server-computed collection status of a dataflow. + :type status: IntegrationAccountDataflowStatus, optional + """ + if enabled is not unset: + kwargs["enabled"] = enabled + if status is not unset: + kwargs["status"] = status + super().__init__(kwargs) + + self_.id = id diff --git a/src/datadog_api_client/v2/model/elastic_cloud_ccm_dataflow_id.py b/src/datadog_api_client/v2/model/elastic_cloud_ccm_dataflow_id.py new file mode 100644 index 0000000000..3299d500d4 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_ccm_dataflow_id.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ElasticCloudCcmDataflowId(ModelSimple): + """ + Identifier of an Elastic Cloud CCM dataflow. + + :param value: If omitted defaults to "elastic-cloud-cost-data". Must be one of ["elastic-cloud-cost-data"]. + :type value: str + """ + + allowed_values = { + "elastic-cloud-cost-data", + } + COST_DATA: ClassVar["ElasticCloudCcmDataflowId"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ElasticCloudCcmDataflowId.COST_DATA = ElasticCloudCcmDataflowId("elastic-cloud-cost-data") diff --git a/src/datadog_api_client/v2/model/elastic_cloud_ccm_interface.py b/src/datadog_api_client/v2/model/elastic_cloud_ccm_interface.py new file mode 100644 index 0000000000..95d940e0e7 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_ccm_interface.py @@ -0,0 +1,76 @@ +# 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. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.elastic_cloud_ccm_authentication import ElasticCloudCcmAuthentication + from datadog_api_client.v2.model.elastic_cloud_ccm_dataflow import ElasticCloudCcmDataflow + from datadog_api_client.v2.model.elastic_cloud_ccm_settings import ElasticCloudCcmSettings + from datadog_api_client.v2.model.elastic_cloud_ccm_interface_type import ElasticCloudCcmInterfaceType + from datadog_api_client.v2.model.elastic_cloud_ccm_token_auth import ElasticCloudCcmTokenAuth + + +class ElasticCloudCcmInterface(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.elastic_cloud_ccm_authentication import ElasticCloudCcmAuthentication + from datadog_api_client.v2.model.elastic_cloud_ccm_dataflow import ElasticCloudCcmDataflow + from datadog_api_client.v2.model.elastic_cloud_ccm_settings import ElasticCloudCcmSettings + from datadog_api_client.v2.model.elastic_cloud_ccm_interface_type import ElasticCloudCcmInterfaceType + + return { + "authentication": (ElasticCloudCcmAuthentication,), + "dataflows": ([ElasticCloudCcmDataflow],), + "settings": (ElasticCloudCcmSettings,), + "type": (ElasticCloudCcmInterfaceType,), + } + + attribute_map = { + "authentication": "authentication", + "dataflows": "dataflows", + "settings": "settings", + "type": "type", + } + + def __init__( + self_, + authentication: Union[ElasticCloudCcmAuthentication, ElasticCloudCcmTokenAuth], + type: ElasticCloudCcmInterfaceType, + dataflows: Union[List[ElasticCloudCcmDataflow], UnsetType] = unset, + settings: Union[ElasticCloudCcmSettings, UnsetType] = unset, + **kwargs, + ): + """ + Elastic Cloud CCM (Cloud Cost Management) interface configuration. + + :param authentication: Authentication methods supported by the Elastic Cloud CCM interface. Exactly one is set, selected by its ``type``. + :type authentication: ElasticCloudCcmAuthentication + + :param dataflows: Dataflows for the Elastic Cloud CCM interface. + :type dataflows: [ElasticCloudCcmDataflow], optional + + :param settings: Elastic Cloud CCM interface settings. + :type settings: ElasticCloudCcmSettings, optional + + :param type: Interface discriminator for the Elastic Cloud CCM interface. + :type type: ElasticCloudCcmInterfaceType + """ + if dataflows is not unset: + kwargs["dataflows"] = dataflows + if settings is not unset: + kwargs["settings"] = settings + super().__init__(kwargs) + + self_.authentication = authentication + self_.type = type diff --git a/src/datadog_api_client/v2/model/elastic_cloud_ccm_interface_type.py b/src/datadog_api_client/v2/model/elastic_cloud_ccm_interface_type.py new file mode 100644 index 0000000000..428437ab09 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_ccm_interface_type.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ElasticCloudCcmInterfaceType(ModelSimple): + """ + Interface discriminator for the Elastic Cloud CCM interface. + + :param value: If omitted defaults to "elastic-cloud-ccm". Must be one of ["elastic-cloud-ccm"]. + :type value: str + """ + + allowed_values = { + "elastic-cloud-ccm", + } + ELASTIC_CLOUD_CCM: ClassVar["ElasticCloudCcmInterfaceType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ElasticCloudCcmInterfaceType.ELASTIC_CLOUD_CCM = ElasticCloudCcmInterfaceType("elastic-cloud-ccm") diff --git a/src/datadog_api_client/v2/model/elastic_cloud_ccm_interface_update.py b/src/datadog_api_client/v2/model/elastic_cloud_ccm_interface_update.py new file mode 100644 index 0000000000..576faa78df --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_ccm_interface_update.py @@ -0,0 +1,77 @@ +# 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. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.elastic_cloud_ccm_authentication import ElasticCloudCcmAuthentication + from datadog_api_client.v2.model.elastic_cloud_ccm_dataflow import ElasticCloudCcmDataflow + from datadog_api_client.v2.model.elastic_cloud_ccm_settings_update import ElasticCloudCcmSettingsUpdate + from datadog_api_client.v2.model.elastic_cloud_ccm_interface_type import ElasticCloudCcmInterfaceType + from datadog_api_client.v2.model.elastic_cloud_ccm_token_auth import ElasticCloudCcmTokenAuth + + +class ElasticCloudCcmInterfaceUpdate(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.elastic_cloud_ccm_authentication import ElasticCloudCcmAuthentication + from datadog_api_client.v2.model.elastic_cloud_ccm_dataflow import ElasticCloudCcmDataflow + from datadog_api_client.v2.model.elastic_cloud_ccm_settings_update import ElasticCloudCcmSettingsUpdate + from datadog_api_client.v2.model.elastic_cloud_ccm_interface_type import ElasticCloudCcmInterfaceType + + return { + "authentication": (ElasticCloudCcmAuthentication,), + "dataflows": ([ElasticCloudCcmDataflow],), + "settings": (ElasticCloudCcmSettingsUpdate,), + "type": (ElasticCloudCcmInterfaceType,), + } + + attribute_map = { + "authentication": "authentication", + "dataflows": "dataflows", + "settings": "settings", + "type": "type", + } + + def __init__( + self_, + type: ElasticCloudCcmInterfaceType, + authentication: Union[ElasticCloudCcmAuthentication, ElasticCloudCcmTokenAuth, UnsetType] = unset, + dataflows: Union[List[ElasticCloudCcmDataflow], UnsetType] = unset, + settings: Union[ElasticCloudCcmSettingsUpdate, UnsetType] = unset, + **kwargs, + ): + """ + Partial Elastic Cloud CCM interface for updates. + + :param authentication: Authentication methods supported by the Elastic Cloud CCM interface. Exactly one is set, selected by its ``type``. + :type authentication: ElasticCloudCcmAuthentication, optional + + :param dataflows: Dataflows for the Elastic Cloud CCM interface. + :type dataflows: [ElasticCloudCcmDataflow], optional + + :param settings: Partial Elastic Cloud CCM interface settings for updates. + :type settings: ElasticCloudCcmSettingsUpdate, optional + + :param type: Interface discriminator for the Elastic Cloud CCM interface. + :type type: ElasticCloudCcmInterfaceType + """ + if authentication is not unset: + kwargs["authentication"] = authentication + if dataflows is not unset: + kwargs["dataflows"] = dataflows + if settings is not unset: + kwargs["settings"] = settings + super().__init__(kwargs) + + self_.type = type diff --git a/src/datadog_api_client/v2/model/elastic_cloud_ccm_settings.py b/src/datadog_api_client/v2/model/elastic_cloud_ccm_settings.py new file mode 100644 index 0000000000..5794d460ee --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_ccm_settings.py @@ -0,0 +1,33 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class ElasticCloudCcmSettings(ModelNormal): + @cached_property + def openapi_types(_): + return { + "elastic_org_id": (str,), + } + + attribute_map = { + "elastic_org_id": "elastic_org_id", + } + + def __init__(self_, elastic_org_id: str, **kwargs): + """ + Elastic Cloud CCM interface settings. + + :param elastic_org_id: Your Elastic Cloud organization ID, found in your organization settings. + :type elastic_org_id: str + """ + super().__init__(kwargs) + + self_.elastic_org_id = elastic_org_id diff --git a/src/datadog_api_client/v2/model/elastic_cloud_ccm_settings_update.py b/src/datadog_api_client/v2/model/elastic_cloud_ccm_settings_update.py new file mode 100644 index 0000000000..fe4ff1b478 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_ccm_settings_update.py @@ -0,0 +1,36 @@ +# 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. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class ElasticCloudCcmSettingsUpdate(ModelNormal): + @cached_property + def openapi_types(_): + return { + "elastic_org_id": (str,), + } + + attribute_map = { + "elastic_org_id": "elastic_org_id", + } + + def __init__(self_, elastic_org_id: Union[str, UnsetType] = unset, **kwargs): + """ + Partial Elastic Cloud CCM interface settings for updates. + + :param elastic_org_id: Your Elastic Cloud organization ID, found in your organization settings. + :type elastic_org_id: str, optional + """ + if elastic_org_id is not unset: + kwargs["elastic_org_id"] = elastic_org_id + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/elastic_cloud_ccm_token_auth.py b/src/datadog_api_client/v2/model/elastic_cloud_ccm_token_auth.py new file mode 100644 index 0000000000..c022325b91 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_ccm_token_auth.py @@ -0,0 +1,46 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.elastic_cloud_ccm_token_auth_type import ElasticCloudCcmTokenAuthType + + +class ElasticCloudCcmTokenAuth(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.elastic_cloud_ccm_token_auth_type import ElasticCloudCcmTokenAuthType + + return { + "api_key": (str,), + "type": (ElasticCloudCcmTokenAuthType,), + } + + attribute_map = { + "api_key": "api_key", + "type": "type", + } + + def __init__(self_, api_key: str, type: ElasticCloudCcmTokenAuthType, **kwargs): + """ + Encrypted token (bearer token) authentication for Elastic Cloud CCM. + + :param api_key: Billing API key. An Elastic Cloud API key with read access to both Billing and Deployments. Create one under Organization settings > API Keys. + :type api_key: str + + :param type: Authentication method discriminator. + :type type: ElasticCloudCcmTokenAuthType + """ + super().__init__(kwargs) + + self_.api_key = api_key + self_.type = type diff --git a/src/datadog_api_client/v2/model/elastic_cloud_ccm_token_auth_type.py b/src/datadog_api_client/v2/model/elastic_cloud_ccm_token_auth_type.py new file mode 100644 index 0000000000..1e55936f04 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_ccm_token_auth_type.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ElasticCloudCcmTokenAuthType(ModelSimple): + """ + Authentication method discriminator. + + :param value: If omitted defaults to "bearer_token". Must be one of ["bearer_token"]. + :type value: str + """ + + allowed_values = { + "bearer_token", + } + BEARER_TOKEN: ClassVar["ElasticCloudCcmTokenAuthType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ElasticCloudCcmTokenAuthType.BEARER_TOKEN = ElasticCloudCcmTokenAuthType("bearer_token") diff --git a/src/datadog_api_client/v2/model/elastic_cloud_dataflow.py b/src/datadog_api_client/v2/model/elastic_cloud_dataflow.py new file mode 100644 index 0000000000..9ca5a1d54f --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_dataflow.py @@ -0,0 +1,67 @@ +# 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. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.elastic_cloud_dataflow_id import ElasticCloudDataflowId + from datadog_api_client.v2.model.integration_account_dataflow_status import IntegrationAccountDataflowStatus + + +class ElasticCloudDataflow(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.elastic_cloud_dataflow_id import ElasticCloudDataflowId + from datadog_api_client.v2.model.integration_account_dataflow_status import IntegrationAccountDataflowStatus + + return { + "enabled": (bool,), + "id": (ElasticCloudDataflowId,), + "status": (IntegrationAccountDataflowStatus,), + } + + attribute_map = { + "enabled": "enabled", + "id": "id", + "status": "status", + } + read_only_vars = { + "status", + } + + def __init__( + self_, + id: ElasticCloudDataflowId, + enabled: Union[bool, UnsetType] = unset, + status: Union[IntegrationAccountDataflowStatus, UnsetType] = unset, + **kwargs, + ): + """ + An Elastic Cloud dataflow toggle. The set of dataflow ids is fixed by the interface schema. + + :param enabled: Whether the dataflow is enabled. + :type enabled: bool, optional + + :param id: Identifier of an Elastic Cloud dataflow. + :type id: ElasticCloudDataflowId + + :param status: Read-only, server-computed collection status of a dataflow. + :type status: IntegrationAccountDataflowStatus, optional + """ + if enabled is not unset: + kwargs["enabled"] = enabled + if status is not unset: + kwargs["status"] = status + super().__init__(kwargs) + + self_.id = id diff --git a/src/datadog_api_client/v2/model/elastic_cloud_dataflow_id.py b/src/datadog_api_client/v2/model/elastic_cloud_dataflow_id.py new file mode 100644 index 0000000000..08006bae65 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_dataflow_id.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ElasticCloudDataflowId(ModelSimple): + """ + Identifier of an Elastic Cloud dataflow. + + :param value: If omitted defaults to "elastic-cloud-metrics". Must be one of ["elastic-cloud-metrics"]. + :type value: str + """ + + allowed_values = { + "elastic-cloud-metrics", + } + METRICS: ClassVar["ElasticCloudDataflowId"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ElasticCloudDataflowId.METRICS = ElasticCloudDataflowId("elastic-cloud-metrics") diff --git a/src/datadog_api_client/v2/model/elastic_cloud_integration.py b/src/datadog_api_client/v2/model/elastic_cloud_integration.py new file mode 100644 index 0000000000..8572fccf43 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_integration.py @@ -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. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.elastic_cloud_interface import ElasticCloudInterface + from datadog_api_client.v2.model.elastic_cloud_integration_type import ElasticCloudIntegrationType + from datadog_api_client.v2.model.elastic_cloud_monitoring_interface import ElasticCloudMonitoringInterface + from datadog_api_client.v2.model.elastic_cloud_ccm_interface import ElasticCloudCcmInterface + + +class ElasticCloudIntegration(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.elastic_cloud_interface import ElasticCloudInterface + from datadog_api_client.v2.model.elastic_cloud_integration_type import ElasticCloudIntegrationType + + return { + "interface": (ElasticCloudInterface,), + "type": (ElasticCloudIntegrationType,), + } + + attribute_map = { + "interface": "interface", + "type": "type", + } + + def __init__( + self_, + interface: Union[ElasticCloudInterface, ElasticCloudMonitoringInterface, ElasticCloudCcmInterface], + type: ElasticCloudIntegrationType, + **kwargs, + ): + """ + Elastic Cloud integration configuration. + + :param interface: Elastic Cloud interface (source-type). Exactly one interface variant is set, selected by its ``type``. + :type interface: ElasticCloudInterface + + :param type: Integration discriminator for Elastic Cloud. + :type type: ElasticCloudIntegrationType + """ + super().__init__(kwargs) + + self_.interface = interface + self_.type = type diff --git a/src/datadog_api_client/v2/model/elastic_cloud_integration_type.py b/src/datadog_api_client/v2/model/elastic_cloud_integration_type.py new file mode 100644 index 0000000000..47768107a9 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_integration_type.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ElasticCloudIntegrationType(ModelSimple): + """ + Integration discriminator for Elastic Cloud. + + :param value: If omitted defaults to "elastic-cloud". Must be one of ["elastic-cloud"]. + :type value: str + """ + + allowed_values = { + "elastic-cloud", + } + ELASTIC_CLOUD: ClassVar["ElasticCloudIntegrationType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ElasticCloudIntegrationType.ELASTIC_CLOUD = ElasticCloudIntegrationType("elastic-cloud") diff --git a/src/datadog_api_client/v2/model/elastic_cloud_integration_update.py b/src/datadog_api_client/v2/model/elastic_cloud_integration_update.py new file mode 100644 index 0000000000..d41f23428b --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_integration_update.py @@ -0,0 +1,65 @@ +# 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. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.elastic_cloud_interface_update import ElasticCloudInterfaceUpdate + from datadog_api_client.v2.model.elastic_cloud_integration_type import ElasticCloudIntegrationType + from datadog_api_client.v2.model.elastic_cloud_monitoring_interface_update import ( + ElasticCloudMonitoringInterfaceUpdate, + ) + from datadog_api_client.v2.model.elastic_cloud_ccm_interface_update import ElasticCloudCcmInterfaceUpdate + + +class ElasticCloudIntegrationUpdate(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.elastic_cloud_interface_update import ElasticCloudInterfaceUpdate + from datadog_api_client.v2.model.elastic_cloud_integration_type import ElasticCloudIntegrationType + + return { + "interface": (ElasticCloudInterfaceUpdate,), + "type": (ElasticCloudIntegrationType,), + } + + attribute_map = { + "interface": "interface", + "type": "type", + } + + def __init__( + self_, + type: ElasticCloudIntegrationType, + interface: Union[ + ElasticCloudInterfaceUpdate, + ElasticCloudMonitoringInterfaceUpdate, + ElasticCloudCcmInterfaceUpdate, + UnsetType, + ] = unset, + **kwargs, + ): + """ + Partial Elastic Cloud integration configuration for updates. + + :param interface: Partial Elastic Cloud interface for updates. Exactly one interface variant is set, selected by its ``type``. + :type interface: ElasticCloudInterfaceUpdate, optional + + :param type: Integration discriminator for Elastic Cloud. + :type type: ElasticCloudIntegrationType + """ + if interface is not unset: + kwargs["interface"] = interface + super().__init__(kwargs) + + self_.type = type diff --git a/src/datadog_api_client/v2/model/elastic_cloud_interface.py b/src/datadog_api_client/v2/model/elastic_cloud_interface.py new file mode 100644 index 0000000000..f24c7af86f --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_interface.py @@ -0,0 +1,49 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class ElasticCloudInterface(ModelComposed): + def __init__(self, **kwargs): + """ + Elastic Cloud interface (source-type). Exactly one interface variant is set, selected by its ``type``. + + :param authentication: Authentication methods supported by the Elastic Cloud interface. Exactly one is set, selected by its `type`. + :type authentication: ElasticCloudAuthentication + + :param dataflows: Dataflows for the Elastic Cloud monitoring interface. + :type dataflows: [ElasticCloudDataflow], optional + + :param settings: Elastic Cloud interface settings. + :type settings: ElasticCloudSettings, optional + + :param type: Interface discriminator for the Elastic Cloud monitoring interface. + :type type: ElasticCloudMonitoringInterfaceType + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + from datadog_api_client.v2.model.elastic_cloud_monitoring_interface import ElasticCloudMonitoringInterface + from datadog_api_client.v2.model.elastic_cloud_ccm_interface import ElasticCloudCcmInterface + + return { + "oneOf": [ + ElasticCloudMonitoringInterface, + ElasticCloudCcmInterface, + ], + } diff --git a/src/datadog_api_client/v2/model/elastic_cloud_interface_update.py b/src/datadog_api_client/v2/model/elastic_cloud_interface_update.py new file mode 100644 index 0000000000..1e313522c7 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_interface_update.py @@ -0,0 +1,51 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class ElasticCloudInterfaceUpdate(ModelComposed): + def __init__(self, **kwargs): + """ + Partial Elastic Cloud interface for updates. Exactly one interface variant is set, selected by its ``type``. + + :param authentication: Authentication methods supported by the Elastic Cloud interface. Exactly one is set, selected by its `type`. + :type authentication: ElasticCloudAuthentication, optional + + :param dataflows: Dataflows for the Elastic Cloud monitoring interface. + :type dataflows: [ElasticCloudDataflow], optional + + :param settings: Partial Elastic Cloud interface settings for updates. + :type settings: ElasticCloudSettingsUpdate, optional + + :param type: Interface discriminator for the Elastic Cloud monitoring interface. + :type type: ElasticCloudMonitoringInterfaceType + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + from datadog_api_client.v2.model.elastic_cloud_monitoring_interface_update import ( + ElasticCloudMonitoringInterfaceUpdate, + ) + from datadog_api_client.v2.model.elastic_cloud_ccm_interface_update import ElasticCloudCcmInterfaceUpdate + + return { + "oneOf": [ + ElasticCloudMonitoringInterfaceUpdate, + ElasticCloudCcmInterfaceUpdate, + ], + } diff --git a/src/datadog_api_client/v2/model/elastic_cloud_monitoring_interface.py b/src/datadog_api_client/v2/model/elastic_cloud_monitoring_interface.py new file mode 100644 index 0000000000..94f35b8ca5 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_monitoring_interface.py @@ -0,0 +1,78 @@ +# 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. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.elastic_cloud_authentication import ElasticCloudAuthentication + from datadog_api_client.v2.model.elastic_cloud_dataflow import ElasticCloudDataflow + from datadog_api_client.v2.model.elastic_cloud_settings import ElasticCloudSettings + from datadog_api_client.v2.model.elastic_cloud_monitoring_interface_type import ElasticCloudMonitoringInterfaceType + from datadog_api_client.v2.model.elastic_cloud_basic_auth import ElasticCloudBasicAuth + + +class ElasticCloudMonitoringInterface(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.elastic_cloud_authentication import ElasticCloudAuthentication + from datadog_api_client.v2.model.elastic_cloud_dataflow import ElasticCloudDataflow + from datadog_api_client.v2.model.elastic_cloud_settings import ElasticCloudSettings + from datadog_api_client.v2.model.elastic_cloud_monitoring_interface_type import ( + ElasticCloudMonitoringInterfaceType, + ) + + return { + "authentication": (ElasticCloudAuthentication,), + "dataflows": ([ElasticCloudDataflow],), + "settings": (ElasticCloudSettings,), + "type": (ElasticCloudMonitoringInterfaceType,), + } + + attribute_map = { + "authentication": "authentication", + "dataflows": "dataflows", + "settings": "settings", + "type": "type", + } + + def __init__( + self_, + authentication: Union[ElasticCloudAuthentication, ElasticCloudBasicAuth], + type: ElasticCloudMonitoringInterfaceType, + dataflows: Union[List[ElasticCloudDataflow], UnsetType] = unset, + settings: Union[ElasticCloudSettings, UnsetType] = unset, + **kwargs, + ): + """ + Elastic Cloud monitoring interface (source-type) configuration. + + :param authentication: Authentication methods supported by the Elastic Cloud interface. Exactly one is set, selected by its ``type``. + :type authentication: ElasticCloudAuthentication + + :param dataflows: Dataflows for the Elastic Cloud monitoring interface. + :type dataflows: [ElasticCloudDataflow], optional + + :param settings: Elastic Cloud interface settings. + :type settings: ElasticCloudSettings, optional + + :param type: Interface discriminator for the Elastic Cloud monitoring interface. + :type type: ElasticCloudMonitoringInterfaceType + """ + if dataflows is not unset: + kwargs["dataflows"] = dataflows + if settings is not unset: + kwargs["settings"] = settings + super().__init__(kwargs) + + self_.authentication = authentication + self_.type = type diff --git a/src/datadog_api_client/v2/model/elastic_cloud_monitoring_interface_type.py b/src/datadog_api_client/v2/model/elastic_cloud_monitoring_interface_type.py new file mode 100644 index 0000000000..ec7160966f --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_monitoring_interface_type.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ElasticCloudMonitoringInterfaceType(ModelSimple): + """ + Interface discriminator for the Elastic Cloud monitoring interface. + + :param value: If omitted defaults to "elastic-cloud". Must be one of ["elastic-cloud"]. + :type value: str + """ + + allowed_values = { + "elastic-cloud", + } + ELASTIC_CLOUD: ClassVar["ElasticCloudMonitoringInterfaceType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ElasticCloudMonitoringInterfaceType.ELASTIC_CLOUD = ElasticCloudMonitoringInterfaceType("elastic-cloud") diff --git a/src/datadog_api_client/v2/model/elastic_cloud_monitoring_interface_update.py b/src/datadog_api_client/v2/model/elastic_cloud_monitoring_interface_update.py new file mode 100644 index 0000000000..e4c9d5a7a3 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_monitoring_interface_update.py @@ -0,0 +1,79 @@ +# 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. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.elastic_cloud_authentication import ElasticCloudAuthentication + from datadog_api_client.v2.model.elastic_cloud_dataflow import ElasticCloudDataflow + from datadog_api_client.v2.model.elastic_cloud_settings_update import ElasticCloudSettingsUpdate + from datadog_api_client.v2.model.elastic_cloud_monitoring_interface_type import ElasticCloudMonitoringInterfaceType + from datadog_api_client.v2.model.elastic_cloud_basic_auth import ElasticCloudBasicAuth + + +class ElasticCloudMonitoringInterfaceUpdate(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.elastic_cloud_authentication import ElasticCloudAuthentication + from datadog_api_client.v2.model.elastic_cloud_dataflow import ElasticCloudDataflow + from datadog_api_client.v2.model.elastic_cloud_settings_update import ElasticCloudSettingsUpdate + from datadog_api_client.v2.model.elastic_cloud_monitoring_interface_type import ( + ElasticCloudMonitoringInterfaceType, + ) + + return { + "authentication": (ElasticCloudAuthentication,), + "dataflows": ([ElasticCloudDataflow],), + "settings": (ElasticCloudSettingsUpdate,), + "type": (ElasticCloudMonitoringInterfaceType,), + } + + attribute_map = { + "authentication": "authentication", + "dataflows": "dataflows", + "settings": "settings", + "type": "type", + } + + def __init__( + self_, + type: ElasticCloudMonitoringInterfaceType, + authentication: Union[ElasticCloudAuthentication, ElasticCloudBasicAuth, UnsetType] = unset, + dataflows: Union[List[ElasticCloudDataflow], UnsetType] = unset, + settings: Union[ElasticCloudSettingsUpdate, UnsetType] = unset, + **kwargs, + ): + """ + Partial Elastic Cloud monitoring interface for updates. + + :param authentication: Authentication methods supported by the Elastic Cloud interface. Exactly one is set, selected by its ``type``. + :type authentication: ElasticCloudAuthentication, optional + + :param dataflows: Dataflows for the Elastic Cloud monitoring interface. + :type dataflows: [ElasticCloudDataflow], optional + + :param settings: Partial Elastic Cloud interface settings for updates. + :type settings: ElasticCloudSettingsUpdate, optional + + :param type: Interface discriminator for the Elastic Cloud monitoring interface. + :type type: ElasticCloudMonitoringInterfaceType + """ + if authentication is not unset: + kwargs["authentication"] = authentication + if dataflows is not unset: + kwargs["dataflows"] = dataflows + if settings is not unset: + kwargs["settings"] = settings + super().__init__(kwargs) + + self_.type = type diff --git a/src/datadog_api_client/v2/model/elastic_cloud_settings.py b/src/datadog_api_client/v2/model/elastic_cloud_settings.py new file mode 100644 index 0000000000..25e9d90ed5 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_settings.py @@ -0,0 +1,104 @@ +# 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. +from __future__ import annotations + +from typing import List, Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class ElasticCloudSettings(ModelNormal): + @cached_property + def openapi_types(_): + return { + "cat_allocation_stats_enabled": (bool,), + "detailed_index_stats_enabled": (bool,), + "index_stats_enabled": (bool,), + "pending_task_stats_enabled": (bool,), + "pshard_graceful_to_enabled": (bool,), + "pshard_stats_enabled": (bool,), + "slm_stats_enabled": (bool,), + "tags": ([str],), + "url": (str,), + } + + attribute_map = { + "cat_allocation_stats_enabled": "cat_allocation_stats_enabled", + "detailed_index_stats_enabled": "detailed_index_stats_enabled", + "index_stats_enabled": "index_stats_enabled", + "pending_task_stats_enabled": "pending_task_stats_enabled", + "pshard_graceful_to_enabled": "pshard_graceful_to_enabled", + "pshard_stats_enabled": "pshard_stats_enabled", + "slm_stats_enabled": "slm_stats_enabled", + "tags": "tags", + "url": "url", + } + + def __init__( + self_, + url: str, + cat_allocation_stats_enabled: Union[bool, UnsetType] = unset, + detailed_index_stats_enabled: Union[bool, UnsetType] = unset, + index_stats_enabled: Union[bool, UnsetType] = unset, + pending_task_stats_enabled: Union[bool, UnsetType] = unset, + pshard_graceful_to_enabled: Union[bool, UnsetType] = unset, + pshard_stats_enabled: Union[bool, UnsetType] = unset, + slm_stats_enabled: Union[bool, UnsetType] = unset, + tags: Union[List[str], UnsetType] = unset, + **kwargs, + ): + """ + Elastic Cloud interface settings. + + :param cat_allocation_stats_enabled: Enable to collect shard allocation metrics. + :type cat_allocation_stats_enabled: bool, optional + + :param detailed_index_stats_enabled: Enable to collect index-specific stats. + :type detailed_index_stats_enabled: bool, optional + + :param index_stats_enabled: Enable to collect metrics about the indices in your cluster. + :type index_stats_enabled: bool, optional + + :param pending_task_stats_enabled: Enable to collect metrics about pending tasks. + :type pending_task_stats_enabled: bool, optional + + :param pshard_graceful_to_enabled: Enable to collect all metrics even if primary shard metric collection times out. + :type pshard_graceful_to_enabled: bool, optional + + :param pshard_stats_enabled: Enable to collect metrics over primary shards. + :type pshard_stats_enabled: bool, optional + + :param slm_stats_enabled: Enable to collect snapshot lifecycle management metrics. + :type slm_stats_enabled: bool, optional + + :param tags: Custom tags for this deployment. + :type tags: [str], optional + + :param url: Deployment URL. + :type url: str + """ + if cat_allocation_stats_enabled is not unset: + kwargs["cat_allocation_stats_enabled"] = cat_allocation_stats_enabled + if detailed_index_stats_enabled is not unset: + kwargs["detailed_index_stats_enabled"] = detailed_index_stats_enabled + if index_stats_enabled is not unset: + kwargs["index_stats_enabled"] = index_stats_enabled + if pending_task_stats_enabled is not unset: + kwargs["pending_task_stats_enabled"] = pending_task_stats_enabled + if pshard_graceful_to_enabled is not unset: + kwargs["pshard_graceful_to_enabled"] = pshard_graceful_to_enabled + if pshard_stats_enabled is not unset: + kwargs["pshard_stats_enabled"] = pshard_stats_enabled + if slm_stats_enabled is not unset: + kwargs["slm_stats_enabled"] = slm_stats_enabled + if tags is not unset: + kwargs["tags"] = tags + super().__init__(kwargs) + + self_.url = url diff --git a/src/datadog_api_client/v2/model/elastic_cloud_settings_update.py b/src/datadog_api_client/v2/model/elastic_cloud_settings_update.py new file mode 100644 index 0000000000..c335318c70 --- /dev/null +++ b/src/datadog_api_client/v2/model/elastic_cloud_settings_update.py @@ -0,0 +1,104 @@ +# 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. +from __future__ import annotations + +from typing import List, Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class ElasticCloudSettingsUpdate(ModelNormal): + @cached_property + def openapi_types(_): + return { + "cat_allocation_stats_enabled": (bool,), + "detailed_index_stats_enabled": (bool,), + "index_stats_enabled": (bool,), + "pending_task_stats_enabled": (bool,), + "pshard_graceful_to_enabled": (bool,), + "pshard_stats_enabled": (bool,), + "slm_stats_enabled": (bool,), + "tags": ([str],), + "url": (str,), + } + + attribute_map = { + "cat_allocation_stats_enabled": "cat_allocation_stats_enabled", + "detailed_index_stats_enabled": "detailed_index_stats_enabled", + "index_stats_enabled": "index_stats_enabled", + "pending_task_stats_enabled": "pending_task_stats_enabled", + "pshard_graceful_to_enabled": "pshard_graceful_to_enabled", + "pshard_stats_enabled": "pshard_stats_enabled", + "slm_stats_enabled": "slm_stats_enabled", + "tags": "tags", + "url": "url", + } + + def __init__( + self_, + cat_allocation_stats_enabled: Union[bool, UnsetType] = unset, + detailed_index_stats_enabled: Union[bool, UnsetType] = unset, + index_stats_enabled: Union[bool, UnsetType] = unset, + pending_task_stats_enabled: Union[bool, UnsetType] = unset, + pshard_graceful_to_enabled: Union[bool, UnsetType] = unset, + pshard_stats_enabled: Union[bool, UnsetType] = unset, + slm_stats_enabled: Union[bool, UnsetType] = unset, + tags: Union[List[str], UnsetType] = unset, + url: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + Partial Elastic Cloud interface settings for updates. + + :param cat_allocation_stats_enabled: Enable to collect shard allocation metrics. + :type cat_allocation_stats_enabled: bool, optional + + :param detailed_index_stats_enabled: Enable to collect index-specific stats. + :type detailed_index_stats_enabled: bool, optional + + :param index_stats_enabled: Enable to collect metrics about the indices in your cluster. + :type index_stats_enabled: bool, optional + + :param pending_task_stats_enabled: Enable to collect metrics about pending tasks. + :type pending_task_stats_enabled: bool, optional + + :param pshard_graceful_to_enabled: Enable to collect all metrics even if primary shard metric collection times out. + :type pshard_graceful_to_enabled: bool, optional + + :param pshard_stats_enabled: Enable to collect metrics over primary shards. + :type pshard_stats_enabled: bool, optional + + :param slm_stats_enabled: Enable to collect snapshot lifecycle management metrics. + :type slm_stats_enabled: bool, optional + + :param tags: Custom tags for this deployment. + :type tags: [str], optional + + :param url: Deployment URL. + :type url: str, optional + """ + if cat_allocation_stats_enabled is not unset: + kwargs["cat_allocation_stats_enabled"] = cat_allocation_stats_enabled + if detailed_index_stats_enabled is not unset: + kwargs["detailed_index_stats_enabled"] = detailed_index_stats_enabled + if index_stats_enabled is not unset: + kwargs["index_stats_enabled"] = index_stats_enabled + if pending_task_stats_enabled is not unset: + kwargs["pending_task_stats_enabled"] = pending_task_stats_enabled + if pshard_graceful_to_enabled is not unset: + kwargs["pshard_graceful_to_enabled"] = pshard_graceful_to_enabled + if pshard_stats_enabled is not unset: + kwargs["pshard_stats_enabled"] = pshard_stats_enabled + if slm_stats_enabled is not unset: + kwargs["slm_stats_enabled"] = slm_stats_enabled + if tags is not unset: + kwargs["tags"] = tags + if url is not unset: + kwargs["url"] = url + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/integration_account_attributes.py b/src/datadog_api_client/v2/model/integration_account_attributes.py new file mode 100644 index 0000000000..76ef9f403f --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_attributes.py @@ -0,0 +1,68 @@ +# 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. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.integration_account_integration import IntegrationAccountIntegration + from datadog_api_client.v2.model.integration_account_permissions import IntegrationAccountPermissions + from datadog_api_client.v2.model.twilio_integration import TwilioIntegration + from datadog_api_client.v2.model.elastic_cloud_integration import ElasticCloudIntegration + + +class IntegrationAccountAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.integration_account_integration import IntegrationAccountIntegration + from datadog_api_client.v2.model.integration_account_permissions import IntegrationAccountPermissions + + return { + "integration": (IntegrationAccountIntegration,), + "name": (str,), + "permissions": (IntegrationAccountPermissions,), + } + + attribute_map = { + "integration": "integration", + "name": "name", + "permissions": "permissions", + } + read_only_vars = { + "permissions", + } + + def __init__( + self_, + integration: Union[IntegrationAccountIntegration, TwilioIntegration, ElasticCloudIntegration], + name: str, + permissions: Union[IntegrationAccountPermissions, UnsetType] = unset, + **kwargs, + ): + """ + Attributes of an integration account. The ``integration`` field is a strongly-typed, per-integration union. + + :param integration: Strongly-typed, per-integration configuration. Exactly one integration variant is set, selected by its ``type``. + :type integration: IntegrationAccountIntegration + + :param name: Human-readable name of the account. + :type name: str + + :param permissions: Read-only permission information for the account, derived from its restriction policy. + :type permissions: IntegrationAccountPermissions, optional + """ + if permissions is not unset: + kwargs["permissions"] = permissions + super().__init__(kwargs) + + self_.integration = integration + self_.name = name diff --git a/src/datadog_api_client/v2/model/integration_account_create_data.py b/src/datadog_api_client/v2/model/integration_account_create_data.py new file mode 100644 index 0000000000..83fc838ee8 --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_create_data.py @@ -0,0 +1,48 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.integration_account_attributes import IntegrationAccountAttributes + from datadog_api_client.v2.model.integration_account_type import IntegrationAccountType + + +class IntegrationAccountCreateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.integration_account_attributes import IntegrationAccountAttributes + from datadog_api_client.v2.model.integration_account_type import IntegrationAccountType + + return { + "attributes": (IntegrationAccountAttributes,), + "type": (IntegrationAccountType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: IntegrationAccountAttributes, type: IntegrationAccountType, **kwargs): + """ + Data envelope for creating an integration account. + + :param attributes: Attributes of an integration account. The ``integration`` field is a strongly-typed, per-integration union. + :type attributes: IntegrationAccountAttributes + + :param type: JSON:API resource type for an integration account. Always ``integration-account``. + :type type: IntegrationAccountType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/integration_account_data.py b/src/datadog_api_client/v2/model/integration_account_data.py new file mode 100644 index 0000000000..54fa31a57d --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_data.py @@ -0,0 +1,57 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.integration_account_attributes import IntegrationAccountAttributes + from datadog_api_client.v2.model.integration_account_type import IntegrationAccountType + + +class IntegrationAccountData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.integration_account_attributes import IntegrationAccountAttributes + from datadog_api_client.v2.model.integration_account_type import IntegrationAccountType + + return { + "attributes": (IntegrationAccountAttributes,), + "id": (str,), + "type": (IntegrationAccountType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + read_only_vars = { + "id", + } + + def __init__(self_, attributes: IntegrationAccountAttributes, id: str, type: IntegrationAccountType, **kwargs): + """ + Data envelope of an integration account, including server-assigned identity. + + :param attributes: Attributes of an integration account. The ``integration`` field is a strongly-typed, per-integration union. + :type attributes: IntegrationAccountAttributes + + :param id: Server-generated unique identifier of the integration account. + :type id: str + + :param type: JSON:API resource type for an integration account. Always ``integration-account``. + :type type: IntegrationAccountType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/integration_account_dataflow_health.py b/src/datadog_api_client/v2/model/integration_account_dataflow_health.py new file mode 100644 index 0000000000..2305100179 --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_dataflow_health.py @@ -0,0 +1,41 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class IntegrationAccountDataflowHealth(ModelSimple): + """ + Collection health of a single dataflow. + + :param value: Must be one of ["DATAFLOW_HEALTH_OK", "DATAFLOW_HEALTH_BROKEN", "DATAFLOW_HEALTH_UNKNOWN"]. + :type value: str + """ + + allowed_values = { + "DATAFLOW_HEALTH_OK", + "DATAFLOW_HEALTH_BROKEN", + "DATAFLOW_HEALTH_UNKNOWN", + } + OK: ClassVar["IntegrationAccountDataflowHealth"] + BROKEN: ClassVar["IntegrationAccountDataflowHealth"] + UNKNOWN: ClassVar["IntegrationAccountDataflowHealth"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +IntegrationAccountDataflowHealth.OK = IntegrationAccountDataflowHealth("DATAFLOW_HEALTH_OK") +IntegrationAccountDataflowHealth.BROKEN = IntegrationAccountDataflowHealth("DATAFLOW_HEALTH_BROKEN") +IntegrationAccountDataflowHealth.UNKNOWN = IntegrationAccountDataflowHealth("DATAFLOW_HEALTH_UNKNOWN") diff --git a/src/datadog_api_client/v2/model/integration_account_dataflow_status.py b/src/datadog_api_client/v2/model/integration_account_dataflow_status.py new file mode 100644 index 0000000000..f7abfe69fc --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_dataflow_status.py @@ -0,0 +1,63 @@ +# 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. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.integration_account_dataflow_health import IntegrationAccountDataflowHealth + + +class IntegrationAccountDataflowStatus(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.integration_account_dataflow_health import IntegrationAccountDataflowHealth + + return { + "health": (IntegrationAccountDataflowHealth,), + "message": (str,), + "updated_at": (datetime,), + } + + attribute_map = { + "health": "health", + "message": "message", + "updated_at": "updated_at", + } + + def __init__( + self_, + health: Union[IntegrationAccountDataflowHealth, UnsetType] = unset, + message: Union[str, UnsetType] = unset, + updated_at: Union[datetime, UnsetType] = unset, + **kwargs, + ): + """ + Read-only, server-computed collection status of a dataflow. + + :param health: Collection health of a single dataflow. + :type health: IntegrationAccountDataflowHealth, optional + + :param message: Human-readable detail, populated when the dataflow is not healthy. + :type message: str, optional + + :param updated_at: Time the status was last computed. + :type updated_at: datetime, optional + """ + if health is not unset: + kwargs["health"] = health + if message is not unset: + kwargs["message"] = message + if updated_at is not unset: + kwargs["updated_at"] = updated_at + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/integration_account_integration.py b/src/datadog_api_client/v2/model/integration_account_integration.py new file mode 100644 index 0000000000..fd6ddcba07 --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_integration.py @@ -0,0 +1,43 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class IntegrationAccountIntegration(ModelComposed): + def __init__(self, **kwargs): + """ + Strongly-typed, per-integration configuration. Exactly one integration variant is set, selected by its ``type``. + + :param interface: Twilio interface (source-type) configuration. + :type interface: TwilioInterface + + :param type: Integration discriminator for Twilio. + :type type: TwilioIntegrationType + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + from datadog_api_client.v2.model.twilio_integration import TwilioIntegration + from datadog_api_client.v2.model.elastic_cloud_integration import ElasticCloudIntegration + + return { + "oneOf": [ + TwilioIntegration, + ElasticCloudIntegration, + ], + } diff --git a/src/datadog_api_client/v2/model/integration_account_integration_id.py b/src/datadog_api_client/v2/model/integration_account_integration_id.py new file mode 100644 index 0000000000..aad121ffe6 --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_integration_id.py @@ -0,0 +1,38 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class IntegrationAccountIntegrationId(ModelSimple): + """ + Supported integration ids (the `integration_id` path scope). + + :param value: Must be one of ["elastic-cloud", "twilio"]. + :type value: str + """ + + allowed_values = { + "elastic-cloud", + "twilio", + } + ELASTIC_CLOUD: ClassVar["IntegrationAccountIntegrationId"] + TWILIO: ClassVar["IntegrationAccountIntegrationId"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +IntegrationAccountIntegrationId.ELASTIC_CLOUD = IntegrationAccountIntegrationId("elastic-cloud") +IntegrationAccountIntegrationId.TWILIO = IntegrationAccountIntegrationId("twilio") diff --git a/src/datadog_api_client/v2/model/integration_account_integration_update.py b/src/datadog_api_client/v2/model/integration_account_integration_update.py new file mode 100644 index 0000000000..13d96693d9 --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_integration_update.py @@ -0,0 +1,43 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class IntegrationAccountIntegrationUpdate(ModelComposed): + def __init__(self, **kwargs): + """ + Strongly-typed, per-integration partial configuration. Exactly one integration variant is set, selected by its ``type``. + + :param interface: Partial Twilio interface (source-type) configuration for updates. + :type interface: TwilioInterfaceUpdate, optional + + :param type: Integration discriminator for Twilio. + :type type: TwilioIntegrationType + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + from datadog_api_client.v2.model.twilio_integration_update import TwilioIntegrationUpdate + from datadog_api_client.v2.model.elastic_cloud_integration_update import ElasticCloudIntegrationUpdate + + return { + "oneOf": [ + TwilioIntegrationUpdate, + ElasticCloudIntegrationUpdate, + ], + } diff --git a/src/datadog_api_client/v2/model/integration_account_interface_id.py b/src/datadog_api_client/v2/model/integration_account_interface_id.py new file mode 100644 index 0000000000..1c35a1a2f4 --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_interface_id.py @@ -0,0 +1,41 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class IntegrationAccountInterfaceId(ModelSimple): + """ + Supported interface (source-type) ids (the `interface_id` path scope). + + :param value: Must be one of ["elastic-cloud", "elastic-cloud-ccm", "twilio"]. + :type value: str + """ + + allowed_values = { + "elastic-cloud", + "elastic-cloud-ccm", + "twilio", + } + ELASTIC_CLOUD: ClassVar["IntegrationAccountInterfaceId"] + ELASTIC_CLOUD_CCM: ClassVar["IntegrationAccountInterfaceId"] + TWILIO: ClassVar["IntegrationAccountInterfaceId"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +IntegrationAccountInterfaceId.ELASTIC_CLOUD = IntegrationAccountInterfaceId("elastic-cloud") +IntegrationAccountInterfaceId.ELASTIC_CLOUD_CCM = IntegrationAccountInterfaceId("elastic-cloud-ccm") +IntegrationAccountInterfaceId.TWILIO = IntegrationAccountInterfaceId("twilio") diff --git a/src/datadog_api_client/v2/model/integration_account_permissions.py b/src/datadog_api_client/v2/model/integration_account_permissions.py new file mode 100644 index 0000000000..5a8b1677b2 --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_permissions.py @@ -0,0 +1,49 @@ +# 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. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class IntegrationAccountPermissions(ModelNormal): + @cached_property + def openapi_types(_): + return { + "resource_id": (str,), + "user_can_edit": (bool,), + } + + attribute_map = { + "resource_id": "resource_id", + "user_can_edit": "user_can_edit", + } + read_only_vars = { + "resource_id", + "user_can_edit", + } + + def __init__( + self_, resource_id: Union[str, UnsetType] = unset, user_can_edit: Union[bool, UnsetType] = unset, **kwargs + ): + """ + Read-only permission information for the account, derived from its restriction policy. + + :param resource_id: Restriction-policy resource identifier of this account. + :type resource_id: str, optional + + :param user_can_edit: Whether the requesting user may edit this account. + :type user_can_edit: bool, optional + """ + if resource_id is not unset: + kwargs["resource_id"] = resource_id + if user_can_edit is not unset: + kwargs["user_can_edit"] = user_can_edit + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/integration_account_request.py b/src/datadog_api_client/v2/model/integration_account_request.py new file mode 100644 index 0000000000..fa84f9539f --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_request.py @@ -0,0 +1,40 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.integration_account_create_data import IntegrationAccountCreateData + + +class IntegrationAccountRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.integration_account_create_data import IntegrationAccountCreateData + + return { + "data": (IntegrationAccountCreateData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: IntegrationAccountCreateData, **kwargs): + """ + Request payload to create an integration account. + + :param data: Data envelope for creating an integration account. + :type data: IntegrationAccountCreateData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/integration_account_response.py b/src/datadog_api_client/v2/model/integration_account_response.py new file mode 100644 index 0000000000..9ce97a3d01 --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_response.py @@ -0,0 +1,42 @@ +# 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. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.integration_account_data import IntegrationAccountData + + +class IntegrationAccountResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.integration_account_data import IntegrationAccountData + + return { + "data": (IntegrationAccountData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: Union[IntegrationAccountData, UnsetType] = unset, **kwargs): + """ + Response payload for a single integration account. + + :param data: Data envelope of an integration account, including server-assigned identity. + :type data: IntegrationAccountData, optional + """ + if data is not unset: + kwargs["data"] = data + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/integration_account_type.py b/src/datadog_api_client/v2/model/integration_account_type.py new file mode 100644 index 0000000000..dab9d24d56 --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_type.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class IntegrationAccountType(ModelSimple): + """ + JSON:API resource type for an integration account. Always `integration-account`. + + :param value: If omitted defaults to "integration-account". Must be one of ["integration-account"]. + :type value: str + """ + + allowed_values = { + "integration-account", + } + INTEGRATION_ACCOUNT: ClassVar["IntegrationAccountType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +IntegrationAccountType.INTEGRATION_ACCOUNT = IntegrationAccountType("integration-account") diff --git a/src/datadog_api_client/v2/model/integration_account_update_attributes.py b/src/datadog_api_client/v2/model/integration_account_update_attributes.py new file mode 100644 index 0000000000..c20ba86d15 --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_update_attributes.py @@ -0,0 +1,60 @@ +# 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. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.integration_account_integration_update import IntegrationAccountIntegrationUpdate + from datadog_api_client.v2.model.twilio_integration_update import TwilioIntegrationUpdate + from datadog_api_client.v2.model.elastic_cloud_integration_update import ElasticCloudIntegrationUpdate + + +class IntegrationAccountUpdateAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.integration_account_integration_update import ( + IntegrationAccountIntegrationUpdate, + ) + + return { + "integration": (IntegrationAccountIntegrationUpdate,), + "name": (str,), + } + + attribute_map = { + "integration": "integration", + "name": "name", + } + + def __init__( + self_, + integration: Union[ + IntegrationAccountIntegrationUpdate, TwilioIntegrationUpdate, ElasticCloudIntegrationUpdate, UnsetType + ] = unset, + name: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + Updatable attributes of an integration account. Every field is optional; only the fields provided are changed. + + :param integration: Strongly-typed, per-integration partial configuration. Exactly one integration variant is set, selected by its ``type``. + :type integration: IntegrationAccountIntegrationUpdate, optional + + :param name: Human-readable name of the account. + :type name: str, optional + """ + if integration is not unset: + kwargs["integration"] = integration + if name is not unset: + kwargs["name"] = name + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/integration_account_update_data.py b/src/datadog_api_client/v2/model/integration_account_update_data.py new file mode 100644 index 0000000000..8a68fc994c --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_update_data.py @@ -0,0 +1,48 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.integration_account_update_attributes import IntegrationAccountUpdateAttributes + from datadog_api_client.v2.model.integration_account_type import IntegrationAccountType + + +class IntegrationAccountUpdateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.integration_account_update_attributes import IntegrationAccountUpdateAttributes + from datadog_api_client.v2.model.integration_account_type import IntegrationAccountType + + return { + "attributes": (IntegrationAccountUpdateAttributes,), + "type": (IntegrationAccountType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: IntegrationAccountUpdateAttributes, type: IntegrationAccountType, **kwargs): + """ + Data envelope for updating an integration account. + + :param attributes: Updatable attributes of an integration account. Every field is optional; only the fields provided are changed. + :type attributes: IntegrationAccountUpdateAttributes + + :param type: JSON:API resource type for an integration account. Always ``integration-account``. + :type type: IntegrationAccountType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/integration_account_update_request.py b/src/datadog_api_client/v2/model/integration_account_update_request.py new file mode 100644 index 0000000000..5a31819f70 --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_account_update_request.py @@ -0,0 +1,40 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.integration_account_update_data import IntegrationAccountUpdateData + + +class IntegrationAccountUpdateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.integration_account_update_data import IntegrationAccountUpdateData + + return { + "data": (IntegrationAccountUpdateData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: IntegrationAccountUpdateData, **kwargs): + """ + Request payload to update an integration account as a partial merge. + + :param data: Data envelope for updating an integration account. + :type data: IntegrationAccountUpdateData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/integration_accounts_response.py b/src/datadog_api_client/v2/model/integration_accounts_response.py new file mode 100644 index 0000000000..7ec4268876 --- /dev/null +++ b/src/datadog_api_client/v2/model/integration_accounts_response.py @@ -0,0 +1,42 @@ +# 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. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.integration_account_data import IntegrationAccountData + + +class IntegrationAccountsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.integration_account_data import IntegrationAccountData + + return { + "data": ([IntegrationAccountData],), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: Union[List[IntegrationAccountData], UnsetType] = unset, **kwargs): + """ + Response payload for a list of integration accounts. + + :param data: List of integration accounts. + :type data: [IntegrationAccountData], optional + """ + if data is not unset: + kwargs["data"] = data + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/twilio_authentication.py b/src/datadog_api_client/v2/model/twilio_authentication.py new file mode 100644 index 0000000000..5bd4d30a09 --- /dev/null +++ b/src/datadog_api_client/v2/model/twilio_authentication.py @@ -0,0 +1,44 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class TwilioAuthentication(ModelComposed): + def __init__(self, **kwargs): + """ + Authentication methods supported by the Twilio interface. Exactly one is set, selected by its ``type``. + + :param api_key: Twilio API Key SID for authentication. Create from Twilio Console > Account > API Keys & Tokens. + :type api_key: str + + :param api_key_token: Twilio API Key Secret (token) corresponding to the API Key SID. + :type api_key_token: str + + :param type: Authentication method discriminator. + :type type: TwilioBasicAuthType + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + from datadog_api_client.v2.model.twilio_basic_auth import TwilioBasicAuth + + return { + "oneOf": [ + TwilioBasicAuth, + ], + } diff --git a/src/datadog_api_client/v2/model/twilio_basic_auth.py b/src/datadog_api_client/v2/model/twilio_basic_auth.py new file mode 100644 index 0000000000..34beb6064b --- /dev/null +++ b/src/datadog_api_client/v2/model/twilio_basic_auth.py @@ -0,0 +1,52 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.twilio_basic_auth_type import TwilioBasicAuthType + + +class TwilioBasicAuth(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.twilio_basic_auth_type import TwilioBasicAuthType + + return { + "api_key": (str,), + "api_key_token": (str,), + "type": (TwilioBasicAuthType,), + } + + attribute_map = { + "api_key": "api_key", + "api_key_token": "api_key_token", + "type": "type", + } + + def __init__(self_, api_key: str, api_key_token: str, type: TwilioBasicAuthType, **kwargs): + """ + API Key & Secret authentication for Twilio. + + :param api_key: Twilio API Key SID for authentication. Create from Twilio Console > Account > API Keys & Tokens. + :type api_key: str + + :param api_key_token: Twilio API Key Secret (token) corresponding to the API Key SID. + :type api_key_token: str + + :param type: Authentication method discriminator. + :type type: TwilioBasicAuthType + """ + super().__init__(kwargs) + + self_.api_key = api_key + self_.api_key_token = api_key_token + self_.type = type diff --git a/src/datadog_api_client/v2/model/twilio_basic_auth_type.py b/src/datadog_api_client/v2/model/twilio_basic_auth_type.py new file mode 100644 index 0000000000..11a4b4c14f --- /dev/null +++ b/src/datadog_api_client/v2/model/twilio_basic_auth_type.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TwilioBasicAuthType(ModelSimple): + """ + Authentication method discriminator. + + :param value: If omitted defaults to "basic". Must be one of ["basic"]. + :type value: str + """ + + allowed_values = { + "basic", + } + BASIC: ClassVar["TwilioBasicAuthType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TwilioBasicAuthType.BASIC = TwilioBasicAuthType("basic") diff --git a/src/datadog_api_client/v2/model/twilio_dataflow.py b/src/datadog_api_client/v2/model/twilio_dataflow.py new file mode 100644 index 0000000000..f40e2df109 --- /dev/null +++ b/src/datadog_api_client/v2/model/twilio_dataflow.py @@ -0,0 +1,67 @@ +# 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. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.twilio_dataflow_id import TwilioDataflowId + from datadog_api_client.v2.model.integration_account_dataflow_status import IntegrationAccountDataflowStatus + + +class TwilioDataflow(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.twilio_dataflow_id import TwilioDataflowId + from datadog_api_client.v2.model.integration_account_dataflow_status import IntegrationAccountDataflowStatus + + return { + "enabled": (bool,), + "id": (TwilioDataflowId,), + "status": (IntegrationAccountDataflowStatus,), + } + + attribute_map = { + "enabled": "enabled", + "id": "id", + "status": "status", + } + read_only_vars = { + "status", + } + + def __init__( + self_, + id: TwilioDataflowId, + enabled: Union[bool, UnsetType] = unset, + status: Union[IntegrationAccountDataflowStatus, UnsetType] = unset, + **kwargs, + ): + """ + A Twilio dataflow toggle. The set of dataflow ids is fixed by the interface schema. + + :param enabled: Whether the dataflow is enabled. + :type enabled: bool, optional + + :param id: Identifier of a Twilio dataflow. + :type id: TwilioDataflowId + + :param status: Read-only, server-computed collection status of a dataflow. + :type status: IntegrationAccountDataflowStatus, optional + """ + if enabled is not unset: + kwargs["enabled"] = enabled + if status is not unset: + kwargs["status"] = status + super().__init__(kwargs) + + self_.id = id diff --git a/src/datadog_api_client/v2/model/twilio_dataflow_id.py b/src/datadog_api_client/v2/model/twilio_dataflow_id.py new file mode 100644 index 0000000000..f504820b25 --- /dev/null +++ b/src/datadog_api_client/v2/model/twilio_dataflow_id.py @@ -0,0 +1,47 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TwilioDataflowId(ModelSimple): + """ + Identifier of a Twilio dataflow. + + :param value: Must be one of ["twilio-cloud-cost-metrics", "twilio-events-logs", "twilio-messages-logs", "twilio-alerts-logs", "twilio-call-summaries-logs"]. + :type value: str + """ + + allowed_values = { + "twilio-cloud-cost-metrics", + "twilio-events-logs", + "twilio-messages-logs", + "twilio-alerts-logs", + "twilio-call-summaries-logs", + } + CLOUD_COST_METRICS: ClassVar["TwilioDataflowId"] + EVENTS_LOGS: ClassVar["TwilioDataflowId"] + MESSAGES_LOGS: ClassVar["TwilioDataflowId"] + ALERTS_LOGS: ClassVar["TwilioDataflowId"] + CALL_SUMMARIES_LOGS: ClassVar["TwilioDataflowId"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TwilioDataflowId.CLOUD_COST_METRICS = TwilioDataflowId("twilio-cloud-cost-metrics") +TwilioDataflowId.EVENTS_LOGS = TwilioDataflowId("twilio-events-logs") +TwilioDataflowId.MESSAGES_LOGS = TwilioDataflowId("twilio-messages-logs") +TwilioDataflowId.ALERTS_LOGS = TwilioDataflowId("twilio-alerts-logs") +TwilioDataflowId.CALL_SUMMARIES_LOGS = TwilioDataflowId("twilio-call-summaries-logs") diff --git a/src/datadog_api_client/v2/model/twilio_integration.py b/src/datadog_api_client/v2/model/twilio_integration.py new file mode 100644 index 0000000000..72d670cff9 --- /dev/null +++ b/src/datadog_api_client/v2/model/twilio_integration.py @@ -0,0 +1,48 @@ +# 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. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.twilio_interface import TwilioInterface + from datadog_api_client.v2.model.twilio_integration_type import TwilioIntegrationType + + +class TwilioIntegration(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.twilio_interface import TwilioInterface + from datadog_api_client.v2.model.twilio_integration_type import TwilioIntegrationType + + return { + "interface": (TwilioInterface,), + "type": (TwilioIntegrationType,), + } + + attribute_map = { + "interface": "interface", + "type": "type", + } + + def __init__(self_, interface: TwilioInterface, type: TwilioIntegrationType, **kwargs): + """ + Twilio integration configuration. + + :param interface: Twilio interface (source-type) configuration. + :type interface: TwilioInterface + + :param type: Integration discriminator for Twilio. + :type type: TwilioIntegrationType + """ + super().__init__(kwargs) + + self_.interface = interface + self_.type = type diff --git a/src/datadog_api_client/v2/model/twilio_integration_type.py b/src/datadog_api_client/v2/model/twilio_integration_type.py new file mode 100644 index 0000000000..310805c931 --- /dev/null +++ b/src/datadog_api_client/v2/model/twilio_integration_type.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TwilioIntegrationType(ModelSimple): + """ + Integration discriminator for Twilio. + + :param value: If omitted defaults to "twilio". Must be one of ["twilio"]. + :type value: str + """ + + allowed_values = { + "twilio", + } + TWILIO: ClassVar["TwilioIntegrationType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TwilioIntegrationType.TWILIO = TwilioIntegrationType("twilio") diff --git a/src/datadog_api_client/v2/model/twilio_integration_update.py b/src/datadog_api_client/v2/model/twilio_integration_update.py new file mode 100644 index 0000000000..185c0be3fb --- /dev/null +++ b/src/datadog_api_client/v2/model/twilio_integration_update.py @@ -0,0 +1,53 @@ +# 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. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.twilio_interface_update import TwilioInterfaceUpdate + from datadog_api_client.v2.model.twilio_integration_type import TwilioIntegrationType + + +class TwilioIntegrationUpdate(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.twilio_interface_update import TwilioInterfaceUpdate + from datadog_api_client.v2.model.twilio_integration_type import TwilioIntegrationType + + return { + "interface": (TwilioInterfaceUpdate,), + "type": (TwilioIntegrationType,), + } + + attribute_map = { + "interface": "interface", + "type": "type", + } + + def __init__( + self_, type: TwilioIntegrationType, interface: Union[TwilioInterfaceUpdate, UnsetType] = unset, **kwargs + ): + """ + Partial Twilio integration configuration for updates. + + :param interface: Partial Twilio interface (source-type) configuration for updates. + :type interface: TwilioInterfaceUpdate, optional + + :param type: Integration discriminator for Twilio. + :type type: TwilioIntegrationType + """ + if interface is not unset: + kwargs["interface"] = interface + super().__init__(kwargs) + + self_.type = type diff --git a/src/datadog_api_client/v2/model/twilio_interface.py b/src/datadog_api_client/v2/model/twilio_interface.py new file mode 100644 index 0000000000..86cc16d96b --- /dev/null +++ b/src/datadog_api_client/v2/model/twilio_interface.py @@ -0,0 +1,76 @@ +# 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. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.twilio_authentication import TwilioAuthentication + from datadog_api_client.v2.model.twilio_dataflow import TwilioDataflow + from datadog_api_client.v2.model.twilio_settings import TwilioSettings + from datadog_api_client.v2.model.twilio_interface_type import TwilioInterfaceType + from datadog_api_client.v2.model.twilio_basic_auth import TwilioBasicAuth + + +class TwilioInterface(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.twilio_authentication import TwilioAuthentication + from datadog_api_client.v2.model.twilio_dataflow import TwilioDataflow + from datadog_api_client.v2.model.twilio_settings import TwilioSettings + from datadog_api_client.v2.model.twilio_interface_type import TwilioInterfaceType + + return { + "authentication": (TwilioAuthentication,), + "dataflows": ([TwilioDataflow],), + "settings": (TwilioSettings,), + "type": (TwilioInterfaceType,), + } + + attribute_map = { + "authentication": "authentication", + "dataflows": "dataflows", + "settings": "settings", + "type": "type", + } + + def __init__( + self_, + authentication: Union[TwilioAuthentication, TwilioBasicAuth], + type: TwilioInterfaceType, + dataflows: Union[List[TwilioDataflow], UnsetType] = unset, + settings: Union[TwilioSettings, UnsetType] = unset, + **kwargs, + ): + """ + Twilio interface (source-type) configuration. + + :param authentication: Authentication methods supported by the Twilio interface. Exactly one is set, selected by its ``type``. + :type authentication: TwilioAuthentication + + :param dataflows: Dataflows for the Twilio interface. + :type dataflows: [TwilioDataflow], optional + + :param settings: Twilio interface settings. + :type settings: TwilioSettings, optional + + :param type: Interface discriminator for Twilio. + :type type: TwilioInterfaceType + """ + if dataflows is not unset: + kwargs["dataflows"] = dataflows + if settings is not unset: + kwargs["settings"] = settings + super().__init__(kwargs) + + self_.authentication = authentication + self_.type = type diff --git a/src/datadog_api_client/v2/model/twilio_interface_type.py b/src/datadog_api_client/v2/model/twilio_interface_type.py new file mode 100644 index 0000000000..4b4eaa1a29 --- /dev/null +++ b/src/datadog_api_client/v2/model/twilio_interface_type.py @@ -0,0 +1,35 @@ +# 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. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TwilioInterfaceType(ModelSimple): + """ + Interface discriminator for Twilio. + + :param value: If omitted defaults to "twilio". Must be one of ["twilio"]. + :type value: str + """ + + allowed_values = { + "twilio", + } + TWILIO: ClassVar["TwilioInterfaceType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TwilioInterfaceType.TWILIO = TwilioInterfaceType("twilio") diff --git a/src/datadog_api_client/v2/model/twilio_interface_update.py b/src/datadog_api_client/v2/model/twilio_interface_update.py new file mode 100644 index 0000000000..7337d06496 --- /dev/null +++ b/src/datadog_api_client/v2/model/twilio_interface_update.py @@ -0,0 +1,77 @@ +# 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. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.twilio_authentication import TwilioAuthentication + from datadog_api_client.v2.model.twilio_dataflow import TwilioDataflow + from datadog_api_client.v2.model.twilio_settings_update import TwilioSettingsUpdate + from datadog_api_client.v2.model.twilio_interface_type import TwilioInterfaceType + from datadog_api_client.v2.model.twilio_basic_auth import TwilioBasicAuth + + +class TwilioInterfaceUpdate(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.twilio_authentication import TwilioAuthentication + from datadog_api_client.v2.model.twilio_dataflow import TwilioDataflow + from datadog_api_client.v2.model.twilio_settings_update import TwilioSettingsUpdate + from datadog_api_client.v2.model.twilio_interface_type import TwilioInterfaceType + + return { + "authentication": (TwilioAuthentication,), + "dataflows": ([TwilioDataflow],), + "settings": (TwilioSettingsUpdate,), + "type": (TwilioInterfaceType,), + } + + attribute_map = { + "authentication": "authentication", + "dataflows": "dataflows", + "settings": "settings", + "type": "type", + } + + def __init__( + self_, + type: TwilioInterfaceType, + authentication: Union[TwilioAuthentication, TwilioBasicAuth, UnsetType] = unset, + dataflows: Union[List[TwilioDataflow], UnsetType] = unset, + settings: Union[TwilioSettingsUpdate, UnsetType] = unset, + **kwargs, + ): + """ + Partial Twilio interface (source-type) configuration for updates. + + :param authentication: Authentication methods supported by the Twilio interface. Exactly one is set, selected by its ``type``. + :type authentication: TwilioAuthentication, optional + + :param dataflows: Dataflows for the Twilio interface. + :type dataflows: [TwilioDataflow], optional + + :param settings: Partial Twilio interface settings for updates. + :type settings: TwilioSettingsUpdate, optional + + :param type: Interface discriminator for Twilio. + :type type: TwilioInterfaceType + """ + if authentication is not unset: + kwargs["authentication"] = authentication + if dataflows is not unset: + kwargs["dataflows"] = dataflows + if settings is not unset: + kwargs["settings"] = settings + super().__init__(kwargs) + + self_.type = type diff --git a/src/datadog_api_client/v2/model/twilio_settings.py b/src/datadog_api_client/v2/model/twilio_settings.py new file mode 100644 index 0000000000..c51295d67c --- /dev/null +++ b/src/datadog_api_client/v2/model/twilio_settings.py @@ -0,0 +1,43 @@ +# 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. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class TwilioSettings(ModelNormal): + @cached_property + def openapi_types(_): + return { + "account_sid": (str,), + "censor_logs": (bool,), + } + + attribute_map = { + "account_sid": "account_sid", + "censor_logs": "censor_logs", + } + + def __init__(self_, account_sid: str, censor_logs: Union[bool, UnsetType] = unset, **kwargs): + """ + Twilio interface settings. + + :param account_sid: Twilio Account SID that uniquely identifies your Twilio account. + :type account_sid: str + + :param censor_logs: When enabled, phone numbers in the ``to`` field and SMS message bodies are censored for privacy. + :type censor_logs: bool, optional + """ + if censor_logs is not unset: + kwargs["censor_logs"] = censor_logs + super().__init__(kwargs) + + self_.account_sid = account_sid diff --git a/src/datadog_api_client/v2/model/twilio_settings_update.py b/src/datadog_api_client/v2/model/twilio_settings_update.py new file mode 100644 index 0000000000..958e8da1c0 --- /dev/null +++ b/src/datadog_api_client/v2/model/twilio_settings_update.py @@ -0,0 +1,45 @@ +# 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. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class TwilioSettingsUpdate(ModelNormal): + @cached_property + def openapi_types(_): + return { + "account_sid": (str,), + "censor_logs": (bool,), + } + + attribute_map = { + "account_sid": "account_sid", + "censor_logs": "censor_logs", + } + + def __init__( + self_, account_sid: Union[str, UnsetType] = unset, censor_logs: Union[bool, UnsetType] = unset, **kwargs + ): + """ + Partial Twilio interface settings for updates. + + :param account_sid: Twilio Account SID that uniquely identifies your Twilio account. + :type account_sid: str, optional + + :param censor_logs: When enabled, phone numbers in the ``to`` field and SMS message bodies are censored for privacy. + :type censor_logs: bool, optional + """ + if account_sid is not unset: + kwargs["account_sid"] = account_sid + if censor_logs is not unset: + kwargs["censor_logs"] = censor_logs + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index 8a861f6dd6..c28ecc9e42 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -2536,6 +2536,31 @@ from datadog_api_client.v2.model.elf_sourcemap_attributes import ELFSourcemapAttributes from datadog_api_client.v2.model.elf_sourcemap_data import ELFSourcemapData from datadog_api_client.v2.model.epss import EPSS +from datadog_api_client.v2.model.elastic_cloud_authentication import ElasticCloudAuthentication +from datadog_api_client.v2.model.elastic_cloud_basic_auth import ElasticCloudBasicAuth +from datadog_api_client.v2.model.elastic_cloud_basic_auth_type import ElasticCloudBasicAuthType +from datadog_api_client.v2.model.elastic_cloud_ccm_authentication import ElasticCloudCcmAuthentication +from datadog_api_client.v2.model.elastic_cloud_ccm_dataflow import ElasticCloudCcmDataflow +from datadog_api_client.v2.model.elastic_cloud_ccm_dataflow_id import ElasticCloudCcmDataflowId +from datadog_api_client.v2.model.elastic_cloud_ccm_interface import ElasticCloudCcmInterface +from datadog_api_client.v2.model.elastic_cloud_ccm_interface_type import ElasticCloudCcmInterfaceType +from datadog_api_client.v2.model.elastic_cloud_ccm_interface_update import ElasticCloudCcmInterfaceUpdate +from datadog_api_client.v2.model.elastic_cloud_ccm_settings import ElasticCloudCcmSettings +from datadog_api_client.v2.model.elastic_cloud_ccm_settings_update import ElasticCloudCcmSettingsUpdate +from datadog_api_client.v2.model.elastic_cloud_ccm_token_auth import ElasticCloudCcmTokenAuth +from datadog_api_client.v2.model.elastic_cloud_ccm_token_auth_type import ElasticCloudCcmTokenAuthType +from datadog_api_client.v2.model.elastic_cloud_dataflow import ElasticCloudDataflow +from datadog_api_client.v2.model.elastic_cloud_dataflow_id import ElasticCloudDataflowId +from datadog_api_client.v2.model.elastic_cloud_integration import ElasticCloudIntegration +from datadog_api_client.v2.model.elastic_cloud_integration_type import ElasticCloudIntegrationType +from datadog_api_client.v2.model.elastic_cloud_integration_update import ElasticCloudIntegrationUpdate +from datadog_api_client.v2.model.elastic_cloud_interface import ElasticCloudInterface +from datadog_api_client.v2.model.elastic_cloud_interface_update import ElasticCloudInterfaceUpdate +from datadog_api_client.v2.model.elastic_cloud_monitoring_interface import ElasticCloudMonitoringInterface +from datadog_api_client.v2.model.elastic_cloud_monitoring_interface_type import ElasticCloudMonitoringInterfaceType +from datadog_api_client.v2.model.elastic_cloud_monitoring_interface_update import ElasticCloudMonitoringInterfaceUpdate +from datadog_api_client.v2.model.elastic_cloud_settings import ElasticCloudSettings +from datadog_api_client.v2.model.elastic_cloud_settings_update import ElasticCloudSettingsUpdate from datadog_api_client.v2.model.entity_attributes import EntityAttributes from datadog_api_client.v2.model.entity_context_entity import EntityContextEntity from datadog_api_client.v2.model.entity_context_entity_attributes import EntityContextEntityAttributes @@ -3680,6 +3705,23 @@ from datadog_api_client.v2.model.input_schema_parameters_type import InputSchemaParametersType from datadog_api_client.v2.model.intake_payload_accepted import IntakePayloadAccepted from datadog_api_client.v2.model.integration import Integration +from datadog_api_client.v2.model.integration_account_attributes import IntegrationAccountAttributes +from datadog_api_client.v2.model.integration_account_create_data import IntegrationAccountCreateData +from datadog_api_client.v2.model.integration_account_data import IntegrationAccountData +from datadog_api_client.v2.model.integration_account_dataflow_health import IntegrationAccountDataflowHealth +from datadog_api_client.v2.model.integration_account_dataflow_status import IntegrationAccountDataflowStatus +from datadog_api_client.v2.model.integration_account_integration import IntegrationAccountIntegration +from datadog_api_client.v2.model.integration_account_integration_id import IntegrationAccountIntegrationId +from datadog_api_client.v2.model.integration_account_integration_update import IntegrationAccountIntegrationUpdate +from datadog_api_client.v2.model.integration_account_interface_id import IntegrationAccountInterfaceId +from datadog_api_client.v2.model.integration_account_permissions import IntegrationAccountPermissions +from datadog_api_client.v2.model.integration_account_request import IntegrationAccountRequest +from datadog_api_client.v2.model.integration_account_response import IntegrationAccountResponse +from datadog_api_client.v2.model.integration_account_type import IntegrationAccountType +from datadog_api_client.v2.model.integration_account_update_attributes import IntegrationAccountUpdateAttributes +from datadog_api_client.v2.model.integration_account_update_data import IntegrationAccountUpdateData +from datadog_api_client.v2.model.integration_account_update_request import IntegrationAccountUpdateRequest +from datadog_api_client.v2.model.integration_accounts_response import IntegrationAccountsResponse from datadog_api_client.v2.model.integration_attributes import IntegrationAttributes from datadog_api_client.v2.model.integration_incident import IntegrationIncident from datadog_api_client.v2.model.integration_incident_field_mappings_items import IntegrationIncidentFieldMappingsItems @@ -9531,6 +9573,19 @@ from datadog_api_client.v2.model.trigger_type import TriggerType from datadog_api_client.v2.model.trigger_workflow_automation_action import TriggerWorkflowAutomationAction from datadog_api_client.v2.model.trigger_workflow_automation_action_type import TriggerWorkflowAutomationActionType +from datadog_api_client.v2.model.twilio_authentication import TwilioAuthentication +from datadog_api_client.v2.model.twilio_basic_auth import TwilioBasicAuth +from datadog_api_client.v2.model.twilio_basic_auth_type import TwilioBasicAuthType +from datadog_api_client.v2.model.twilio_dataflow import TwilioDataflow +from datadog_api_client.v2.model.twilio_dataflow_id import TwilioDataflowId +from datadog_api_client.v2.model.twilio_integration import TwilioIntegration +from datadog_api_client.v2.model.twilio_integration_type import TwilioIntegrationType +from datadog_api_client.v2.model.twilio_integration_update import TwilioIntegrationUpdate +from datadog_api_client.v2.model.twilio_interface import TwilioInterface +from datadog_api_client.v2.model.twilio_interface_type import TwilioInterfaceType +from datadog_api_client.v2.model.twilio_interface_update import TwilioInterfaceUpdate +from datadog_api_client.v2.model.twilio_settings import TwilioSettings +from datadog_api_client.v2.model.twilio_settings_update import TwilioSettingsUpdate from datadog_api_client.v2.model.uc_config_pair import UCConfigPair from datadog_api_client.v2.model.uc_config_pair_data import UCConfigPairData from datadog_api_client.v2.model.uc_config_pair_data_attributes import UCConfigPairDataAttributes @@ -11936,6 +11991,31 @@ "ELFSourcemapAttributes", "ELFSourcemapData", "EPSS", + "ElasticCloudAuthentication", + "ElasticCloudBasicAuth", + "ElasticCloudBasicAuthType", + "ElasticCloudCcmAuthentication", + "ElasticCloudCcmDataflow", + "ElasticCloudCcmDataflowId", + "ElasticCloudCcmInterface", + "ElasticCloudCcmInterfaceType", + "ElasticCloudCcmInterfaceUpdate", + "ElasticCloudCcmSettings", + "ElasticCloudCcmSettingsUpdate", + "ElasticCloudCcmTokenAuth", + "ElasticCloudCcmTokenAuthType", + "ElasticCloudDataflow", + "ElasticCloudDataflowId", + "ElasticCloudIntegration", + "ElasticCloudIntegrationType", + "ElasticCloudIntegrationUpdate", + "ElasticCloudInterface", + "ElasticCloudInterfaceUpdate", + "ElasticCloudMonitoringInterface", + "ElasticCloudMonitoringInterfaceType", + "ElasticCloudMonitoringInterfaceUpdate", + "ElasticCloudSettings", + "ElasticCloudSettingsUpdate", "EntityAttributes", "EntityContextEntity", "EntityContextEntityAttributes", @@ -12840,6 +12920,23 @@ "InputSchemaParametersType", "IntakePayloadAccepted", "Integration", + "IntegrationAccountAttributes", + "IntegrationAccountCreateData", + "IntegrationAccountData", + "IntegrationAccountDataflowHealth", + "IntegrationAccountDataflowStatus", + "IntegrationAccountIntegration", + "IntegrationAccountIntegrationId", + "IntegrationAccountIntegrationUpdate", + "IntegrationAccountInterfaceId", + "IntegrationAccountPermissions", + "IntegrationAccountRequest", + "IntegrationAccountResponse", + "IntegrationAccountType", + "IntegrationAccountUpdateAttributes", + "IntegrationAccountUpdateData", + "IntegrationAccountUpdateRequest", + "IntegrationAccountsResponse", "IntegrationAttributes", "IntegrationIncident", "IntegrationIncidentFieldMappingsItems", @@ -16719,6 +16816,19 @@ "TriggerType", "TriggerWorkflowAutomationAction", "TriggerWorkflowAutomationActionType", + "TwilioAuthentication", + "TwilioBasicAuth", + "TwilioBasicAuthType", + "TwilioDataflow", + "TwilioDataflowId", + "TwilioIntegration", + "TwilioIntegrationType", + "TwilioIntegrationUpdate", + "TwilioInterface", + "TwilioInterfaceType", + "TwilioInterfaceUpdate", + "TwilioSettings", + "TwilioSettingsUpdate", "UCConfigPair", "UCConfigPairData", "UCConfigPairDataAttributes", diff --git a/tests/v2/features/integration_accounts.feature b/tests/v2/features/integration_accounts.feature new file mode 100644 index 0000000000..74b2a1f78a --- /dev/null +++ b/tests/v2/features/integration_accounts.feature @@ -0,0 +1,160 @@ +@endpoint(integration-accounts) @endpoint(integration-accounts-v2) +Feature: Integration Accounts + Manage accounts for Datadog integrations served by the Account Management + Service (AMS). The account payload is strongly typed per integration and + interface. + + 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 an integration account returns "Bad Request" response + Given operation "CreateIntegrationAccount" enabled + And new "CreateIntegrationAccount" request + And request contains "integration_id" parameter from "REPLACE.ME" + And request contains "interface_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"integration": {"interface": {"authentication": {"api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "api_key_token": "your-api-key-secret", "type": "basic"}, "dataflows": [{"enabled": true, "id": "twilio-messages-logs"}], "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "censor_logs": true}, "type": "twilio"}, "type": "twilio"}, "name": "twilio-prod"}, "type": "integration-account"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/saas-integrations + Scenario: Create an integration account returns "Created" response + Given operation "CreateIntegrationAccount" enabled + And new "CreateIntegrationAccount" request + And request contains "integration_id" parameter from "REPLACE.ME" + And request contains "interface_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"integration": {"interface": {"authentication": {"api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "api_key_token": "your-api-key-secret", "type": "basic"}, "dataflows": [{"enabled": true, "id": "twilio-messages-logs"}], "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "censor_logs": true}, "type": "twilio"}, "type": "twilio"}, "name": "twilio-prod"}, "type": "integration-account"}} + When the request is sent + Then the response status is 201 Created + + @generated @skip @team:DataDog/saas-integrations + Scenario: Create an integration account returns "Not Found" response + Given operation "CreateIntegrationAccount" enabled + And new "CreateIntegrationAccount" request + And request contains "integration_id" parameter from "REPLACE.ME" + And request contains "interface_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"integration": {"interface": {"authentication": {"api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "api_key_token": "your-api-key-secret", "type": "basic"}, "dataflows": [{"enabled": true, "id": "twilio-messages-logs"}], "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "censor_logs": true}, "type": "twilio"}, "type": "twilio"}, "name": "twilio-prod"}, "type": "integration-account"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/saas-integrations + Scenario: Delete an integration account returns "Bad Request" response + Given operation "DeleteIntegrationAccount" enabled + And new "DeleteIntegrationAccount" request + And request contains "integration_id" 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 + + @generated @skip @team:DataDog/saas-integrations + Scenario: Delete an integration account returns "No Content" response + Given operation "DeleteIntegrationAccount" enabled + And new "DeleteIntegrationAccount" request + And request contains "integration_id" 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 204 No Content + + @generated @skip @team:DataDog/saas-integrations + Scenario: Delete an integration account returns "Not Found" response + Given operation "DeleteIntegrationAccount" enabled + And new "DeleteIntegrationAccount" request + And request contains "integration_id" 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 + + @generated @skip @team:DataDog/saas-integrations + Scenario: Get an integration account returns "Bad Request" response + Given operation "GetIntegrationAccount" enabled + And new "GetIntegrationAccount" request + And request contains "integration_id" 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 + + @generated @skip @team:DataDog/saas-integrations + Scenario: Get an integration account returns "Not Found" response + Given operation "GetIntegrationAccount" enabled + And new "GetIntegrationAccount" request + And request contains "integration_id" 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 + + @generated @skip @team:DataDog/saas-integrations + Scenario: Get an integration account returns "OK" response + Given operation "GetIntegrationAccount" enabled + And new "GetIntegrationAccount" request + And request contains "integration_id" 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 + + @generated @skip @team:DataDog/saas-integrations + Scenario: List integration accounts returns "Bad Request" response + Given operation "ListIntegrationAccounts" enabled + And new "ListIntegrationAccounts" request + And request contains "integration_id" 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 + + @generated @skip @team:DataDog/saas-integrations + Scenario: List integration accounts returns "Not Found" response + Given operation "ListIntegrationAccounts" enabled + And new "ListIntegrationAccounts" request + And request contains "integration_id" 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 + + @generated @skip @team:DataDog/saas-integrations + Scenario: List integration accounts returns "OK" response + Given operation "ListIntegrationAccounts" enabled + And new "ListIntegrationAccounts" request + And request contains "integration_id" 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 + + @generated @skip @team:DataDog/saas-integrations + Scenario: Update an integration account returns "Bad Request" response + Given operation "UpdateIntegrationAccount" enabled + And new "UpdateIntegrationAccount" request + And request contains "integration_id" 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": {"integration": {"interface": {"authentication": {"api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "api_key_token": "your-api-key-secret", "type": "basic"}, "dataflows": [{"enabled": true, "id": "twilio-messages-logs"}], "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "censor_logs": true}, "type": "twilio"}, "type": "twilio"}, "name": "twilio-prod"}, "type": "integration-account"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/saas-integrations + Scenario: Update an integration account returns "Not Found" response + Given operation "UpdateIntegrationAccount" enabled + And new "UpdateIntegrationAccount" request + And request contains "integration_id" 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": {"integration": {"interface": {"authentication": {"api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "api_key_token": "your-api-key-secret", "type": "basic"}, "dataflows": [{"enabled": true, "id": "twilio-messages-logs"}], "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "censor_logs": true}, "type": "twilio"}, "type": "twilio"}, "name": "twilio-prod"}, "type": "integration-account"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/saas-integrations + Scenario: Update an integration account returns "OK" response + Given operation "UpdateIntegrationAccount" enabled + And new "UpdateIntegrationAccount" request + And request contains "integration_id" 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": {"integration": {"interface": {"authentication": {"api_key": "SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "api_key_token": "your-api-key-secret", "type": "basic"}, "dataflows": [{"enabled": true, "id": "twilio-messages-logs"}], "settings": {"account_sid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "censor_logs": true}, "type": "twilio"}, "type": "twilio"}, "name": "twilio-prod"}, "type": "integration-account"}} + When the request is sent + Then the response status is 200 OK diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index 2a7fb64a0a..58a5a074cb 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -4349,6 +4349,51 @@ "type": "idempotent" } }, + "ListIntegrationAccounts": { + "tag": "Integration Accounts", + "undo": { + "type": "safe" + } + }, + "CreateIntegrationAccount": { + "tag": "Integration Accounts", + "undo": { + "operationId": "DeleteIntegrationAccount", + "parameters": [ + { + "name": "integration_id", + "source": "integration_id" + }, + { + "name": "interface_id", + "source": "interface_id" + }, + { + "name": "account_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "DeleteIntegrationAccount": { + "tag": "Integration Accounts", + "undo": { + "type": "idempotent" + } + }, + "GetIntegrationAccount": { + "tag": "Integration Accounts", + "undo": { + "type": "safe" + } + }, + "UpdateIntegrationAccount": { + "tag": "Integration Accounts", + "undo": { + "type": "idempotent" + } + }, "GetIPAllowlist": { "tag": "IP Allowlist", "undo": {