From 495143f5d37817b2189db3cfea3b0be415f995f1 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Wed, 29 Jul 2026 14:41:54 +0000 Subject: [PATCH] Regenerate client from commit d3dcf31 of spec repo --- .generator/schemas/v2/openapi.yaml | 986 +++++++++++++++++- features/v2/integration_accounts.feature | 160 +++ features/v2/undo.json | 45 + packages/datadog-api-client/README.md | 1 + .../src/support/scenarios_model_mapping.ts | 75 ++ services/ddsql/README.md | 8 - services/ddsql/src/v2/DDSQLApi.ts | 12 - .../src/v2/models/DdsqlTabularQueryColumn.ts | 14 +- services/integration_accounts/.yarnrc.yml | 1 + services/integration_accounts/README.md | 44 + services/integration_accounts/package.json | 43 + services/integration_accounts/src/index.ts | 3 + .../src/v2/IntegrationAccountsApi.ts | 921 ++++++++++++++++ services/integration_accounts/src/v2/index.ts | 65 ++ .../src/v2/models/APIErrorResponse.ts | 45 + .../v2/models/ElasticCloudAuthentication.ts | 8 + .../src/v2/models/ElasticCloudBasicAuth.ts | 65 ++ .../v2/models/ElasticCloudBasicAuthType.ts | 7 + .../models/ElasticCloudCcmAuthentication.ts | 10 + .../src/v2/models/ElasticCloudCcmDataflow.ts | 64 ++ .../v2/models/ElasticCloudCcmDataflowId.ts | 7 + .../src/v2/models/ElasticCloudCcmInterface.ts | 75 ++ .../v2/models/ElasticCloudCcmInterfaceType.ts | 9 + .../models/ElasticCloudCcmInterfaceUpdate.ts | 74 ++ .../src/v2/models/ElasticCloudCcmSettings.ts | 45 + .../models/ElasticCloudCcmSettingsUpdate.ts | 44 + .../src/v2/models/ElasticCloudCcmTokenAuth.ts | 56 + .../v2/models/ElasticCloudCcmTokenAuthType.ts | 7 + .../src/v2/models/ElasticCloudDataflow.ts | 64 ++ .../src/v2/models/ElasticCloudDataflowId.ts | 7 + .../src/v2/models/ElasticCloudIntegration.ts | 57 + .../v2/models/ElasticCloudIntegrationType.ts | 7 + .../models/ElasticCloudIntegrationUpdate.ts | 56 + .../src/v2/models/ElasticCloudInterface.ts | 12 + .../v2/models/ElasticCloudInterfaceUpdate.ts | 12 + .../models/ElasticCloudMonitoringInterface.ts | 75 ++ .../ElasticCloudMonitoringInterfaceType.ts | 9 + .../ElasticCloudMonitoringInterfaceUpdate.ts | 74 ++ .../src/v2/models/ElasticCloudSettings.ts | 109 ++ .../v2/models/ElasticCloudSettingsUpdate.ts | 108 ++ .../v2/models/IntegrationAccountAttributes.ts | 65 ++ .../v2/models/IntegrationAccountCreateData.ts | 57 + .../src/v2/models/IntegrationAccountData.ts | 66 ++ .../IntegrationAccountDataflowHealth.ts | 13 + .../IntegrationAccountDataflowStatus.ts | 63 ++ .../models/IntegrationAccountIntegration.ts | 12 + .../models/IntegrationAccountIntegrationId.ts | 11 + .../IntegrationAccountIntegrationUpdate.ts | 12 + .../models/IntegrationAccountInterfaceId.ts | 13 + .../models/IntegrationAccountPermissions.ts | 52 + .../v2/models/IntegrationAccountRequest.ts | 47 + .../v2/models/IntegrationAccountResponse.ts | 46 + .../src/v2/models/IntegrationAccountType.ts | 9 + .../IntegrationAccountUpdateAttributes.ts | 54 + .../v2/models/IntegrationAccountUpdateData.ts | 57 + .../models/IntegrationAccountUpdateRequest.ts | 47 + .../v2/models/IntegrationAccountsResponse.ts | 46 + .../src/v2/models/TwilioAuthentication.ts | 8 + .../src/v2/models/TwilioBasicAuth.ts | 65 ++ .../src/v2/models/TwilioBasicAuthType.ts | 7 + .../src/v2/models/TwilioDataflow.ts | 64 ++ .../src/v2/models/TwilioDataflowId.ts | 17 + .../src/v2/models/TwilioIntegration.ts | 57 + .../src/v2/models/TwilioIntegrationType.ts | 7 + .../src/v2/models/TwilioIntegrationUpdate.ts | 56 + .../src/v2/models/TwilioInterface.ts | 75 ++ .../src/v2/models/TwilioInterfaceType.ts | 7 + .../src/v2/models/TwilioInterfaceUpdate.ts | 74 ++ .../src/v2/models/TwilioSettings.ts | 53 + .../src/v2/models/TwilioSettingsUpdate.ts | 52 + .../src/v2/models/TypingInfo.ts | 128 +++ services/integration_accounts/tsconfig.json | 28 + yarn.lock | 9 + 73 files changed, 4829 insertions(+), 32 deletions(-) create mode 100644 features/v2/integration_accounts.feature create mode 100644 services/integration_accounts/.yarnrc.yml create mode 100644 services/integration_accounts/README.md create mode 100644 services/integration_accounts/package.json create mode 100644 services/integration_accounts/src/index.ts create mode 100644 services/integration_accounts/src/v2/IntegrationAccountsApi.ts create mode 100644 services/integration_accounts/src/v2/index.ts create mode 100644 services/integration_accounts/src/v2/models/APIErrorResponse.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudAuthentication.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudBasicAuth.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudBasicAuthType.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudCcmAuthentication.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudCcmDataflow.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudCcmDataflowId.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudCcmInterface.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudCcmInterfaceType.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudCcmInterfaceUpdate.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudCcmSettings.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudCcmSettingsUpdate.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudCcmTokenAuth.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudCcmTokenAuthType.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudDataflow.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudDataflowId.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudIntegration.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudIntegrationType.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudIntegrationUpdate.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudInterface.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudInterfaceUpdate.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudMonitoringInterface.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudMonitoringInterfaceType.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudMonitoringInterfaceUpdate.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudSettings.ts create mode 100644 services/integration_accounts/src/v2/models/ElasticCloudSettingsUpdate.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountAttributes.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountCreateData.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountData.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountDataflowHealth.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountDataflowStatus.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountIntegration.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountIntegrationId.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountIntegrationUpdate.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountInterfaceId.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountPermissions.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountRequest.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountResponse.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountType.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountUpdateAttributes.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountUpdateData.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountUpdateRequest.ts create mode 100644 services/integration_accounts/src/v2/models/IntegrationAccountsResponse.ts create mode 100644 services/integration_accounts/src/v2/models/TwilioAuthentication.ts create mode 100644 services/integration_accounts/src/v2/models/TwilioBasicAuth.ts create mode 100644 services/integration_accounts/src/v2/models/TwilioBasicAuthType.ts create mode 100644 services/integration_accounts/src/v2/models/TwilioDataflow.ts create mode 100644 services/integration_accounts/src/v2/models/TwilioDataflowId.ts create mode 100644 services/integration_accounts/src/v2/models/TwilioIntegration.ts create mode 100644 services/integration_accounts/src/v2/models/TwilioIntegrationType.ts create mode 100644 services/integration_accounts/src/v2/models/TwilioIntegrationUpdate.ts create mode 100644 services/integration_accounts/src/v2/models/TwilioInterface.ts create mode 100644 services/integration_accounts/src/v2/models/TwilioInterfaceType.ts create mode 100644 services/integration_accounts/src/v2/models/TwilioInterfaceUpdate.ts create mode 100644 services/integration_accounts/src/v2/models/TwilioSettings.ts create mode 100644 services/integration_accounts/src/v2/models/TwilioSettingsUpdate.ts create mode 100644 services/integration_accounts/src/v2/models/TypingInfo.ts create mode 100644 services/integration_accounts/tsconfig.json diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index acd63e70a663..2db585986c6d 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/features/v2/integration_accounts.feature b/features/v2/integration_accounts.feature new file mode 100644 index 000000000000..74b2a1f78a2c --- /dev/null +++ b/features/v2/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/features/v2/undo.json b/features/v2/undo.json index 2a7fb64a0a90..58a5a074cb5b 100644 --- a/features/v2/undo.json +++ b/features/v2/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": { diff --git a/packages/datadog-api-client/README.md b/packages/datadog-api-client/README.md index 098cca7c38a5..d89f1b7899b5 100644 --- a/packages/datadog-api-client/README.md +++ b/packages/datadog-api-client/README.md @@ -412,6 +412,7 @@ apiInstance | Hosts | @datadog/datadog-api-client-hosts | [README.md](../../services/hosts/README.md) | | Identity Providers | @datadog/datadog-api-client-identity-providers | [README.md](../../services/identity-providers/README.md) | | Incidents | @datadog/datadog-api-client-incidents | [README.md](../../services/incidents/README.md) | +| Integration Accounts | @datadog/datadog-api-client-integration-accounts | [README.md](../../services/integration-accounts/README.md) | | Integrations | @datadog/datadog-api-client-integrations | [README.md](../../services/integrations/README.md) | | IP Allowlist | @datadog/datadog-api-client-ip-allowlist | [README.md](../../services/ip-allowlist/README.md) | | IP Ranges | @datadog/datadog-api-client-ip-ranges | [README.md](../../services/ip-ranges/README.md) | diff --git a/private/bdd_runner/src/support/scenarios_model_mapping.ts b/private/bdd_runner/src/support/scenarios_model_mapping.ts index 668927858ec1..22c27e5b6058 100644 --- a/private/bdd_runner/src/support/scenarios_model_mapping.ts +++ b/private/bdd_runner/src/support/scenarios_model_mapping.ts @@ -11598,6 +11598,81 @@ export const ScenariosModelMappings: { [key: string]: OperationMapping } = { }, operationResponseType: "OktaAccountResponse", }, + "IntegrationAccountsApi.V2.ListIntegrationAccounts": { + integrationId: { + type: "IntegrationAccountIntegrationId", + format: "", + }, + interfaceId: { + type: "IntegrationAccountInterfaceId", + format: "", + }, + operationResponseType: "IntegrationAccountsResponse", + }, + "IntegrationAccountsApi.V2.CreateIntegrationAccount": { + integrationId: { + type: "IntegrationAccountIntegrationId", + format: "", + }, + interfaceId: { + type: "IntegrationAccountInterfaceId", + format: "", + }, + body: { + type: "IntegrationAccountRequest", + format: "", + }, + operationResponseType: "IntegrationAccountResponse", + }, + "IntegrationAccountsApi.V2.GetIntegrationAccount": { + integrationId: { + type: "IntegrationAccountIntegrationId", + format: "", + }, + interfaceId: { + type: "IntegrationAccountInterfaceId", + format: "", + }, + accountId: { + type: "string", + format: "", + }, + operationResponseType: "IntegrationAccountResponse", + }, + "IntegrationAccountsApi.V2.DeleteIntegrationAccount": { + integrationId: { + type: "IntegrationAccountIntegrationId", + format: "", + }, + interfaceId: { + type: "IntegrationAccountInterfaceId", + format: "", + }, + accountId: { + type: "string", + format: "", + }, + operationResponseType: "{}", + }, + "IntegrationAccountsApi.V2.UpdateIntegrationAccount": { + integrationId: { + type: "IntegrationAccountIntegrationId", + format: "", + }, + interfaceId: { + type: "IntegrationAccountInterfaceId", + format: "", + }, + accountId: { + type: "string", + format: "", + }, + body: { + type: "IntegrationAccountUpdateRequest", + format: "", + }, + operationResponseType: "IntegrationAccountResponse", + }, "IPAllowlistApi.V2.GetIPAllowlist": { operationResponseType: "IPAllowlistResponse", }, diff --git a/services/ddsql/README.md b/services/ddsql/README.md index 5cbb81c8cb6a..65777fa65ab6 100644 --- a/services/ddsql/README.md +++ b/services/ddsql/README.md @@ -28,14 +28,6 @@ import { DDSQLApiV2 } from "@datadog/datadog-api-client-ddsql"; import { v2 } from "@datadog/datadog-api-client-ddsql"; const configuration = createConfiguration(); -// Enable unstable operations -const configurationOpts = { - unstableOperations: { - "DDSQLApi.v2.executeDdsqlTabularQuery": true - } -} - -const configuration = createConfiguration(configurationOpts); const apiInstance = new DDSQLApiV2(configuration); const params = {/* parameters */}; diff --git a/services/ddsql/src/v2/DDSQLApi.ts b/services/ddsql/src/v2/DDSQLApi.ts index af3712b1fdee..518e048eb73e 100644 --- a/services/ddsql/src/v2/DDSQLApi.ts +++ b/services/ddsql/src/v2/DDSQLApi.ts @@ -44,12 +44,6 @@ export class DDSQLApiRequestFactory extends BaseAPIRequestFactory { ): Promise { const _config = _options || this.configuration; - if (!_config.unstableOperations["DDSQLApi.v2.executeDdsqlTabularQuery"]) { - throw new Error( - "Unstable operation 'executeDdsqlTabularQuery' is disabled. Enable it by setting `configuration.unstableOperations['DDSQLApi.v2.executeDdsqlTabularQuery'] = true`", - ); - } - // verify required parameter 'body' is not null or undefined if (body === null || body === undefined) { throw new RequiredError("body", "executeDdsqlTabularQuery"); @@ -100,12 +94,6 @@ export class DDSQLApiRequestFactory extends BaseAPIRequestFactory { ): Promise { const _config = _options || this.configuration; - if (!_config.unstableOperations["DDSQLApi.v2.fetchDdsqlTabularQuery"]) { - throw new Error( - "Unstable operation 'fetchDdsqlTabularQuery' is disabled. Enable it by setting `configuration.unstableOperations['DDSQLApi.v2.fetchDdsqlTabularQuery'] = true`", - ); - } - // verify required parameter 'body' is not null or undefined if (body === null || body === undefined) { throw new RequiredError("body", "fetchDdsqlTabularQuery"); diff --git a/services/ddsql/src/v2/models/DdsqlTabularQueryColumn.ts b/services/ddsql/src/v2/models/DdsqlTabularQueryColumn.ts index aa3bb799edb8..275f6c499a7c 100644 --- a/services/ddsql/src/v2/models/DdsqlTabularQueryColumn.ts +++ b/services/ddsql/src/v2/models/DdsqlTabularQueryColumn.ts @@ -17,9 +17,17 @@ export class DdsqlTabularQueryColumn { */ "type": string; /** - * 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. */ "values": Array; /** diff --git a/services/integration_accounts/.yarnrc.yml b/services/integration_accounts/.yarnrc.yml new file mode 100644 index 000000000000..3186f3f0795a --- /dev/null +++ b/services/integration_accounts/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: node-modules diff --git a/services/integration_accounts/README.md b/services/integration_accounts/README.md new file mode 100644 index 000000000000..f4200ef0f65f --- /dev/null +++ b/services/integration_accounts/README.md @@ -0,0 +1,44 @@ +# @datadog/datadog-api-client-integration-accounts + +## Description + +Manage accounts for Datadog integrations served by the Account Management Service (AMS). The account payload is strongly typed per integration and interface. + +## Navigation + +- [Installation](#installation) +- [Getting Started](#getting-started) + +## Installation + +```sh +# NPM +npm install @datadog/datadog-api-client-integration-accounts +# Yarn +yarn add @datadog/datadog-api-client-integration-accounts +``` + +## Getting Started +```ts +import { createConfiguration } from "@datadog/datadog-api-client"; +import { IntegrationAccountsApiV2 } from "@datadog/datadog-api-client-integration-accounts"; +import { v2 } from "@datadog/datadog-api-client-integration-accounts"; + +const configuration = createConfiguration(); +// Enable unstable operations +const configurationOpts = { + unstableOperations: { + "IntegrationAccountsApi.v2.listIntegrationAccounts": true + } +} + +const configuration = createConfiguration(configurationOpts); +const apiInstance = new IntegrationAccountsApiV2(configuration); +const params = {/* parameters */}; + +apiInstance.listIntegrationAccounts(params).then((data) => { + console.log("API called successfully. Returned data: " + JSON.stringify(data)); +}).catch((error) => { + console.error("Error calling API: " + error); +}); +``` \ No newline at end of file diff --git a/services/integration_accounts/package.json b/services/integration_accounts/package.json new file mode 100644 index 000000000000..ccf0882e961e --- /dev/null +++ b/services/integration_accounts/package.json @@ -0,0 +1,43 @@ +{ + "name": "@datadog/datadog-api-client-integration-accounts", + "description": "", + "author": "", + "keywords": [ + "api", + "fetch", + "typescript" + ], + "license": "Apache-2.0", + "licenses": [ + { + "type": "Apache-2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0" + } + ], + "repository": { + "type": "git", + "url": "https://github.com/DataDog/datadog-api-client-typescript.git", + "directory": "services/integration-accounts" + }, + "files": [ + "dist/**/*" + ], + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "scripts": { + "prepack": "yarn workspace @datadog/datadog-api-client build && yarn build", + "build": "yarn generate-version-files && tsc", + "generate-version-files": "node -p \"'export const version = ' + JSON.stringify(require('./package.json').version)\" > src/version.ts" + }, + "dependencies": { + "@datadog/datadog-api-client": "^2.0.0-beta.2" + }, + "devDependencies": { + "typescript": "5.8.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "version": "0.0.1", + "packageManager": "yarn@4.9.1" +} diff --git a/services/integration_accounts/src/index.ts b/services/integration_accounts/src/index.ts new file mode 100644 index 000000000000..271037bdcdd4 --- /dev/null +++ b/services/integration_accounts/src/index.ts @@ -0,0 +1,3 @@ +export * as v2 from "./v2"; + +export { IntegrationAccountsApi as IntegrationAccountsApiV2 } from "./v2/IntegrationAccountsApi"; diff --git a/services/integration_accounts/src/v2/IntegrationAccountsApi.ts b/services/integration_accounts/src/v2/IntegrationAccountsApi.ts new file mode 100644 index 000000000000..7db1a65a0282 --- /dev/null +++ b/services/integration_accounts/src/v2/IntegrationAccountsApi.ts @@ -0,0 +1,921 @@ +import { + ApiException, + BaseAPIRequestFactory, + BaseServerConfiguration, + buildUserAgent, + Configuration, + createConfiguration, + deserialize, + getPreferredMediaType, + HttpMethod, + isBrowser, + logger, + normalizeMediaType, + parse, + RequiredError, + RequestContext, + ResponseContext, + serialize, + ServerConfiguration, + stringify, + applySecurityAuthentication, +} from "@datadog/datadog-api-client"; + +import { TypingInfo } from "./models/TypingInfo"; +import { APIErrorResponse } from "./models/APIErrorResponse"; +import { IntegrationAccountIntegrationId } from "./models/IntegrationAccountIntegrationId"; +import { IntegrationAccountInterfaceId } from "./models/IntegrationAccountInterfaceId"; +import { IntegrationAccountRequest } from "./models/IntegrationAccountRequest"; +import { IntegrationAccountResponse } from "./models/IntegrationAccountResponse"; +import { IntegrationAccountsResponse } from "./models/IntegrationAccountsResponse"; +import { IntegrationAccountUpdateRequest } from "./models/IntegrationAccountUpdateRequest"; +import { version } from "../version"; + +export class IntegrationAccountsApiRequestFactory extends BaseAPIRequestFactory { + public userAgent: string | undefined; + + public constructor(configuration: Configuration) { + super(configuration); + if (!isBrowser) { + this.userAgent = buildUserAgent("integration-accounts", version); + } + } + public async createIntegrationAccount( + integrationId: IntegrationAccountIntegrationId, + interfaceId: IntegrationAccountInterfaceId, + body: IntegrationAccountRequest, + _options?: Configuration, + ): Promise { + const _config = _options || this.configuration; + + if ( + !_config.unstableOperations[ + "IntegrationAccountsApi.v2.createIntegrationAccount" + ] + ) { + throw new Error( + "Unstable operation 'createIntegrationAccount' is disabled. Enable it by setting `configuration.unstableOperations['IntegrationAccountsApi.v2.createIntegrationAccount'] = true`", + ); + } + + // verify required parameter 'integrationId' is not null or undefined + if (integrationId === null || integrationId === undefined) { + throw new RequiredError("integrationId", "createIntegrationAccount"); + } + + // verify required parameter 'interfaceId' is not null or undefined + if (interfaceId === null || interfaceId === undefined) { + throw new RequiredError("interfaceId", "createIntegrationAccount"); + } + + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError("body", "createIntegrationAccount"); + } + + // Path Params + const localVarPath = + "/api/v2/integrations/{integration_id}/interfaces/{interface_id}/accounts" + .replace("{integration_id}", encodeURIComponent(String(integrationId))) + .replace("{interface_id}", encodeURIComponent(String(interfaceId))); + + // Make Request Context + const { server, overrides } = _config.getServerAndOverrides( + "IntegrationAccountsApi.v2.createIntegrationAccount", + IntegrationAccountsApi.operationServers, + ); + const requestContext = server.makeRequestContext( + localVarPath, + HttpMethod.POST, + overrides, + ); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Set User-Agent + if (this.userAgent) { + requestContext.setHeaderParam("User-Agent", this.userAgent); + } + + // Body Params + const contentType = getPreferredMediaType(["application/json"]); + requestContext.setHeaderParam("Content-Type", contentType); + const serializedBody = stringify( + serialize(body, TypingInfo, "IntegrationAccountRequest", ""), + contentType, + ); + requestContext.setBody(serializedBody); + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async deleteIntegrationAccount( + integrationId: IntegrationAccountIntegrationId, + interfaceId: IntegrationAccountInterfaceId, + accountId: string, + _options?: Configuration, + ): Promise { + const _config = _options || this.configuration; + + if ( + !_config.unstableOperations[ + "IntegrationAccountsApi.v2.deleteIntegrationAccount" + ] + ) { + throw new Error( + "Unstable operation 'deleteIntegrationAccount' is disabled. Enable it by setting `configuration.unstableOperations['IntegrationAccountsApi.v2.deleteIntegrationAccount'] = true`", + ); + } + + // verify required parameter 'integrationId' is not null or undefined + if (integrationId === null || integrationId === undefined) { + throw new RequiredError("integrationId", "deleteIntegrationAccount"); + } + + // verify required parameter 'interfaceId' is not null or undefined + if (interfaceId === null || interfaceId === undefined) { + throw new RequiredError("interfaceId", "deleteIntegrationAccount"); + } + + // verify required parameter 'accountId' is not null or undefined + if (accountId === null || accountId === undefined) { + throw new RequiredError("accountId", "deleteIntegrationAccount"); + } + + // Path Params + const localVarPath = + "/api/v2/integrations/{integration_id}/interfaces/{interface_id}/accounts/{account_id}" + .replace("{integration_id}", encodeURIComponent(String(integrationId))) + .replace("{interface_id}", encodeURIComponent(String(interfaceId))) + .replace("{account_id}", encodeURIComponent(String(accountId))); + + // Make Request Context + const { server, overrides } = _config.getServerAndOverrides( + "IntegrationAccountsApi.v2.deleteIntegrationAccount", + IntegrationAccountsApi.operationServers, + ); + const requestContext = server.makeRequestContext( + localVarPath, + HttpMethod.DELETE, + overrides, + ); + requestContext.setHeaderParam("Accept", "*/*"); + requestContext.setHttpConfig(_config.httpConfig); + + // Set User-Agent + if (this.userAgent) { + requestContext.setHeaderParam("User-Agent", this.userAgent); + } + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async getIntegrationAccount( + integrationId: IntegrationAccountIntegrationId, + interfaceId: IntegrationAccountInterfaceId, + accountId: string, + _options?: Configuration, + ): Promise { + const _config = _options || this.configuration; + + if ( + !_config.unstableOperations[ + "IntegrationAccountsApi.v2.getIntegrationAccount" + ] + ) { + throw new Error( + "Unstable operation 'getIntegrationAccount' is disabled. Enable it by setting `configuration.unstableOperations['IntegrationAccountsApi.v2.getIntegrationAccount'] = true`", + ); + } + + // verify required parameter 'integrationId' is not null or undefined + if (integrationId === null || integrationId === undefined) { + throw new RequiredError("integrationId", "getIntegrationAccount"); + } + + // verify required parameter 'interfaceId' is not null or undefined + if (interfaceId === null || interfaceId === undefined) { + throw new RequiredError("interfaceId", "getIntegrationAccount"); + } + + // verify required parameter 'accountId' is not null or undefined + if (accountId === null || accountId === undefined) { + throw new RequiredError("accountId", "getIntegrationAccount"); + } + + // Path Params + const localVarPath = + "/api/v2/integrations/{integration_id}/interfaces/{interface_id}/accounts/{account_id}" + .replace("{integration_id}", encodeURIComponent(String(integrationId))) + .replace("{interface_id}", encodeURIComponent(String(interfaceId))) + .replace("{account_id}", encodeURIComponent(String(accountId))); + + // Make Request Context + const { server, overrides } = _config.getServerAndOverrides( + "IntegrationAccountsApi.v2.getIntegrationAccount", + IntegrationAccountsApi.operationServers, + ); + const requestContext = server.makeRequestContext( + localVarPath, + HttpMethod.GET, + overrides, + ); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Set User-Agent + if (this.userAgent) { + requestContext.setHeaderParam("User-Agent", this.userAgent); + } + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async listIntegrationAccounts( + integrationId: IntegrationAccountIntegrationId, + interfaceId: IntegrationAccountInterfaceId, + _options?: Configuration, + ): Promise { + const _config = _options || this.configuration; + + if ( + !_config.unstableOperations[ + "IntegrationAccountsApi.v2.listIntegrationAccounts" + ] + ) { + throw new Error( + "Unstable operation 'listIntegrationAccounts' is disabled. Enable it by setting `configuration.unstableOperations['IntegrationAccountsApi.v2.listIntegrationAccounts'] = true`", + ); + } + + // verify required parameter 'integrationId' is not null or undefined + if (integrationId === null || integrationId === undefined) { + throw new RequiredError("integrationId", "listIntegrationAccounts"); + } + + // verify required parameter 'interfaceId' is not null or undefined + if (interfaceId === null || interfaceId === undefined) { + throw new RequiredError("interfaceId", "listIntegrationAccounts"); + } + + // Path Params + const localVarPath = + "/api/v2/integrations/{integration_id}/interfaces/{interface_id}/accounts" + .replace("{integration_id}", encodeURIComponent(String(integrationId))) + .replace("{interface_id}", encodeURIComponent(String(interfaceId))); + + // Make Request Context + const { server, overrides } = _config.getServerAndOverrides( + "IntegrationAccountsApi.v2.listIntegrationAccounts", + IntegrationAccountsApi.operationServers, + ); + const requestContext = server.makeRequestContext( + localVarPath, + HttpMethod.GET, + overrides, + ); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Set User-Agent + if (this.userAgent) { + requestContext.setHeaderParam("User-Agent", this.userAgent); + } + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async updateIntegrationAccount( + integrationId: IntegrationAccountIntegrationId, + interfaceId: IntegrationAccountInterfaceId, + accountId: string, + body: IntegrationAccountUpdateRequest, + _options?: Configuration, + ): Promise { + const _config = _options || this.configuration; + + if ( + !_config.unstableOperations[ + "IntegrationAccountsApi.v2.updateIntegrationAccount" + ] + ) { + throw new Error( + "Unstable operation 'updateIntegrationAccount' is disabled. Enable it by setting `configuration.unstableOperations['IntegrationAccountsApi.v2.updateIntegrationAccount'] = true`", + ); + } + + // verify required parameter 'integrationId' is not null or undefined + if (integrationId === null || integrationId === undefined) { + throw new RequiredError("integrationId", "updateIntegrationAccount"); + } + + // verify required parameter 'interfaceId' is not null or undefined + if (interfaceId === null || interfaceId === undefined) { + throw new RequiredError("interfaceId", "updateIntegrationAccount"); + } + + // verify required parameter 'accountId' is not null or undefined + if (accountId === null || accountId === undefined) { + throw new RequiredError("accountId", "updateIntegrationAccount"); + } + + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError("body", "updateIntegrationAccount"); + } + + // Path Params + const localVarPath = + "/api/v2/integrations/{integration_id}/interfaces/{interface_id}/accounts/{account_id}" + .replace("{integration_id}", encodeURIComponent(String(integrationId))) + .replace("{interface_id}", encodeURIComponent(String(interfaceId))) + .replace("{account_id}", encodeURIComponent(String(accountId))); + + // Make Request Context + const { server, overrides } = _config.getServerAndOverrides( + "IntegrationAccountsApi.v2.updateIntegrationAccount", + IntegrationAccountsApi.operationServers, + ); + const requestContext = server.makeRequestContext( + localVarPath, + HttpMethod.PATCH, + overrides, + ); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Set User-Agent + if (this.userAgent) { + requestContext.setHeaderParam("User-Agent", this.userAgent); + } + + // Body Params + const contentType = getPreferredMediaType(["application/json"]); + requestContext.setHeaderParam("Content-Type", contentType); + const serializedBody = stringify( + serialize(body, TypingInfo, "IntegrationAccountUpdateRequest", ""), + contentType, + ); + requestContext.setBody(serializedBody); + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } +} + +export class IntegrationAccountsApiResponseProcessor { + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to createIntegrationAccount + * @throws ApiException if the response code was not in [200, 299] + */ + public async createIntegrationAccount( + response: ResponseContext, + ): Promise { + const contentType = normalizeMediaType(response.headers["content-type"]); + if (response.httpStatusCode === 201) { + const body: IntegrationAccountResponse = deserialize( + parse(await response.body.text(), contentType), + TypingInfo, + "IntegrationAccountResponse", + ) as IntegrationAccountResponse; + return body; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = parse(await response.body.text(), contentType); + let body: APIErrorResponse; + try { + body = deserialize( + bodyText, + TypingInfo, + "APIErrorResponse", + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText, + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: IntegrationAccountResponse = deserialize( + parse(await response.body.text(), contentType), + TypingInfo, + "IntegrationAccountResponse", + "", + ) as IntegrationAccountResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"', + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to deleteIntegrationAccount + * @throws ApiException if the response code was not in [200, 299] + */ + public async deleteIntegrationAccount( + response: ResponseContext, + ): Promise { + const contentType = normalizeMediaType(response.headers["content-type"]); + if (response.httpStatusCode === 204) { + return; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = parse(await response.body.text(), contentType); + let body: APIErrorResponse; + try { + body = deserialize( + bodyText, + TypingInfo, + "APIErrorResponse", + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText, + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + return; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"', + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to getIntegrationAccount + * @throws ApiException if the response code was not in [200, 299] + */ + public async getIntegrationAccount( + response: ResponseContext, + ): Promise { + const contentType = normalizeMediaType(response.headers["content-type"]); + if (response.httpStatusCode === 200) { + const body: IntegrationAccountResponse = deserialize( + parse(await response.body.text(), contentType), + TypingInfo, + "IntegrationAccountResponse", + ) as IntegrationAccountResponse; + return body; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = parse(await response.body.text(), contentType); + let body: APIErrorResponse; + try { + body = deserialize( + bodyText, + TypingInfo, + "APIErrorResponse", + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText, + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: IntegrationAccountResponse = deserialize( + parse(await response.body.text(), contentType), + TypingInfo, + "IntegrationAccountResponse", + "", + ) as IntegrationAccountResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"', + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to listIntegrationAccounts + * @throws ApiException if the response code was not in [200, 299] + */ + public async listIntegrationAccounts( + response: ResponseContext, + ): Promise { + const contentType = normalizeMediaType(response.headers["content-type"]); + if (response.httpStatusCode === 200) { + const body: IntegrationAccountsResponse = deserialize( + parse(await response.body.text(), contentType), + TypingInfo, + "IntegrationAccountsResponse", + ) as IntegrationAccountsResponse; + return body; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = parse(await response.body.text(), contentType); + let body: APIErrorResponse; + try { + body = deserialize( + bodyText, + TypingInfo, + "APIErrorResponse", + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText, + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: IntegrationAccountsResponse = deserialize( + parse(await response.body.text(), contentType), + TypingInfo, + "IntegrationAccountsResponse", + "", + ) as IntegrationAccountsResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"', + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to updateIntegrationAccount + * @throws ApiException if the response code was not in [200, 299] + */ + public async updateIntegrationAccount( + response: ResponseContext, + ): Promise { + const contentType = normalizeMediaType(response.headers["content-type"]); + if (response.httpStatusCode === 200) { + const body: IntegrationAccountResponse = deserialize( + parse(await response.body.text(), contentType), + TypingInfo, + "IntegrationAccountResponse", + ) as IntegrationAccountResponse; + return body; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = parse(await response.body.text(), contentType); + let body: APIErrorResponse; + try { + body = deserialize( + bodyText, + TypingInfo, + "APIErrorResponse", + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText, + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: IntegrationAccountResponse = deserialize( + parse(await response.body.text(), contentType), + TypingInfo, + "IntegrationAccountResponse", + "", + ) as IntegrationAccountResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"', + ); + } +} + +export interface IntegrationAccountsApiCreateIntegrationAccountRequest { + /** + * Grouping/RBAC scope. Selects the integration whose accounts are addressed. + * @type IntegrationAccountIntegrationId + */ + integrationId: IntegrationAccountIntegrationId; + /** + * Selects the interface (source-type) within the integration. + * @type IntegrationAccountInterfaceId + */ + interfaceId: IntegrationAccountInterfaceId; + /** + * @type IntegrationAccountRequest + */ + body: IntegrationAccountRequest; +} + +export interface IntegrationAccountsApiDeleteIntegrationAccountRequest { + /** + * Grouping/RBAC scope. Selects the integration whose accounts are addressed. + * @type IntegrationAccountIntegrationId + */ + integrationId: IntegrationAccountIntegrationId; + /** + * Selects the interface (source-type) within the integration. + * @type IntegrationAccountInterfaceId + */ + interfaceId: IntegrationAccountInterfaceId; + /** + * Unique identifier of the integration account. + * @type string + */ + accountId: string; +} + +export interface IntegrationAccountsApiGetIntegrationAccountRequest { + /** + * Grouping/RBAC scope. Selects the integration whose accounts are addressed. + * @type IntegrationAccountIntegrationId + */ + integrationId: IntegrationAccountIntegrationId; + /** + * Selects the interface (source-type) within the integration. + * @type IntegrationAccountInterfaceId + */ + interfaceId: IntegrationAccountInterfaceId; + /** + * Unique identifier of the integration account. + * @type string + */ + accountId: string; +} + +export interface IntegrationAccountsApiListIntegrationAccountsRequest { + /** + * Grouping/RBAC scope. Selects the integration whose accounts are addressed. + * @type IntegrationAccountIntegrationId + */ + integrationId: IntegrationAccountIntegrationId; + /** + * Selects the interface (source-type) within the integration. + * @type IntegrationAccountInterfaceId + */ + interfaceId: IntegrationAccountInterfaceId; +} + +export interface IntegrationAccountsApiUpdateIntegrationAccountRequest { + /** + * Grouping/RBAC scope. Selects the integration whose accounts are addressed. + * @type IntegrationAccountIntegrationId + */ + integrationId: IntegrationAccountIntegrationId; + /** + * Selects the interface (source-type) within the integration. + * @type IntegrationAccountInterfaceId + */ + interfaceId: IntegrationAccountInterfaceId; + /** + * Unique identifier of the integration account. + * @type string + */ + accountId: string; + /** + * @type IntegrationAccountUpdateRequest + */ + body: IntegrationAccountUpdateRequest; +} + +export class IntegrationAccountsApi { + private requestFactory: IntegrationAccountsApiRequestFactory; + private responseProcessor: IntegrationAccountsApiResponseProcessor; + private configuration: Configuration; + + static operationServers: { [key: string]: BaseServerConfiguration[] } = {}; + + public constructor( + configuration?: Configuration, + requestFactory?: IntegrationAccountsApiRequestFactory, + responseProcessor?: IntegrationAccountsApiResponseProcessor, + ) { + this.configuration = configuration || createConfiguration(); + this.requestFactory = + requestFactory || + new IntegrationAccountsApiRequestFactory(this.configuration); + this.responseProcessor = + responseProcessor || new IntegrationAccountsApiResponseProcessor(); + } + + /** + * Create an integration account for a given integration/interface. + * @param param The request object + */ + public createIntegrationAccount( + param: IntegrationAccountsApiCreateIntegrationAccountRequest, + options?: Configuration, + ): Promise { + const requestContextPromise = this.requestFactory.createIntegrationAccount( + param.integrationId, + param.interfaceId, + param.body, + options, + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.createIntegrationAccount( + responseContext, + ); + }); + }); + } + + /** + * Delete an integration account. + * @param param The request object + */ + public deleteIntegrationAccount( + param: IntegrationAccountsApiDeleteIntegrationAccountRequest, + options?: Configuration, + ): Promise { + const requestContextPromise = this.requestFactory.deleteIntegrationAccount( + param.integrationId, + param.interfaceId, + param.accountId, + options, + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.deleteIntegrationAccount( + responseContext, + ); + }); + }); + } + + /** + * Get a single integration account. + * @param param The request object + */ + public getIntegrationAccount( + param: IntegrationAccountsApiGetIntegrationAccountRequest, + options?: Configuration, + ): Promise { + const requestContextPromise = this.requestFactory.getIntegrationAccount( + param.integrationId, + param.interfaceId, + param.accountId, + options, + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.getIntegrationAccount(responseContext); + }); + }); + } + + /** + * List the integration accounts for a given integration/interface. + * @param param The request object + */ + public listIntegrationAccounts( + param: IntegrationAccountsApiListIntegrationAccountsRequest, + options?: Configuration, + ): Promise { + const requestContextPromise = this.requestFactory.listIntegrationAccounts( + param.integrationId, + param.interfaceId, + options, + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.listIntegrationAccounts( + responseContext, + ); + }); + }); + } + + /** + * 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 param The request object + */ + public updateIntegrationAccount( + param: IntegrationAccountsApiUpdateIntegrationAccountRequest, + options?: Configuration, + ): Promise { + const requestContextPromise = this.requestFactory.updateIntegrationAccount( + param.integrationId, + param.interfaceId, + param.accountId, + param.body, + options, + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.updateIntegrationAccount( + responseContext, + ); + }); + }); + } +} diff --git a/services/integration_accounts/src/v2/index.ts b/services/integration_accounts/src/v2/index.ts new file mode 100644 index 000000000000..540fb331f21f --- /dev/null +++ b/services/integration_accounts/src/v2/index.ts @@ -0,0 +1,65 @@ +export { + IntegrationAccountsApiCreateIntegrationAccountRequest, + IntegrationAccountsApiDeleteIntegrationAccountRequest, + IntegrationAccountsApiGetIntegrationAccountRequest, + IntegrationAccountsApiListIntegrationAccountsRequest, + IntegrationAccountsApiUpdateIntegrationAccountRequest, + IntegrationAccountsApi, +} from "./IntegrationAccountsApi"; + +export { APIErrorResponse } from "./models/APIErrorResponse"; +export { ElasticCloudAuthentication } from "./models/ElasticCloudAuthentication"; +export { ElasticCloudBasicAuth } from "./models/ElasticCloudBasicAuth"; +export { ElasticCloudBasicAuthType } from "./models/ElasticCloudBasicAuthType"; +export { ElasticCloudCcmAuthentication } from "./models/ElasticCloudCcmAuthentication"; +export { ElasticCloudCcmDataflow } from "./models/ElasticCloudCcmDataflow"; +export { ElasticCloudCcmDataflowId } from "./models/ElasticCloudCcmDataflowId"; +export { ElasticCloudCcmInterface } from "./models/ElasticCloudCcmInterface"; +export { ElasticCloudCcmInterfaceType } from "./models/ElasticCloudCcmInterfaceType"; +export { ElasticCloudCcmInterfaceUpdate } from "./models/ElasticCloudCcmInterfaceUpdate"; +export { ElasticCloudCcmSettings } from "./models/ElasticCloudCcmSettings"; +export { ElasticCloudCcmSettingsUpdate } from "./models/ElasticCloudCcmSettingsUpdate"; +export { ElasticCloudCcmTokenAuth } from "./models/ElasticCloudCcmTokenAuth"; +export { ElasticCloudCcmTokenAuthType } from "./models/ElasticCloudCcmTokenAuthType"; +export { ElasticCloudDataflow } from "./models/ElasticCloudDataflow"; +export { ElasticCloudDataflowId } from "./models/ElasticCloudDataflowId"; +export { ElasticCloudIntegration } from "./models/ElasticCloudIntegration"; +export { ElasticCloudIntegrationType } from "./models/ElasticCloudIntegrationType"; +export { ElasticCloudIntegrationUpdate } from "./models/ElasticCloudIntegrationUpdate"; +export { ElasticCloudInterface } from "./models/ElasticCloudInterface"; +export { ElasticCloudInterfaceUpdate } from "./models/ElasticCloudInterfaceUpdate"; +export { ElasticCloudMonitoringInterface } from "./models/ElasticCloudMonitoringInterface"; +export { ElasticCloudMonitoringInterfaceType } from "./models/ElasticCloudMonitoringInterfaceType"; +export { ElasticCloudMonitoringInterfaceUpdate } from "./models/ElasticCloudMonitoringInterfaceUpdate"; +export { ElasticCloudSettings } from "./models/ElasticCloudSettings"; +export { ElasticCloudSettingsUpdate } from "./models/ElasticCloudSettingsUpdate"; +export { IntegrationAccountAttributes } from "./models/IntegrationAccountAttributes"; +export { IntegrationAccountCreateData } from "./models/IntegrationAccountCreateData"; +export { IntegrationAccountData } from "./models/IntegrationAccountData"; +export { IntegrationAccountDataflowHealth } from "./models/IntegrationAccountDataflowHealth"; +export { IntegrationAccountDataflowStatus } from "./models/IntegrationAccountDataflowStatus"; +export { IntegrationAccountIntegration } from "./models/IntegrationAccountIntegration"; +export { IntegrationAccountIntegrationId } from "./models/IntegrationAccountIntegrationId"; +export { IntegrationAccountIntegrationUpdate } from "./models/IntegrationAccountIntegrationUpdate"; +export { IntegrationAccountInterfaceId } from "./models/IntegrationAccountInterfaceId"; +export { IntegrationAccountPermissions } from "./models/IntegrationAccountPermissions"; +export { IntegrationAccountRequest } from "./models/IntegrationAccountRequest"; +export { IntegrationAccountResponse } from "./models/IntegrationAccountResponse"; +export { IntegrationAccountsResponse } from "./models/IntegrationAccountsResponse"; +export { IntegrationAccountType } from "./models/IntegrationAccountType"; +export { IntegrationAccountUpdateAttributes } from "./models/IntegrationAccountUpdateAttributes"; +export { IntegrationAccountUpdateData } from "./models/IntegrationAccountUpdateData"; +export { IntegrationAccountUpdateRequest } from "./models/IntegrationAccountUpdateRequest"; +export { TwilioAuthentication } from "./models/TwilioAuthentication"; +export { TwilioBasicAuth } from "./models/TwilioBasicAuth"; +export { TwilioBasicAuthType } from "./models/TwilioBasicAuthType"; +export { TwilioDataflow } from "./models/TwilioDataflow"; +export { TwilioDataflowId } from "./models/TwilioDataflowId"; +export { TwilioIntegration } from "./models/TwilioIntegration"; +export { TwilioIntegrationType } from "./models/TwilioIntegrationType"; +export { TwilioIntegrationUpdate } from "./models/TwilioIntegrationUpdate"; +export { TwilioInterface } from "./models/TwilioInterface"; +export { TwilioInterfaceType } from "./models/TwilioInterfaceType"; +export { TwilioInterfaceUpdate } from "./models/TwilioInterfaceUpdate"; +export { TwilioSettings } from "./models/TwilioSettings"; +export { TwilioSettingsUpdate } from "./models/TwilioSettingsUpdate"; diff --git a/services/integration_accounts/src/v2/models/APIErrorResponse.ts b/services/integration_accounts/src/v2/models/APIErrorResponse.ts new file mode 100644 index 000000000000..58d6c35b80f0 --- /dev/null +++ b/services/integration_accounts/src/v2/models/APIErrorResponse.ts @@ -0,0 +1,45 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +/** + * API error response. + */ +export class APIErrorResponse { + /** + * A list of errors. + */ + "errors": Array; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + errors: { + baseName: "errors", + type: "Array", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return APIErrorResponse.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudAuthentication.ts b/services/integration_accounts/src/v2/models/ElasticCloudAuthentication.ts new file mode 100644 index 000000000000..e818f6170f31 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudAuthentication.ts @@ -0,0 +1,8 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +import { ElasticCloudBasicAuth } from "./ElasticCloudBasicAuth"; + +/** + * Authentication methods supported by the Elastic Cloud interface. Exactly one is set, selected by its `type`. + */ +export type ElasticCloudAuthentication = ElasticCloudBasicAuth | UnparsedObject; diff --git a/services/integration_accounts/src/v2/models/ElasticCloudBasicAuth.ts b/services/integration_accounts/src/v2/models/ElasticCloudBasicAuth.ts new file mode 100644 index 000000000000..383847144a91 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudBasicAuth.ts @@ -0,0 +1,65 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { ElasticCloudBasicAuthType } from "./ElasticCloudBasicAuthType"; + +/** + * Username & password authentication for Elastic Cloud. + */ +export class ElasticCloudBasicAuth { + /** + * Password used to authenticate against the deployment. + */ + "password": string; + /** + * Authentication method discriminator. + */ + "type": ElasticCloudBasicAuthType; + /** + * Username used to authenticate against the deployment. + */ + "username": string; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + password: { + baseName: "password", + type: "string", + required: true, + }, + type: { + baseName: "type", + type: "ElasticCloudBasicAuthType", + required: true, + }, + username: { + baseName: "username", + type: "string", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudBasicAuth.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudBasicAuthType.ts b/services/integration_accounts/src/v2/models/ElasticCloudBasicAuthType.ts new file mode 100644 index 000000000000..3c802827df5f --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudBasicAuthType.ts @@ -0,0 +1,7 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Authentication method discriminator. + */ +export type ElasticCloudBasicAuthType = typeof BASIC | UnparsedObject; +export const BASIC = "basic"; diff --git a/services/integration_accounts/src/v2/models/ElasticCloudCcmAuthentication.ts b/services/integration_accounts/src/v2/models/ElasticCloudCcmAuthentication.ts new file mode 100644 index 000000000000..a62f96e8ca27 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudCcmAuthentication.ts @@ -0,0 +1,10 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +import { ElasticCloudCcmTokenAuth } from "./ElasticCloudCcmTokenAuth"; + +/** + * Authentication methods supported by the Elastic Cloud CCM interface. Exactly one is set, selected by its `type`. + */ +export type ElasticCloudCcmAuthentication = + | ElasticCloudCcmTokenAuth + | UnparsedObject; diff --git a/services/integration_accounts/src/v2/models/ElasticCloudCcmDataflow.ts b/services/integration_accounts/src/v2/models/ElasticCloudCcmDataflow.ts new file mode 100644 index 000000000000..21f4ceff0110 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudCcmDataflow.ts @@ -0,0 +1,64 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { ElasticCloudCcmDataflowId } from "./ElasticCloudCcmDataflowId"; +import { IntegrationAccountDataflowStatus } from "./IntegrationAccountDataflowStatus"; + +/** + * An Elastic Cloud CCM dataflow toggle. The set of dataflow ids is fixed by the interface schema. + */ +export class ElasticCloudCcmDataflow { + /** + * Whether the dataflow is enabled. + */ + "enabled"?: boolean; + /** + * Identifier of an Elastic Cloud CCM dataflow. + */ + "id": ElasticCloudCcmDataflowId; + /** + * Read-only, server-computed collection status of a dataflow. + */ + "status"?: IntegrationAccountDataflowStatus; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + enabled: { + baseName: "enabled", + type: "boolean", + }, + id: { + baseName: "id", + type: "ElasticCloudCcmDataflowId", + required: true, + }, + status: { + baseName: "status", + type: "IntegrationAccountDataflowStatus", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudCcmDataflow.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudCcmDataflowId.ts b/services/integration_accounts/src/v2/models/ElasticCloudCcmDataflowId.ts new file mode 100644 index 000000000000..c607b2419891 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudCcmDataflowId.ts @@ -0,0 +1,7 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Identifier of an Elastic Cloud CCM dataflow. + */ +export type ElasticCloudCcmDataflowId = typeof COST_DATA | UnparsedObject; +export const COST_DATA = "elastic-cloud-cost-data"; diff --git a/services/integration_accounts/src/v2/models/ElasticCloudCcmInterface.ts b/services/integration_accounts/src/v2/models/ElasticCloudCcmInterface.ts new file mode 100644 index 000000000000..e7f60d1c9e28 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudCcmInterface.ts @@ -0,0 +1,75 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { ElasticCloudCcmAuthentication } from "./ElasticCloudCcmAuthentication"; +import { ElasticCloudCcmDataflow } from "./ElasticCloudCcmDataflow"; +import { ElasticCloudCcmInterfaceType } from "./ElasticCloudCcmInterfaceType"; +import { ElasticCloudCcmSettings } from "./ElasticCloudCcmSettings"; + +/** + * Elastic Cloud CCM (Cloud Cost Management) interface configuration. + */ +export class ElasticCloudCcmInterface { + /** + * Authentication methods supported by the Elastic Cloud CCM interface. Exactly one is set, selected by its `type`. + */ + "authentication": ElasticCloudCcmAuthentication; + /** + * Dataflows for the Elastic Cloud CCM interface. + */ + "dataflows"?: Array; + /** + * Elastic Cloud CCM interface settings. + */ + "settings"?: ElasticCloudCcmSettings; + /** + * Interface discriminator for the Elastic Cloud CCM interface. + */ + "type": ElasticCloudCcmInterfaceType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + authentication: { + baseName: "authentication", + type: "ElasticCloudCcmAuthentication", + required: true, + }, + dataflows: { + baseName: "dataflows", + type: "Array", + }, + settings: { + baseName: "settings", + type: "ElasticCloudCcmSettings", + }, + type: { + baseName: "type", + type: "ElasticCloudCcmInterfaceType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudCcmInterface.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudCcmInterfaceType.ts b/services/integration_accounts/src/v2/models/ElasticCloudCcmInterfaceType.ts new file mode 100644 index 000000000000..bf90e545a5fe --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudCcmInterfaceType.ts @@ -0,0 +1,9 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Interface discriminator for the Elastic Cloud CCM interface. + */ +export type ElasticCloudCcmInterfaceType = + | typeof ELASTIC_CLOUD_CCM + | UnparsedObject; +export const ELASTIC_CLOUD_CCM = "elastic-cloud-ccm"; diff --git a/services/integration_accounts/src/v2/models/ElasticCloudCcmInterfaceUpdate.ts b/services/integration_accounts/src/v2/models/ElasticCloudCcmInterfaceUpdate.ts new file mode 100644 index 000000000000..6cdde69134f0 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudCcmInterfaceUpdate.ts @@ -0,0 +1,74 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { ElasticCloudCcmAuthentication } from "./ElasticCloudCcmAuthentication"; +import { ElasticCloudCcmDataflow } from "./ElasticCloudCcmDataflow"; +import { ElasticCloudCcmInterfaceType } from "./ElasticCloudCcmInterfaceType"; +import { ElasticCloudCcmSettingsUpdate } from "./ElasticCloudCcmSettingsUpdate"; + +/** + * Partial Elastic Cloud CCM interface for updates. + */ +export class ElasticCloudCcmInterfaceUpdate { + /** + * Authentication methods supported by the Elastic Cloud CCM interface. Exactly one is set, selected by its `type`. + */ + "authentication"?: ElasticCloudCcmAuthentication; + /** + * Dataflows for the Elastic Cloud CCM interface. + */ + "dataflows"?: Array; + /** + * Partial Elastic Cloud CCM interface settings for updates. + */ + "settings"?: ElasticCloudCcmSettingsUpdate; + /** + * Interface discriminator for the Elastic Cloud CCM interface. + */ + "type": ElasticCloudCcmInterfaceType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + authentication: { + baseName: "authentication", + type: "ElasticCloudCcmAuthentication", + }, + dataflows: { + baseName: "dataflows", + type: "Array", + }, + settings: { + baseName: "settings", + type: "ElasticCloudCcmSettingsUpdate", + }, + type: { + baseName: "type", + type: "ElasticCloudCcmInterfaceType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudCcmInterfaceUpdate.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudCcmSettings.ts b/services/integration_accounts/src/v2/models/ElasticCloudCcmSettings.ts new file mode 100644 index 000000000000..f3c2f5bbe455 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudCcmSettings.ts @@ -0,0 +1,45 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +/** + * Elastic Cloud CCM interface settings. + */ +export class ElasticCloudCcmSettings { + /** + * Your Elastic Cloud organization ID, found in your organization settings. + */ + "elasticOrgId": string; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + elasticOrgId: { + baseName: "elastic_org_id", + type: "string", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudCcmSettings.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudCcmSettingsUpdate.ts b/services/integration_accounts/src/v2/models/ElasticCloudCcmSettingsUpdate.ts new file mode 100644 index 000000000000..ea3514ff10b0 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudCcmSettingsUpdate.ts @@ -0,0 +1,44 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +/** + * Partial Elastic Cloud CCM interface settings for updates. + */ +export class ElasticCloudCcmSettingsUpdate { + /** + * Your Elastic Cloud organization ID, found in your organization settings. + */ + "elasticOrgId"?: string; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + elasticOrgId: { + baseName: "elastic_org_id", + type: "string", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudCcmSettingsUpdate.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudCcmTokenAuth.ts b/services/integration_accounts/src/v2/models/ElasticCloudCcmTokenAuth.ts new file mode 100644 index 000000000000..da29fe2d64ab --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudCcmTokenAuth.ts @@ -0,0 +1,56 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { ElasticCloudCcmTokenAuthType } from "./ElasticCloudCcmTokenAuthType"; + +/** + * Encrypted token (bearer token) authentication for Elastic Cloud CCM. + */ +export class ElasticCloudCcmTokenAuth { + /** + * Billing API key. An Elastic Cloud API key with read access to both Billing and Deployments. Create one under Organization settings > API Keys. + */ + "apiKey": string; + /** + * Authentication method discriminator. + */ + "type": ElasticCloudCcmTokenAuthType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + apiKey: { + baseName: "api_key", + type: "string", + required: true, + }, + type: { + baseName: "type", + type: "ElasticCloudCcmTokenAuthType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudCcmTokenAuth.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudCcmTokenAuthType.ts b/services/integration_accounts/src/v2/models/ElasticCloudCcmTokenAuthType.ts new file mode 100644 index 000000000000..d2b80a871599 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudCcmTokenAuthType.ts @@ -0,0 +1,7 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Authentication method discriminator. + */ +export type ElasticCloudCcmTokenAuthType = typeof BEARER_TOKEN | UnparsedObject; +export const BEARER_TOKEN = "bearer_token"; diff --git a/services/integration_accounts/src/v2/models/ElasticCloudDataflow.ts b/services/integration_accounts/src/v2/models/ElasticCloudDataflow.ts new file mode 100644 index 000000000000..01eae6175a02 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudDataflow.ts @@ -0,0 +1,64 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { ElasticCloudDataflowId } from "./ElasticCloudDataflowId"; +import { IntegrationAccountDataflowStatus } from "./IntegrationAccountDataflowStatus"; + +/** + * An Elastic Cloud dataflow toggle. The set of dataflow ids is fixed by the interface schema. + */ +export class ElasticCloudDataflow { + /** + * Whether the dataflow is enabled. + */ + "enabled"?: boolean; + /** + * Identifier of an Elastic Cloud dataflow. + */ + "id": ElasticCloudDataflowId; + /** + * Read-only, server-computed collection status of a dataflow. + */ + "status"?: IntegrationAccountDataflowStatus; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + enabled: { + baseName: "enabled", + type: "boolean", + }, + id: { + baseName: "id", + type: "ElasticCloudDataflowId", + required: true, + }, + status: { + baseName: "status", + type: "IntegrationAccountDataflowStatus", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudDataflow.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudDataflowId.ts b/services/integration_accounts/src/v2/models/ElasticCloudDataflowId.ts new file mode 100644 index 000000000000..a1c14d2951f8 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudDataflowId.ts @@ -0,0 +1,7 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Identifier of an Elastic Cloud dataflow. + */ +export type ElasticCloudDataflowId = typeof METRICS | UnparsedObject; +export const METRICS = "elastic-cloud-metrics"; diff --git a/services/integration_accounts/src/v2/models/ElasticCloudIntegration.ts b/services/integration_accounts/src/v2/models/ElasticCloudIntegration.ts new file mode 100644 index 000000000000..b0378e25fa65 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudIntegration.ts @@ -0,0 +1,57 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { ElasticCloudIntegrationType } from "./ElasticCloudIntegrationType"; +import { ElasticCloudInterface } from "./ElasticCloudInterface"; + +/** + * Elastic Cloud integration configuration. + */ +export class ElasticCloudIntegration { + /** + * Elastic Cloud interface (source-type). Exactly one interface variant is set, selected by its `type`. + */ + "_interface": ElasticCloudInterface; + /** + * Integration discriminator for Elastic Cloud. + */ + "type": ElasticCloudIntegrationType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + _interface: { + baseName: "interface", + type: "ElasticCloudInterface", + required: true, + }, + type: { + baseName: "type", + type: "ElasticCloudIntegrationType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudIntegration.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudIntegrationType.ts b/services/integration_accounts/src/v2/models/ElasticCloudIntegrationType.ts new file mode 100644 index 000000000000..e18e90b15b0e --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudIntegrationType.ts @@ -0,0 +1,7 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Integration discriminator for Elastic Cloud. + */ +export type ElasticCloudIntegrationType = typeof ELASTIC_CLOUD | UnparsedObject; +export const ELASTIC_CLOUD = "elastic-cloud"; diff --git a/services/integration_accounts/src/v2/models/ElasticCloudIntegrationUpdate.ts b/services/integration_accounts/src/v2/models/ElasticCloudIntegrationUpdate.ts new file mode 100644 index 000000000000..9047d35153c7 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudIntegrationUpdate.ts @@ -0,0 +1,56 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { ElasticCloudIntegrationType } from "./ElasticCloudIntegrationType"; +import { ElasticCloudInterfaceUpdate } from "./ElasticCloudInterfaceUpdate"; + +/** + * Partial Elastic Cloud integration configuration for updates. + */ +export class ElasticCloudIntegrationUpdate { + /** + * Partial Elastic Cloud interface for updates. Exactly one interface variant is set, selected by its `type`. + */ + "_interface"?: ElasticCloudInterfaceUpdate; + /** + * Integration discriminator for Elastic Cloud. + */ + "type": ElasticCloudIntegrationType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + _interface: { + baseName: "interface", + type: "ElasticCloudInterfaceUpdate", + }, + type: { + baseName: "type", + type: "ElasticCloudIntegrationType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudIntegrationUpdate.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudInterface.ts b/services/integration_accounts/src/v2/models/ElasticCloudInterface.ts new file mode 100644 index 000000000000..292b538fec07 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudInterface.ts @@ -0,0 +1,12 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +import { ElasticCloudCcmInterface } from "./ElasticCloudCcmInterface"; +import { ElasticCloudMonitoringInterface } from "./ElasticCloudMonitoringInterface"; + +/** + * Elastic Cloud interface (source-type). Exactly one interface variant is set, selected by its `type`. + */ +export type ElasticCloudInterface = + | ElasticCloudMonitoringInterface + | ElasticCloudCcmInterface + | UnparsedObject; diff --git a/services/integration_accounts/src/v2/models/ElasticCloudInterfaceUpdate.ts b/services/integration_accounts/src/v2/models/ElasticCloudInterfaceUpdate.ts new file mode 100644 index 000000000000..f899ce1eed0b --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudInterfaceUpdate.ts @@ -0,0 +1,12 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +import { ElasticCloudCcmInterfaceUpdate } from "./ElasticCloudCcmInterfaceUpdate"; +import { ElasticCloudMonitoringInterfaceUpdate } from "./ElasticCloudMonitoringInterfaceUpdate"; + +/** + * Partial Elastic Cloud interface for updates. Exactly one interface variant is set, selected by its `type`. + */ +export type ElasticCloudInterfaceUpdate = + | ElasticCloudMonitoringInterfaceUpdate + | ElasticCloudCcmInterfaceUpdate + | UnparsedObject; diff --git a/services/integration_accounts/src/v2/models/ElasticCloudMonitoringInterface.ts b/services/integration_accounts/src/v2/models/ElasticCloudMonitoringInterface.ts new file mode 100644 index 000000000000..69cb0570749f --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudMonitoringInterface.ts @@ -0,0 +1,75 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { ElasticCloudAuthentication } from "./ElasticCloudAuthentication"; +import { ElasticCloudDataflow } from "./ElasticCloudDataflow"; +import { ElasticCloudMonitoringInterfaceType } from "./ElasticCloudMonitoringInterfaceType"; +import { ElasticCloudSettings } from "./ElasticCloudSettings"; + +/** + * Elastic Cloud monitoring interface (source-type) configuration. + */ +export class ElasticCloudMonitoringInterface { + /** + * Authentication methods supported by the Elastic Cloud interface. Exactly one is set, selected by its `type`. + */ + "authentication": ElasticCloudAuthentication; + /** + * Dataflows for the Elastic Cloud monitoring interface. + */ + "dataflows"?: Array; + /** + * Elastic Cloud interface settings. + */ + "settings"?: ElasticCloudSettings; + /** + * Interface discriminator for the Elastic Cloud monitoring interface. + */ + "type": ElasticCloudMonitoringInterfaceType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + authentication: { + baseName: "authentication", + type: "ElasticCloudAuthentication", + required: true, + }, + dataflows: { + baseName: "dataflows", + type: "Array", + }, + settings: { + baseName: "settings", + type: "ElasticCloudSettings", + }, + type: { + baseName: "type", + type: "ElasticCloudMonitoringInterfaceType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudMonitoringInterface.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudMonitoringInterfaceType.ts b/services/integration_accounts/src/v2/models/ElasticCloudMonitoringInterfaceType.ts new file mode 100644 index 000000000000..93574ab86d1c --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudMonitoringInterfaceType.ts @@ -0,0 +1,9 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Interface discriminator for the Elastic Cloud monitoring interface. + */ +export type ElasticCloudMonitoringInterfaceType = + | typeof ELASTIC_CLOUD + | UnparsedObject; +export const ELASTIC_CLOUD = "elastic-cloud"; diff --git a/services/integration_accounts/src/v2/models/ElasticCloudMonitoringInterfaceUpdate.ts b/services/integration_accounts/src/v2/models/ElasticCloudMonitoringInterfaceUpdate.ts new file mode 100644 index 000000000000..d6051b7a8ff2 --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudMonitoringInterfaceUpdate.ts @@ -0,0 +1,74 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { ElasticCloudAuthentication } from "./ElasticCloudAuthentication"; +import { ElasticCloudDataflow } from "./ElasticCloudDataflow"; +import { ElasticCloudMonitoringInterfaceType } from "./ElasticCloudMonitoringInterfaceType"; +import { ElasticCloudSettingsUpdate } from "./ElasticCloudSettingsUpdate"; + +/** + * Partial Elastic Cloud monitoring interface for updates. + */ +export class ElasticCloudMonitoringInterfaceUpdate { + /** + * Authentication methods supported by the Elastic Cloud interface. Exactly one is set, selected by its `type`. + */ + "authentication"?: ElasticCloudAuthentication; + /** + * Dataflows for the Elastic Cloud monitoring interface. + */ + "dataflows"?: Array; + /** + * Partial Elastic Cloud interface settings for updates. + */ + "settings"?: ElasticCloudSettingsUpdate; + /** + * Interface discriminator for the Elastic Cloud monitoring interface. + */ + "type": ElasticCloudMonitoringInterfaceType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + authentication: { + baseName: "authentication", + type: "ElasticCloudAuthentication", + }, + dataflows: { + baseName: "dataflows", + type: "Array", + }, + settings: { + baseName: "settings", + type: "ElasticCloudSettingsUpdate", + }, + type: { + baseName: "type", + type: "ElasticCloudMonitoringInterfaceType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudMonitoringInterfaceUpdate.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudSettings.ts b/services/integration_accounts/src/v2/models/ElasticCloudSettings.ts new file mode 100644 index 000000000000..0c2dbe72206f --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudSettings.ts @@ -0,0 +1,109 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +/** + * Elastic Cloud interface settings. + */ +export class ElasticCloudSettings { + /** + * Enable to collect shard allocation metrics. + */ + "catAllocationStatsEnabled"?: boolean; + /** + * Enable to collect index-specific stats. + */ + "detailedIndexStatsEnabled"?: boolean; + /** + * Enable to collect metrics about the indices in your cluster. + */ + "indexStatsEnabled"?: boolean; + /** + * Enable to collect metrics about pending tasks. + */ + "pendingTaskStatsEnabled"?: boolean; + /** + * Enable to collect all metrics even if primary shard metric collection times out. + */ + "pshardGracefulToEnabled"?: boolean; + /** + * Enable to collect metrics over primary shards. + */ + "pshardStatsEnabled"?: boolean; + /** + * Enable to collect snapshot lifecycle management metrics. + */ + "slmStatsEnabled"?: boolean; + /** + * Custom tags for this deployment. + */ + "tags"?: Array; + /** + * Deployment URL. + */ + "url": string; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + catAllocationStatsEnabled: { + baseName: "cat_allocation_stats_enabled", + type: "boolean", + }, + detailedIndexStatsEnabled: { + baseName: "detailed_index_stats_enabled", + type: "boolean", + }, + indexStatsEnabled: { + baseName: "index_stats_enabled", + type: "boolean", + }, + pendingTaskStatsEnabled: { + baseName: "pending_task_stats_enabled", + type: "boolean", + }, + pshardGracefulToEnabled: { + baseName: "pshard_graceful_to_enabled", + type: "boolean", + }, + pshardStatsEnabled: { + baseName: "pshard_stats_enabled", + type: "boolean", + }, + slmStatsEnabled: { + baseName: "slm_stats_enabled", + type: "boolean", + }, + tags: { + baseName: "tags", + type: "Array", + }, + url: { + baseName: "url", + type: "string", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudSettings.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/ElasticCloudSettingsUpdate.ts b/services/integration_accounts/src/v2/models/ElasticCloudSettingsUpdate.ts new file mode 100644 index 000000000000..95bae972454b --- /dev/null +++ b/services/integration_accounts/src/v2/models/ElasticCloudSettingsUpdate.ts @@ -0,0 +1,108 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +/** + * Partial Elastic Cloud interface settings for updates. + */ +export class ElasticCloudSettingsUpdate { + /** + * Enable to collect shard allocation metrics. + */ + "catAllocationStatsEnabled"?: boolean; + /** + * Enable to collect index-specific stats. + */ + "detailedIndexStatsEnabled"?: boolean; + /** + * Enable to collect metrics about the indices in your cluster. + */ + "indexStatsEnabled"?: boolean; + /** + * Enable to collect metrics about pending tasks. + */ + "pendingTaskStatsEnabled"?: boolean; + /** + * Enable to collect all metrics even if primary shard metric collection times out. + */ + "pshardGracefulToEnabled"?: boolean; + /** + * Enable to collect metrics over primary shards. + */ + "pshardStatsEnabled"?: boolean; + /** + * Enable to collect snapshot lifecycle management metrics. + */ + "slmStatsEnabled"?: boolean; + /** + * Custom tags for this deployment. + */ + "tags"?: Array; + /** + * Deployment URL. + */ + "url"?: string; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + catAllocationStatsEnabled: { + baseName: "cat_allocation_stats_enabled", + type: "boolean", + }, + detailedIndexStatsEnabled: { + baseName: "detailed_index_stats_enabled", + type: "boolean", + }, + indexStatsEnabled: { + baseName: "index_stats_enabled", + type: "boolean", + }, + pendingTaskStatsEnabled: { + baseName: "pending_task_stats_enabled", + type: "boolean", + }, + pshardGracefulToEnabled: { + baseName: "pshard_graceful_to_enabled", + type: "boolean", + }, + pshardStatsEnabled: { + baseName: "pshard_stats_enabled", + type: "boolean", + }, + slmStatsEnabled: { + baseName: "slm_stats_enabled", + type: "boolean", + }, + tags: { + baseName: "tags", + type: "Array", + }, + url: { + baseName: "url", + type: "string", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ElasticCloudSettingsUpdate.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountAttributes.ts b/services/integration_accounts/src/v2/models/IntegrationAccountAttributes.ts new file mode 100644 index 000000000000..34b26c1ef65b --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountAttributes.ts @@ -0,0 +1,65 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { IntegrationAccountIntegration } from "./IntegrationAccountIntegration"; +import { IntegrationAccountPermissions } from "./IntegrationAccountPermissions"; + +/** + * Attributes of an integration account. The `integration` field is a strongly-typed, per-integration union. + */ +export class IntegrationAccountAttributes { + /** + * Strongly-typed, per-integration configuration. Exactly one integration variant is set, selected by its `type`. + */ + "integration": IntegrationAccountIntegration; + /** + * Human-readable name of the account. + */ + "name": string; + /** + * Read-only permission information for the account, derived from its restriction policy. + */ + "permissions"?: IntegrationAccountPermissions; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + integration: { + baseName: "integration", + type: "IntegrationAccountIntegration", + required: true, + }, + name: { + baseName: "name", + type: "string", + required: true, + }, + permissions: { + baseName: "permissions", + type: "IntegrationAccountPermissions", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return IntegrationAccountAttributes.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountCreateData.ts b/services/integration_accounts/src/v2/models/IntegrationAccountCreateData.ts new file mode 100644 index 000000000000..51d94d42f208 --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountCreateData.ts @@ -0,0 +1,57 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { IntegrationAccountAttributes } from "./IntegrationAccountAttributes"; +import { IntegrationAccountType } from "./IntegrationAccountType"; + +/** + * Data envelope for creating an integration account. + */ +export class IntegrationAccountCreateData { + /** + * Attributes of an integration account. The `integration` field is a strongly-typed, per-integration union. + */ + "attributes": IntegrationAccountAttributes; + /** + * JSON:API resource type for an integration account. Always `integration-account`. + */ + "type": IntegrationAccountType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + attributes: { + baseName: "attributes", + type: "IntegrationAccountAttributes", + required: true, + }, + type: { + baseName: "type", + type: "IntegrationAccountType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return IntegrationAccountCreateData.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountData.ts b/services/integration_accounts/src/v2/models/IntegrationAccountData.ts new file mode 100644 index 000000000000..99bc50dabbe9 --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountData.ts @@ -0,0 +1,66 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { IntegrationAccountAttributes } from "./IntegrationAccountAttributes"; +import { IntegrationAccountType } from "./IntegrationAccountType"; + +/** + * Data envelope of an integration account, including server-assigned identity. + */ +export class IntegrationAccountData { + /** + * Attributes of an integration account. The `integration` field is a strongly-typed, per-integration union. + */ + "attributes": IntegrationAccountAttributes; + /** + * Server-generated unique identifier of the integration account. + */ + "id": string; + /** + * JSON:API resource type for an integration account. Always `integration-account`. + */ + "type": IntegrationAccountType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + attributes: { + baseName: "attributes", + type: "IntegrationAccountAttributes", + required: true, + }, + id: { + baseName: "id", + type: "string", + required: true, + }, + type: { + baseName: "type", + type: "IntegrationAccountType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return IntegrationAccountData.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountDataflowHealth.ts b/services/integration_accounts/src/v2/models/IntegrationAccountDataflowHealth.ts new file mode 100644 index 000000000000..fe7da453ca31 --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountDataflowHealth.ts @@ -0,0 +1,13 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Collection health of a single dataflow. + */ +export type IntegrationAccountDataflowHealth = + | typeof OK + | typeof BROKEN + | typeof UNKNOWN + | UnparsedObject; +export const OK = "DATAFLOW_HEALTH_OK"; +export const BROKEN = "DATAFLOW_HEALTH_BROKEN"; +export const UNKNOWN = "DATAFLOW_HEALTH_UNKNOWN"; diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountDataflowStatus.ts b/services/integration_accounts/src/v2/models/IntegrationAccountDataflowStatus.ts new file mode 100644 index 000000000000..1cc591ea3607 --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountDataflowStatus.ts @@ -0,0 +1,63 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { IntegrationAccountDataflowHealth } from "./IntegrationAccountDataflowHealth"; + +/** + * Read-only, server-computed collection status of a dataflow. + */ +export class IntegrationAccountDataflowStatus { + /** + * Collection health of a single dataflow. + */ + "health"?: IntegrationAccountDataflowHealth; + /** + * Human-readable detail, populated when the dataflow is not healthy. + */ + "message"?: string; + /** + * Time the status was last computed. + */ + "updatedAt"?: Date; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + health: { + baseName: "health", + type: "IntegrationAccountDataflowHealth", + }, + message: { + baseName: "message", + type: "string", + }, + updatedAt: { + baseName: "updated_at", + type: "Date", + format: "date-time", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return IntegrationAccountDataflowStatus.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountIntegration.ts b/services/integration_accounts/src/v2/models/IntegrationAccountIntegration.ts new file mode 100644 index 000000000000..47d84f961e94 --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountIntegration.ts @@ -0,0 +1,12 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +import { ElasticCloudIntegration } from "./ElasticCloudIntegration"; +import { TwilioIntegration } from "./TwilioIntegration"; + +/** + * Strongly-typed, per-integration configuration. Exactly one integration variant is set, selected by its `type`. + */ +export type IntegrationAccountIntegration = + | TwilioIntegration + | ElasticCloudIntegration + | UnparsedObject; diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountIntegrationId.ts b/services/integration_accounts/src/v2/models/IntegrationAccountIntegrationId.ts new file mode 100644 index 000000000000..9c7438896b19 --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountIntegrationId.ts @@ -0,0 +1,11 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Supported integration ids (the `integration_id` path scope). + */ +export type IntegrationAccountIntegrationId = + | typeof ELASTIC_CLOUD + | typeof TWILIO + | UnparsedObject; +export const ELASTIC_CLOUD = "elastic-cloud"; +export const TWILIO = "twilio"; diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountIntegrationUpdate.ts b/services/integration_accounts/src/v2/models/IntegrationAccountIntegrationUpdate.ts new file mode 100644 index 000000000000..d4e9bceae6ef --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountIntegrationUpdate.ts @@ -0,0 +1,12 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +import { ElasticCloudIntegrationUpdate } from "./ElasticCloudIntegrationUpdate"; +import { TwilioIntegrationUpdate } from "./TwilioIntegrationUpdate"; + +/** + * Strongly-typed, per-integration partial configuration. Exactly one integration variant is set, selected by its `type`. + */ +export type IntegrationAccountIntegrationUpdate = + | TwilioIntegrationUpdate + | ElasticCloudIntegrationUpdate + | UnparsedObject; diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountInterfaceId.ts b/services/integration_accounts/src/v2/models/IntegrationAccountInterfaceId.ts new file mode 100644 index 000000000000..9be04bf4a2ed --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountInterfaceId.ts @@ -0,0 +1,13 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Supported interface (source-type) ids (the `interface_id` path scope). + */ +export type IntegrationAccountInterfaceId = + | typeof ELASTIC_CLOUD + | typeof ELASTIC_CLOUD_CCM + | typeof TWILIO + | UnparsedObject; +export const ELASTIC_CLOUD = "elastic-cloud"; +export const ELASTIC_CLOUD_CCM = "elastic-cloud-ccm"; +export const TWILIO = "twilio"; diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountPermissions.ts b/services/integration_accounts/src/v2/models/IntegrationAccountPermissions.ts new file mode 100644 index 000000000000..e7894663cbda --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountPermissions.ts @@ -0,0 +1,52 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +/** + * Read-only permission information for the account, derived from its restriction policy. + */ +export class IntegrationAccountPermissions { + /** + * Restriction-policy resource identifier of this account. + */ + "resourceId"?: string; + /** + * Whether the requesting user may edit this account. + */ + "userCanEdit"?: boolean; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + resourceId: { + baseName: "resource_id", + type: "string", + }, + userCanEdit: { + baseName: "user_can_edit", + type: "boolean", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return IntegrationAccountPermissions.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountRequest.ts b/services/integration_accounts/src/v2/models/IntegrationAccountRequest.ts new file mode 100644 index 000000000000..c369aa757516 --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountRequest.ts @@ -0,0 +1,47 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { IntegrationAccountCreateData } from "./IntegrationAccountCreateData"; + +/** + * Request payload to create an integration account. + */ +export class IntegrationAccountRequest { + /** + * Data envelope for creating an integration account. + */ + "data": IntegrationAccountCreateData; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "IntegrationAccountCreateData", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return IntegrationAccountRequest.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountResponse.ts b/services/integration_accounts/src/v2/models/IntegrationAccountResponse.ts new file mode 100644 index 000000000000..b4711e6edd63 --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountResponse.ts @@ -0,0 +1,46 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { IntegrationAccountData } from "./IntegrationAccountData"; + +/** + * Response payload for a single integration account. + */ +export class IntegrationAccountResponse { + /** + * Data envelope of an integration account, including server-assigned identity. + */ + "data"?: IntegrationAccountData; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "IntegrationAccountData", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return IntegrationAccountResponse.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountType.ts b/services/integration_accounts/src/v2/models/IntegrationAccountType.ts new file mode 100644 index 000000000000..2a53c562fafc --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountType.ts @@ -0,0 +1,9 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * JSON:API resource type for an integration account. Always `integration-account`. + */ +export type IntegrationAccountType = + | typeof INTEGRATION_ACCOUNT + | UnparsedObject; +export const INTEGRATION_ACCOUNT = "integration-account"; diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountUpdateAttributes.ts b/services/integration_accounts/src/v2/models/IntegrationAccountUpdateAttributes.ts new file mode 100644 index 000000000000..f8b225e8d835 --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountUpdateAttributes.ts @@ -0,0 +1,54 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { IntegrationAccountIntegrationUpdate } from "./IntegrationAccountIntegrationUpdate"; + +/** + * Updatable attributes of an integration account. Every field is optional; only the fields provided are changed. + */ +export class IntegrationAccountUpdateAttributes { + /** + * Strongly-typed, per-integration partial configuration. Exactly one integration variant is set, selected by its `type`. + */ + "integration"?: IntegrationAccountIntegrationUpdate; + /** + * Human-readable name of the account. + */ + "name"?: string; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + integration: { + baseName: "integration", + type: "IntegrationAccountIntegrationUpdate", + }, + name: { + baseName: "name", + type: "string", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return IntegrationAccountUpdateAttributes.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountUpdateData.ts b/services/integration_accounts/src/v2/models/IntegrationAccountUpdateData.ts new file mode 100644 index 000000000000..2b62e876d3a4 --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountUpdateData.ts @@ -0,0 +1,57 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { IntegrationAccountType } from "./IntegrationAccountType"; +import { IntegrationAccountUpdateAttributes } from "./IntegrationAccountUpdateAttributes"; + +/** + * Data envelope for updating an integration account. + */ +export class IntegrationAccountUpdateData { + /** + * Updatable attributes of an integration account. Every field is optional; only the fields provided are changed. + */ + "attributes": IntegrationAccountUpdateAttributes; + /** + * JSON:API resource type for an integration account. Always `integration-account`. + */ + "type": IntegrationAccountType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + attributes: { + baseName: "attributes", + type: "IntegrationAccountUpdateAttributes", + required: true, + }, + type: { + baseName: "type", + type: "IntegrationAccountType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return IntegrationAccountUpdateData.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountUpdateRequest.ts b/services/integration_accounts/src/v2/models/IntegrationAccountUpdateRequest.ts new file mode 100644 index 000000000000..56771f084c09 --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountUpdateRequest.ts @@ -0,0 +1,47 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { IntegrationAccountUpdateData } from "./IntegrationAccountUpdateData"; + +/** + * Request payload to update an integration account as a partial merge. + */ +export class IntegrationAccountUpdateRequest { + /** + * Data envelope for updating an integration account. + */ + "data": IntegrationAccountUpdateData; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "IntegrationAccountUpdateData", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return IntegrationAccountUpdateRequest.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/IntegrationAccountsResponse.ts b/services/integration_accounts/src/v2/models/IntegrationAccountsResponse.ts new file mode 100644 index 000000000000..bc59fbf65b6a --- /dev/null +++ b/services/integration_accounts/src/v2/models/IntegrationAccountsResponse.ts @@ -0,0 +1,46 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { IntegrationAccountData } from "./IntegrationAccountData"; + +/** + * Response payload for a list of integration accounts. + */ +export class IntegrationAccountsResponse { + /** + * List of integration accounts. + */ + "data"?: Array; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "Array", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return IntegrationAccountsResponse.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/TwilioAuthentication.ts b/services/integration_accounts/src/v2/models/TwilioAuthentication.ts new file mode 100644 index 000000000000..da6f843f0747 --- /dev/null +++ b/services/integration_accounts/src/v2/models/TwilioAuthentication.ts @@ -0,0 +1,8 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +import { TwilioBasicAuth } from "./TwilioBasicAuth"; + +/** + * Authentication methods supported by the Twilio interface. Exactly one is set, selected by its `type`. + */ +export type TwilioAuthentication = TwilioBasicAuth | UnparsedObject; diff --git a/services/integration_accounts/src/v2/models/TwilioBasicAuth.ts b/services/integration_accounts/src/v2/models/TwilioBasicAuth.ts new file mode 100644 index 000000000000..2e30a6b23df1 --- /dev/null +++ b/services/integration_accounts/src/v2/models/TwilioBasicAuth.ts @@ -0,0 +1,65 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { TwilioBasicAuthType } from "./TwilioBasicAuthType"; + +/** + * API Key & Secret authentication for Twilio. + */ +export class TwilioBasicAuth { + /** + * Twilio API Key SID for authentication. Create from Twilio Console > Account > API Keys & Tokens. + */ + "apiKey": string; + /** + * Twilio API Key Secret (token) corresponding to the API Key SID. + */ + "apiKeyToken": string; + /** + * Authentication method discriminator. + */ + "type": TwilioBasicAuthType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + apiKey: { + baseName: "api_key", + type: "string", + required: true, + }, + apiKeyToken: { + baseName: "api_key_token", + type: "string", + required: true, + }, + type: { + baseName: "type", + type: "TwilioBasicAuthType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return TwilioBasicAuth.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/TwilioBasicAuthType.ts b/services/integration_accounts/src/v2/models/TwilioBasicAuthType.ts new file mode 100644 index 000000000000..716f593a2d06 --- /dev/null +++ b/services/integration_accounts/src/v2/models/TwilioBasicAuthType.ts @@ -0,0 +1,7 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Authentication method discriminator. + */ +export type TwilioBasicAuthType = typeof BASIC | UnparsedObject; +export const BASIC = "basic"; diff --git a/services/integration_accounts/src/v2/models/TwilioDataflow.ts b/services/integration_accounts/src/v2/models/TwilioDataflow.ts new file mode 100644 index 000000000000..9b3fd7a3794b --- /dev/null +++ b/services/integration_accounts/src/v2/models/TwilioDataflow.ts @@ -0,0 +1,64 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { IntegrationAccountDataflowStatus } from "./IntegrationAccountDataflowStatus"; +import { TwilioDataflowId } from "./TwilioDataflowId"; + +/** + * A Twilio dataflow toggle. The set of dataflow ids is fixed by the interface schema. + */ +export class TwilioDataflow { + /** + * Whether the dataflow is enabled. + */ + "enabled"?: boolean; + /** + * Identifier of a Twilio dataflow. + */ + "id": TwilioDataflowId; + /** + * Read-only, server-computed collection status of a dataflow. + */ + "status"?: IntegrationAccountDataflowStatus; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + enabled: { + baseName: "enabled", + type: "boolean", + }, + id: { + baseName: "id", + type: "TwilioDataflowId", + required: true, + }, + status: { + baseName: "status", + type: "IntegrationAccountDataflowStatus", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return TwilioDataflow.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/TwilioDataflowId.ts b/services/integration_accounts/src/v2/models/TwilioDataflowId.ts new file mode 100644 index 000000000000..9aaa8b60b124 --- /dev/null +++ b/services/integration_accounts/src/v2/models/TwilioDataflowId.ts @@ -0,0 +1,17 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Identifier of a Twilio dataflow. + */ +export type TwilioDataflowId = + | typeof CLOUD_COST_METRICS + | typeof EVENTS_LOGS + | typeof MESSAGES_LOGS + | typeof ALERTS_LOGS + | typeof CALL_SUMMARIES_LOGS + | UnparsedObject; +export const CLOUD_COST_METRICS = "twilio-cloud-cost-metrics"; +export const EVENTS_LOGS = "twilio-events-logs"; +export const MESSAGES_LOGS = "twilio-messages-logs"; +export const ALERTS_LOGS = "twilio-alerts-logs"; +export const CALL_SUMMARIES_LOGS = "twilio-call-summaries-logs"; diff --git a/services/integration_accounts/src/v2/models/TwilioIntegration.ts b/services/integration_accounts/src/v2/models/TwilioIntegration.ts new file mode 100644 index 000000000000..fec34f468fb7 --- /dev/null +++ b/services/integration_accounts/src/v2/models/TwilioIntegration.ts @@ -0,0 +1,57 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { TwilioIntegrationType } from "./TwilioIntegrationType"; +import { TwilioInterface } from "./TwilioInterface"; + +/** + * Twilio integration configuration. + */ +export class TwilioIntegration { + /** + * Twilio interface (source-type) configuration. + */ + "_interface": TwilioInterface; + /** + * Integration discriminator for Twilio. + */ + "type": TwilioIntegrationType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + _interface: { + baseName: "interface", + type: "TwilioInterface", + required: true, + }, + type: { + baseName: "type", + type: "TwilioIntegrationType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return TwilioIntegration.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/TwilioIntegrationType.ts b/services/integration_accounts/src/v2/models/TwilioIntegrationType.ts new file mode 100644 index 000000000000..4528073bc3fe --- /dev/null +++ b/services/integration_accounts/src/v2/models/TwilioIntegrationType.ts @@ -0,0 +1,7 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Integration discriminator for Twilio. + */ +export type TwilioIntegrationType = typeof TWILIO | UnparsedObject; +export const TWILIO = "twilio"; diff --git a/services/integration_accounts/src/v2/models/TwilioIntegrationUpdate.ts b/services/integration_accounts/src/v2/models/TwilioIntegrationUpdate.ts new file mode 100644 index 000000000000..bdb10c22db21 --- /dev/null +++ b/services/integration_accounts/src/v2/models/TwilioIntegrationUpdate.ts @@ -0,0 +1,56 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { TwilioIntegrationType } from "./TwilioIntegrationType"; +import { TwilioInterfaceUpdate } from "./TwilioInterfaceUpdate"; + +/** + * Partial Twilio integration configuration for updates. + */ +export class TwilioIntegrationUpdate { + /** + * Partial Twilio interface (source-type) configuration for updates. + */ + "_interface"?: TwilioInterfaceUpdate; + /** + * Integration discriminator for Twilio. + */ + "type": TwilioIntegrationType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + _interface: { + baseName: "interface", + type: "TwilioInterfaceUpdate", + }, + type: { + baseName: "type", + type: "TwilioIntegrationType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return TwilioIntegrationUpdate.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/TwilioInterface.ts b/services/integration_accounts/src/v2/models/TwilioInterface.ts new file mode 100644 index 000000000000..ddc8b4ae5dd5 --- /dev/null +++ b/services/integration_accounts/src/v2/models/TwilioInterface.ts @@ -0,0 +1,75 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { TwilioAuthentication } from "./TwilioAuthentication"; +import { TwilioDataflow } from "./TwilioDataflow"; +import { TwilioInterfaceType } from "./TwilioInterfaceType"; +import { TwilioSettings } from "./TwilioSettings"; + +/** + * Twilio interface (source-type) configuration. + */ +export class TwilioInterface { + /** + * Authentication methods supported by the Twilio interface. Exactly one is set, selected by its `type`. + */ + "authentication": TwilioAuthentication; + /** + * Dataflows for the Twilio interface. + */ + "dataflows"?: Array; + /** + * Twilio interface settings. + */ + "settings"?: TwilioSettings; + /** + * Interface discriminator for Twilio. + */ + "type": TwilioInterfaceType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + authentication: { + baseName: "authentication", + type: "TwilioAuthentication", + required: true, + }, + dataflows: { + baseName: "dataflows", + type: "Array", + }, + settings: { + baseName: "settings", + type: "TwilioSettings", + }, + type: { + baseName: "type", + type: "TwilioInterfaceType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return TwilioInterface.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/TwilioInterfaceType.ts b/services/integration_accounts/src/v2/models/TwilioInterfaceType.ts new file mode 100644 index 000000000000..cf4245590d3e --- /dev/null +++ b/services/integration_accounts/src/v2/models/TwilioInterfaceType.ts @@ -0,0 +1,7 @@ +import { UnparsedObject } from "@datadog/datadog-api-client"; + +/** + * Interface discriminator for Twilio. + */ +export type TwilioInterfaceType = typeof TWILIO | UnparsedObject; +export const TWILIO = "twilio"; diff --git a/services/integration_accounts/src/v2/models/TwilioInterfaceUpdate.ts b/services/integration_accounts/src/v2/models/TwilioInterfaceUpdate.ts new file mode 100644 index 000000000000..f95062fd809a --- /dev/null +++ b/services/integration_accounts/src/v2/models/TwilioInterfaceUpdate.ts @@ -0,0 +1,74 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +import { TwilioAuthentication } from "./TwilioAuthentication"; +import { TwilioDataflow } from "./TwilioDataflow"; +import { TwilioInterfaceType } from "./TwilioInterfaceType"; +import { TwilioSettingsUpdate } from "./TwilioSettingsUpdate"; + +/** + * Partial Twilio interface (source-type) configuration for updates. + */ +export class TwilioInterfaceUpdate { + /** + * Authentication methods supported by the Twilio interface. Exactly one is set, selected by its `type`. + */ + "authentication"?: TwilioAuthentication; + /** + * Dataflows for the Twilio interface. + */ + "dataflows"?: Array; + /** + * Partial Twilio interface settings for updates. + */ + "settings"?: TwilioSettingsUpdate; + /** + * Interface discriminator for Twilio. + */ + "type": TwilioInterfaceType; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + authentication: { + baseName: "authentication", + type: "TwilioAuthentication", + }, + dataflows: { + baseName: "dataflows", + type: "Array", + }, + settings: { + baseName: "settings", + type: "TwilioSettingsUpdate", + }, + type: { + baseName: "type", + type: "TwilioInterfaceType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return TwilioInterfaceUpdate.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/TwilioSettings.ts b/services/integration_accounts/src/v2/models/TwilioSettings.ts new file mode 100644 index 000000000000..ceb12ab42361 --- /dev/null +++ b/services/integration_accounts/src/v2/models/TwilioSettings.ts @@ -0,0 +1,53 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +/** + * Twilio interface settings. + */ +export class TwilioSettings { + /** + * Twilio Account SID that uniquely identifies your Twilio account. + */ + "accountSid": string; + /** + * When enabled, phone numbers in the `to` field and SMS message bodies are censored for privacy. + */ + "censorLogs"?: boolean; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + accountSid: { + baseName: "account_sid", + type: "string", + required: true, + }, + censorLogs: { + baseName: "censor_logs", + type: "boolean", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return TwilioSettings.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/TwilioSettingsUpdate.ts b/services/integration_accounts/src/v2/models/TwilioSettingsUpdate.ts new file mode 100644 index 000000000000..4f9ca6af6ef5 --- /dev/null +++ b/services/integration_accounts/src/v2/models/TwilioSettingsUpdate.ts @@ -0,0 +1,52 @@ +import { AttributeTypeMap } from "@datadog/datadog-api-client"; + +/** + * Partial Twilio interface settings for updates. + */ +export class TwilioSettingsUpdate { + /** + * Twilio Account SID that uniquely identifies your Twilio account. + */ + "accountSid"?: string; + /** + * When enabled, phone numbers in the `to` field and SMS message bodies are censored for privacy. + */ + "censorLogs"?: boolean; + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + accountSid: { + baseName: "account_sid", + type: "string", + }, + censorLogs: { + baseName: "censor_logs", + type: "boolean", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return TwilioSettingsUpdate.attributeTypeMap; + } + + public constructor() {} +} diff --git a/services/integration_accounts/src/v2/models/TypingInfo.ts b/services/integration_accounts/src/v2/models/TypingInfo.ts new file mode 100644 index 000000000000..c44d8b52005c --- /dev/null +++ b/services/integration_accounts/src/v2/models/TypingInfo.ts @@ -0,0 +1,128 @@ +import { ModelTypingInfo } from "@datadog/datadog-api-client"; + +import { APIErrorResponse } from "./APIErrorResponse"; +import { ElasticCloudBasicAuth } from "./ElasticCloudBasicAuth"; +import { ElasticCloudCcmDataflow } from "./ElasticCloudCcmDataflow"; +import { ElasticCloudCcmInterface } from "./ElasticCloudCcmInterface"; +import { ElasticCloudCcmInterfaceUpdate } from "./ElasticCloudCcmInterfaceUpdate"; +import { ElasticCloudCcmSettings } from "./ElasticCloudCcmSettings"; +import { ElasticCloudCcmSettingsUpdate } from "./ElasticCloudCcmSettingsUpdate"; +import { ElasticCloudCcmTokenAuth } from "./ElasticCloudCcmTokenAuth"; +import { ElasticCloudDataflow } from "./ElasticCloudDataflow"; +import { ElasticCloudIntegration } from "./ElasticCloudIntegration"; +import { ElasticCloudIntegrationUpdate } from "./ElasticCloudIntegrationUpdate"; +import { ElasticCloudMonitoringInterface } from "./ElasticCloudMonitoringInterface"; +import { ElasticCloudMonitoringInterfaceUpdate } from "./ElasticCloudMonitoringInterfaceUpdate"; +import { ElasticCloudSettings } from "./ElasticCloudSettings"; +import { ElasticCloudSettingsUpdate } from "./ElasticCloudSettingsUpdate"; +import { IntegrationAccountAttributes } from "./IntegrationAccountAttributes"; +import { IntegrationAccountCreateData } from "./IntegrationAccountCreateData"; +import { IntegrationAccountData } from "./IntegrationAccountData"; +import { IntegrationAccountDataflowStatus } from "./IntegrationAccountDataflowStatus"; +import { IntegrationAccountPermissions } from "./IntegrationAccountPermissions"; +import { IntegrationAccountRequest } from "./IntegrationAccountRequest"; +import { IntegrationAccountResponse } from "./IntegrationAccountResponse"; +import { IntegrationAccountUpdateAttributes } from "./IntegrationAccountUpdateAttributes"; +import { IntegrationAccountUpdateData } from "./IntegrationAccountUpdateData"; +import { IntegrationAccountUpdateRequest } from "./IntegrationAccountUpdateRequest"; +import { IntegrationAccountsResponse } from "./IntegrationAccountsResponse"; +import { TwilioBasicAuth } from "./TwilioBasicAuth"; +import { TwilioDataflow } from "./TwilioDataflow"; +import { TwilioIntegration } from "./TwilioIntegration"; +import { TwilioIntegrationUpdate } from "./TwilioIntegrationUpdate"; +import { TwilioInterface } from "./TwilioInterface"; +import { TwilioInterfaceUpdate } from "./TwilioInterfaceUpdate"; +import { TwilioSettings } from "./TwilioSettings"; +import { TwilioSettingsUpdate } from "./TwilioSettingsUpdate"; + +export const TypingInfo: ModelTypingInfo = { + enumsMap: { + ElasticCloudBasicAuthType: ["basic"], + ElasticCloudCcmDataflowId: ["elastic-cloud-cost-data"], + ElasticCloudCcmInterfaceType: ["elastic-cloud-ccm"], + ElasticCloudCcmTokenAuthType: ["bearer_token"], + ElasticCloudDataflowId: ["elastic-cloud-metrics"], + ElasticCloudIntegrationType: ["elastic-cloud"], + ElasticCloudMonitoringInterfaceType: ["elastic-cloud"], + IntegrationAccountDataflowHealth: [ + "DATAFLOW_HEALTH_OK", + "DATAFLOW_HEALTH_BROKEN", + "DATAFLOW_HEALTH_UNKNOWN", + ], + IntegrationAccountIntegrationId: ["elastic-cloud", "twilio"], + IntegrationAccountInterfaceId: [ + "elastic-cloud", + "elastic-cloud-ccm", + "twilio", + ], + IntegrationAccountType: ["integration-account"], + TwilioBasicAuthType: ["basic"], + TwilioDataflowId: [ + "twilio-cloud-cost-metrics", + "twilio-events-logs", + "twilio-messages-logs", + "twilio-alerts-logs", + "twilio-call-summaries-logs", + ], + TwilioIntegrationType: ["twilio"], + TwilioInterfaceType: ["twilio"], + }, + oneOfMap: { + ElasticCloudAuthentication: ["ElasticCloudBasicAuth"], + ElasticCloudCcmAuthentication: ["ElasticCloudCcmTokenAuth"], + ElasticCloudInterface: [ + "ElasticCloudMonitoringInterface", + "ElasticCloudCcmInterface", + ], + ElasticCloudInterfaceUpdate: [ + "ElasticCloudMonitoringInterfaceUpdate", + "ElasticCloudCcmInterfaceUpdate", + ], + IntegrationAccountIntegration: [ + "TwilioIntegration", + "ElasticCloudIntegration", + ], + IntegrationAccountIntegrationUpdate: [ + "TwilioIntegrationUpdate", + "ElasticCloudIntegrationUpdate", + ], + TwilioAuthentication: ["TwilioBasicAuth"], + }, + typeMap: { + APIErrorResponse: APIErrorResponse, + ElasticCloudBasicAuth: ElasticCloudBasicAuth, + ElasticCloudCcmDataflow: ElasticCloudCcmDataflow, + ElasticCloudCcmInterface: ElasticCloudCcmInterface, + ElasticCloudCcmInterfaceUpdate: ElasticCloudCcmInterfaceUpdate, + ElasticCloudCcmSettings: ElasticCloudCcmSettings, + ElasticCloudCcmSettingsUpdate: ElasticCloudCcmSettingsUpdate, + ElasticCloudCcmTokenAuth: ElasticCloudCcmTokenAuth, + ElasticCloudDataflow: ElasticCloudDataflow, + ElasticCloudIntegration: ElasticCloudIntegration, + ElasticCloudIntegrationUpdate: ElasticCloudIntegrationUpdate, + ElasticCloudMonitoringInterface: ElasticCloudMonitoringInterface, + ElasticCloudMonitoringInterfaceUpdate: + ElasticCloudMonitoringInterfaceUpdate, + ElasticCloudSettings: ElasticCloudSettings, + ElasticCloudSettingsUpdate: ElasticCloudSettingsUpdate, + IntegrationAccountAttributes: IntegrationAccountAttributes, + IntegrationAccountCreateData: IntegrationAccountCreateData, + IntegrationAccountData: IntegrationAccountData, + IntegrationAccountDataflowStatus: IntegrationAccountDataflowStatus, + IntegrationAccountPermissions: IntegrationAccountPermissions, + IntegrationAccountRequest: IntegrationAccountRequest, + IntegrationAccountResponse: IntegrationAccountResponse, + IntegrationAccountUpdateAttributes: IntegrationAccountUpdateAttributes, + IntegrationAccountUpdateData: IntegrationAccountUpdateData, + IntegrationAccountUpdateRequest: IntegrationAccountUpdateRequest, + IntegrationAccountsResponse: IntegrationAccountsResponse, + TwilioBasicAuth: TwilioBasicAuth, + TwilioDataflow: TwilioDataflow, + TwilioIntegration: TwilioIntegration, + TwilioIntegrationUpdate: TwilioIntegrationUpdate, + TwilioInterface: TwilioInterface, + TwilioInterfaceUpdate: TwilioInterfaceUpdate, + TwilioSettings: TwilioSettings, + TwilioSettingsUpdate: TwilioSettingsUpdate, + }, +}; diff --git a/services/integration_accounts/tsconfig.json b/services/integration_accounts/tsconfig.json new file mode 100644 index 000000000000..d6c32bfb893c --- /dev/null +++ b/services/integration_accounts/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "strict": true, + /* Basic Options */ + "target": "es6", + "module": "commonjs", + "moduleResolution": "node", + "declaration": true, + + "esModuleInterop": true, + "resolveJsonModule": true, + + "noImplicitAny": true, + "noImplicitThis": true, + + /* Additional Checks */ + "noUnusedLocals": false /* Report errors on unused locals. */, // TODO: reenable (unused imports!) + "noUnusedParameters": false /* Report errors on unused parameters. */, // TODO: set to true again + "noImplicitReturns": true /* Report error when not all code paths in function return a value. */, + "noFallthroughCasesInSwitch": true /* Report errors for fallthrough cases in switch statement. */, + + "sourceMap": true, + "outDir": "./dist", + "lib": ["es6", "es7"] + }, + "exclude": ["dist", "node_modules", "tests"], + "include": ["src"] +} diff --git a/yarn.lock b/yarn.lock index 19f185e700f0..7b0007115769 100644 --- a/yarn.lock +++ b/yarn.lock @@ -883,6 +883,15 @@ __metadata: languageName: unknown linkType: soft +"@datadog/datadog-api-client-integration-accounts@workspace:services/integration_accounts": + version: 0.0.0-use.local + resolution: "@datadog/datadog-api-client-integration-accounts@workspace:services/integration_accounts" + dependencies: + "@datadog/datadog-api-client": "npm:^2.0.0-beta.2" + typescript: "npm:5.8.3" + languageName: unknown + linkType: soft + "@datadog/datadog-api-client-integrations@workspace:services/integrations": version: 0.0.0-use.local resolution: "@datadog/datadog-api-client-integrations@workspace:services/integrations"