diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml
index 6325ee4e374..833ccc1b077 100644
--- a/.generator/schemas/v2/openapi.yaml
+++ b/.generator/schemas/v2/openapi.yaml
@@ -100262,6 +100262,302 @@ components:
oneOf:
- $ref: "#/components/schemas/ActionConnectionLiteralValue"
- $ref: "#/components/schemas/ActionConnectionAWSSecretsManagerReference"
+ OpenAICodexDoraIntegrationDataflowRequest:
+ additionalProperties: false
+ description: >-
+ A daily per-engineer engagement signal that [AI Impact](https://docs.datadoghq.com/delivery_performance/ai_impact/) uses to attribute AI-assisted pull requests.
+ properties:
+ enabled:
+ description: >-
+ Whether Datadog collects this data. Defaults to `true`; set to `false` to stop collection.
+ example: true
+ type: boolean
+ type: object
+ OpenAICodexDoraIntegrationDataflowResponse:
+ description: >-
+ A daily per-engineer engagement signal that [AI Impact](https://docs.datadoghq.com/delivery_performance/ai_impact/) uses to attribute AI-assisted pull requests.
+ properties:
+ enabled:
+ description: Whether Datadog collects this data.
+ example: true
+ type: boolean
+ status:
+ $ref: "#/components/schemas/IntegrationAccountDataflowStatus"
+ type: object
+ OpenAICodexIntegrationAccountAuthenticationRequest:
+ description: Authentication for creating the OpenAI Codex integration account. Exactly one method is set.
+ oneOf:
+ - $ref: "#/components/schemas/OpenAICodexIntegrationAccountBearerTokenAuthRequest"
+ OpenAICodexIntegrationAccountAuthenticationResponse:
+ description: Authentication configured on the OpenAI Codex integration account.
+ oneOf:
+ - $ref: "#/components/schemas/OpenAICodexIntegrationAccountBearerTokenAuthResponse"
+ OpenAICodexIntegrationAccountAuthenticationUpdate:
+ description: Authentication for updating the OpenAI Codex integration account. Exactly one method is set.
+ oneOf:
+ - $ref: "#/components/schemas/OpenAICodexIntegrationAccountBearerTokenAuthUpdate"
+ OpenAICodexIntegrationAccountBearerTokenAuthRequest:
+ additionalProperties: false
+ description: >-
+ Bearer token authentication. Use a workspace-scoped OpenAI Admin key with the `codex.enterprise.analytics.read` scope.
+ properties:
+ auth_type:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountBearerTokenAuthType"
+ token:
+ description: Secret token used to authenticate with OpenAI Codex.
+ example: your-token
+ type: string
+ writeOnly: true
+ required:
+ - auth_type
+ - token
+ type: object
+ OpenAICodexIntegrationAccountBearerTokenAuthResponse:
+ description: The bearer token authentication method configured on the account.
+ properties:
+ auth_type:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountBearerTokenAuthType"
+ required:
+ - auth_type
+ type: object
+ OpenAICodexIntegrationAccountBearerTokenAuthType:
+ default: bearer_token
+ description: The authentication method type.
+ enum:
+ - bearer_token
+ example: bearer_token
+ type: string
+ x-enum-varnames:
+ - BEARER_TOKEN
+ OpenAICodexIntegrationAccountBearerTokenAuthUpdate:
+ additionalProperties: false
+ description: >-
+ Bearer token authentication. Use a workspace-scoped OpenAI Admin key with the `codex.enterprise.analytics.read` scope. Only the fields provided are changed; omit `token` to keep the stored one.
+ properties:
+ auth_type:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountBearerTokenAuthType"
+ token:
+ description: Secret token used to authenticate with OpenAI Codex.
+ example: your-token
+ type: string
+ writeOnly: true
+ required:
+ - auth_type
+ type: object
+ OpenAICodexIntegrationAccountCreateAttributes:
+ description: Writable attributes used to create an OpenAI Codex integration account.
+ properties:
+ authentication:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountAuthenticationRequest"
+ dataflows:
+ $ref: "#/components/schemas/OpenAICodexIntegrationDataflowsRequest"
+ name:
+ description: Human-readable name of the OpenAI Codex integration account.
+ example: openai-codex-acme
+ type: string
+ settings:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountSettingsRequest"
+ required:
+ - name
+ - authentication
+ - settings
+ type: object
+ OpenAICodexIntegrationAccountCreateData:
+ description: Data envelope for creating an OpenAI Codex integration account.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountCreateAttributes"
+ type:
+ $ref: "#/components/schemas/IntegrationAccountType"
+ required:
+ - type
+ - attributes
+ type: object
+ OpenAICodexIntegrationAccountCreateRequest:
+ description: Request payload to create an OpenAI Codex integration account.
+ properties:
+ data:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountCreateData"
+ required:
+ - data
+ type: object
+ OpenAICodexIntegrationAccountResponse:
+ description: Response payload for a single OpenAI Codex integration account.
+ properties:
+ data:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountResponseData"
+ required:
+ - data
+ type: object
+ OpenAICodexIntegrationAccountResponseAttributes:
+ description: Attributes of an OpenAI Codex integration account returned in responses.
+ properties:
+ authentication:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountAuthenticationResponse"
+ dataflows:
+ $ref: "#/components/schemas/OpenAICodexIntegrationDataflowsResponse"
+ name:
+ description: Human-readable name of the OpenAI Codex integration account.
+ example: openai-codex-acme
+ type: string
+ settings:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountSettingsResponse"
+ required:
+ - name
+ - settings
+ type: object
+ OpenAICodexIntegrationAccountResponseData:
+ description: Data envelope of an OpenAI Codex integration account, including server-assigned identity.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountResponseAttributes"
+ id:
+ description: Server-generated unique identifier of the OpenAI Codex integration account.
+ example: 7d2f9c4e-3a1b-4c8e-9f6d-2b5a8e1c0d47
+ readOnly: true
+ type: string
+ type:
+ $ref: "#/components/schemas/IntegrationAccountType"
+ required:
+ - id
+ - attributes
+ - type
+ type: object
+ OpenAICodexIntegrationAccountSettingsRequest:
+ additionalProperties: false
+ description: Settings for creating the OpenAI Codex integration account.
+ properties:
+ codex_workspace_id:
+ description: ID of the Codex workspace to collect data from.
+ example: your-workspace-id
+ type: string
+ required:
+ - codex_workspace_id
+ type: object
+ OpenAICodexIntegrationAccountSettingsResponse:
+ description: Settings configured on the OpenAI Codex integration account.
+ properties:
+ codex_workspace_id:
+ description: ID of the Codex workspace to collect data from.
+ example: your-workspace-id
+ type: string
+ required:
+ - codex_workspace_id
+ type: object
+ OpenAICodexIntegrationAccountSettingsUpdate:
+ additionalProperties: false
+ description: >-
+ Settings for updating the OpenAI Codex integration account. Only the fields provided are changed.
+ properties:
+ codex_workspace_id:
+ description: ID of the Codex workspace to collect data from.
+ example: your-workspace-id
+ type: string
+ type: object
+ OpenAICodexIntegrationAccountUpdateAttributes:
+ description: >-
+ Writable attributes used to update an OpenAI Codex integration account. Every field is optional; only the fields provided are changed. When `dataflows` is provided, only the dataflow ids included in the request are modified; dataflows omitted from the map keep their current configuration.
+ properties:
+ authentication:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountAuthenticationUpdate"
+ dataflows:
+ $ref: "#/components/schemas/OpenAICodexIntegrationDataflowsRequest"
+ name:
+ description: Human-readable name of the OpenAI Codex integration account.
+ example: openai-codex-acme
+ type: string
+ settings:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountSettingsUpdate"
+ type: object
+ OpenAICodexIntegrationAccountUpdateData:
+ description: Data envelope for updating an OpenAI Codex integration account.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountUpdateAttributes"
+ id:
+ description: Unique identifier of the OpenAI Codex integration account to update.
+ example: 7d2f9c4e-3a1b-4c8e-9f6d-2b5a8e1c0d47
+ type: string
+ type:
+ $ref: "#/components/schemas/IntegrationAccountType"
+ required:
+ - id
+ - type
+ - attributes
+ type: object
+ OpenAICodexIntegrationAccountUpdateRequest:
+ description: Request payload to update an OpenAI Codex integration account.
+ properties:
+ data:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountUpdateData"
+ required:
+ - data
+ type: object
+ OpenAICodexIntegrationAccountsResponse:
+ description: Response payload for a list of OpenAI Codex integration accounts.
+ properties:
+ data:
+ description: List of OpenAI Codex integration accounts.
+ items:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountResponseData"
+ type: array
+ required:
+ - data
+ type: object
+ OpenAICodexIntegrationDataflowsRequest:
+ additionalProperties: false
+ description: >-
+ Data Datadog collects from OpenAI Codex, keyed by dataflow id. Daily Codex analytics metrics are always collected; each dataflow here adds a further kind of collection on top of that baseline, so set `enabled` to start or stop it. Defaults listed on each dataflow apply when the account is created; on update, omitted fields keep their current values. Every dataflow requires an OpenAI enterprise subscription with Codex enabled; a dataflow enabled without it is stored but collects no data.
+ properties:
+ openai-codex-dora:
+ $ref: "#/components/schemas/OpenAICodexDoraIntegrationDataflowRequest"
+ openai-codex-turn-metrics:
+ $ref: "#/components/schemas/OpenAICodexTurnMetricsIntegrationDataflowRequest"
+ type: object
+ OpenAICodexIntegrationDataflowsResponse:
+ description: Data Datadog collects from OpenAI Codex, keyed by dataflow id.
+ properties:
+ openai-codex-dora:
+ $ref: "#/components/schemas/OpenAICodexDoraIntegrationDataflowResponse"
+ openai-codex-metrics:
+ $ref: "#/components/schemas/OpenAICodexMetricsIntegrationDataflowResponse"
+ openai-codex-turn-metrics:
+ $ref: "#/components/schemas/OpenAICodexTurnMetricsIntegrationDataflowResponse"
+ type: object
+ OpenAICodexMetricsIntegrationDataflowResponse:
+ description: >-
+ Daily Codex analytics metrics under the `openai.codex.*` namespace: usage totals, token counts by model, thread and turn counts by client, lines of code attributable to Codex, and code reviews. This dataflow is always on and cannot be turned off, which is why it appears in responses only.
+ properties:
+ enabled:
+ description: Whether Datadog collects this data. Always `true`, because this collection cannot be turned off.
+ example: true
+ readOnly: true
+ type: boolean
+ status:
+ $ref: "#/components/schemas/IntegrationAccountDataflowStatus"
+ type: object
+ OpenAICodexTurnMetricsIntegrationDataflowRequest:
+ additionalProperties: false
+ description: >-
+ Hourly turn-level metrics from the OpenAI Compliance Logs Platform, including turn and session identity, Work Insights classification, token usage, credits, estimated cost, duration, and skill, plugin, and artifact activity. Turn cost is a provider estimate and can differ from invoiced charges. Requires the `chatgpt.enterprise.compliance_logs_platform.workspace_analytics.read` scope on the key in `authentication`; without it this dataflow collects no data.
+ properties:
+ enabled:
+ description: >-
+ Whether Datadog collects this data. Defaults to `false`; set to `true` to start collection.
+ example: true
+ type: boolean
+ type: object
+ OpenAICodexTurnMetricsIntegrationDataflowResponse:
+ description: >-
+ Hourly turn-level metrics from the OpenAI Compliance Logs Platform, including turn and session identity, Work Insights classification, token usage, credits, estimated cost, duration, and skill, plugin, and artifact activity. Turn cost is a provider estimate and can differ from invoiced charges. Requires the `chatgpt.enterprise.compliance_logs_platform.workspace_analytics.read` scope on the key in `authentication`; without it this dataflow collects no data.
+ properties:
+ enabled:
+ description: Whether Datadog collects this data.
+ example: true
+ type: boolean
+ status:
+ $ref: "#/components/schemas/IntegrationAccountDataflowStatus"
+ type: object
OpenAICredentials:
description: The definition of the `OpenAICredentials` object.
oneOf:
@@ -198229,6 +198525,280 @@ paths:
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/integration-interfaces/openai-codex/accounts:
+ get:
+ description: List OpenAI Codex integration accounts.
+ operationId: ListOpenAICodexIntegrationAccounts
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ - attributes:
+ authentication:
+ auth_type: bearer_token
+ dataflows:
+ openai-codex-dora:
+ enabled: true
+ status:
+ health: DATAFLOW_HEALTH_OK
+ updated_at: "2026-11-10T08:30:50Z"
+ openai-codex-metrics:
+ enabled: true
+ status:
+ health: DATAFLOW_HEALTH_OK
+ updated_at: "2026-11-10T08:30:50Z"
+ openai-codex-turn-metrics:
+ enabled: true
+ status:
+ health: DATAFLOW_HEALTH_OK
+ updated_at: "2026-11-10T08:30:50Z"
+ name: openai-codex-acme
+ settings:
+ codex_workspace_id: your-workspace-id
+ id: 7d2f9c4e-3a1b-4c8e-9f6d-2b5a8e1c0d47
+ type: integration-account
+ schema:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountsResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: List OpenAI Codex integration accounts
+ tags:
+ - OpenAI Codex Integration
+ "x-permission":
+ operator: OR
+ permissions:
+ - integrations_read
+ 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/).
+ post:
+ description: Create an OpenAI Codex integration account.
+ operationId: CreateOpenAICodexIntegrationAccount
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountCreateRequest"
+ required: true
+ responses:
+ "201":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ authentication:
+ auth_type: bearer_token
+ dataflows:
+ openai-codex-dora:
+ enabled: true
+ status:
+ health: DATAFLOW_HEALTH_OK
+ updated_at: "2026-11-10T08:30:50Z"
+ openai-codex-metrics:
+ enabled: true
+ status:
+ health: DATAFLOW_HEALTH_OK
+ updated_at: "2026-11-10T08:30:50Z"
+ openai-codex-turn-metrics:
+ enabled: true
+ status:
+ health: DATAFLOW_HEALTH_OK
+ updated_at: "2026-11-10T08:30:50Z"
+ name: openai-codex-acme
+ settings:
+ codex_workspace_id: your-workspace-id
+ id: 7d2f9c4e-3a1b-4c8e-9f6d-2b5a8e1c0d47
+ type: integration-account
+ schema:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountResponse"
+ description: Created
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "422":
+ $ref: "#/components/responses/UnprocessableEntityResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: Create an OpenAI Codex integration account
+ tags:
+ - OpenAI Codex Integration
+ x-codegen-request-body-name: body
+ "x-permission":
+ operator: OR
+ permissions:
+ - manage_integrations
+ 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/integration-interfaces/openai-codex/accounts/{account_id}:
+ delete:
+ description: Delete an OpenAI Codex integration account.
+ operationId: DeleteOpenAICodexIntegrationAccount
+ parameters:
+ - $ref: "#/components/parameters/IntegrationAccountIdParameter"
+ responses:
+ "200":
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: Delete an OpenAI Codex integration account
+ tags:
+ - OpenAI Codex Integration
+ "x-permission":
+ operator: OR
+ permissions:
+ - manage_integrations
+ 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/).
+ get:
+ description: Get an OpenAI Codex integration account.
+ operationId: GetOpenAICodexIntegrationAccount
+ parameters:
+ - $ref: "#/components/parameters/IntegrationAccountIdParameter"
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ authentication:
+ auth_type: bearer_token
+ dataflows:
+ openai-codex-dora:
+ enabled: true
+ status:
+ health: DATAFLOW_HEALTH_OK
+ updated_at: "2026-11-10T08:30:50Z"
+ openai-codex-metrics:
+ enabled: true
+ status:
+ health: DATAFLOW_HEALTH_OK
+ updated_at: "2026-11-10T08:30:50Z"
+ openai-codex-turn-metrics:
+ enabled: true
+ status:
+ health: DATAFLOW_HEALTH_OK
+ updated_at: "2026-11-10T08:30:50Z"
+ name: openai-codex-acme
+ settings:
+ codex_workspace_id: your-workspace-id
+ id: 7d2f9c4e-3a1b-4c8e-9f6d-2b5a8e1c0d47
+ type: integration-account
+ schema:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountResponse"
+ 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 OpenAI Codex integration account
+ tags:
+ - OpenAI Codex Integration
+ "x-permission":
+ operator: OR
+ permissions:
+ - integrations_read
+ 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/).
+ patch:
+ description: Update an OpenAI Codex integration account. Only the fields provided are changed.
+ operationId: UpdateOpenAICodexIntegrationAccount
+ parameters:
+ - $ref: "#/components/parameters/IntegrationAccountIdParameter"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountUpdateRequest"
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ authentication:
+ auth_type: bearer_token
+ dataflows:
+ openai-codex-dora:
+ enabled: true
+ status:
+ health: DATAFLOW_HEALTH_OK
+ updated_at: "2026-11-10T08:30:50Z"
+ openai-codex-metrics:
+ enabled: true
+ status:
+ health: DATAFLOW_HEALTH_OK
+ updated_at: "2026-11-10T08:30:50Z"
+ openai-codex-turn-metrics:
+ enabled: true
+ status:
+ health: DATAFLOW_HEALTH_OK
+ updated_at: "2026-11-10T08:30:50Z"
+ name: openai-codex-acme
+ settings:
+ codex_workspace_id: your-workspace-id
+ id: 7d2f9c4e-3a1b-4c8e-9f6d-2b5a8e1c0d47
+ type: integration-account
+ schema:
+ $ref: "#/components/schemas/OpenAICodexIntegrationAccountResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "422":
+ $ref: "#/components/responses/UnprocessableEntityResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ summary: Update an OpenAI Codex integration account
+ tags:
+ - OpenAI Codex Integration
+ x-codegen-request-body-name: body
+ "x-permission":
+ operator: OR
+ permissions:
+ - manage_integrations
+ 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/integration-interfaces/snowflake/accounts:
get:
description: List Snowflake integration accounts.
@@ -273083,6 +273653,15 @@ tags:
externalDocs:
url: https://docs.datadoghq.com/service_management/on-call/
name: On-Call Paging
+ - description: |-
+ Manage your Datadog OpenAI Codex integration accounts and account resources
+ directly through the Datadog API. See the
+ [OpenAI Codex integration page](https://docs.datadoghq.com/integrations/openai-codex/) for
+ more information.
+ externalDocs:
+ description: OpenAI Codex integration.
+ url: https://docs.datadoghq.com/integrations/openai-codex/
+ name: OpenAI Codex Integration
- description: |-
Configure your [Datadog Opsgenie integration](https://docs.datadoghq.com/integrations/opsgenie/)
directly through the Datadog API.
diff --git a/examples/v2/openai-codex-integration/CreateOpenAICodexIntegrationAccount.java b/examples/v2/openai-codex-integration/CreateOpenAICodexIntegrationAccount.java
new file mode 100644
index 00000000000..a4a20c89def
--- /dev/null
+++ b/examples/v2/openai-codex-integration/CreateOpenAICodexIntegrationAccount.java
@@ -0,0 +1,66 @@
+// Create an OpenAI Codex integration account returns "Created" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.OpenAiCodexIntegrationApi;
+import com.datadog.api.client.v2.model.IntegrationAccountType;
+import com.datadog.api.client.v2.model.OpenAICodexDoraIntegrationDataflowRequest;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountAuthenticationRequest;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountBearerTokenAuthRequest;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountBearerTokenAuthType;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountCreateAttributes;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountCreateData;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountCreateRequest;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountResponse;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountSettingsRequest;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationDataflowsRequest;
+import com.datadog.api.client.v2.model.OpenAICodexTurnMetricsIntegrationDataflowRequest;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
+ defaultClient.setUnstableOperationEnabled("v2.createOpenAICodexIntegrationAccount", true);
+ OpenAiCodexIntegrationApi apiInstance = new OpenAiCodexIntegrationApi(defaultClient);
+
+ OpenAICodexIntegrationAccountCreateRequest body =
+ new OpenAICodexIntegrationAccountCreateRequest()
+ .data(
+ new OpenAICodexIntegrationAccountCreateData()
+ .attributes(
+ new OpenAICodexIntegrationAccountCreateAttributes()
+ .authentication(
+ new OpenAICodexIntegrationAccountAuthenticationRequest(
+ new OpenAICodexIntegrationAccountBearerTokenAuthRequest()
+ .authType(
+ OpenAICodexIntegrationAccountBearerTokenAuthType
+ .BEARER_TOKEN)
+ .token("your-token")))
+ .dataflows(
+ new OpenAICodexIntegrationDataflowsRequest()
+ .openaiCodexDora(
+ new OpenAICodexDoraIntegrationDataflowRequest()
+ .enabled(true))
+ .openaiCodexTurnMetrics(
+ new OpenAICodexTurnMetricsIntegrationDataflowRequest()
+ .enabled(true)))
+ .name("openai-codex-acme")
+ .settings(
+ new OpenAICodexIntegrationAccountSettingsRequest()
+ .codexWorkspaceId("your-workspace-id")))
+ .type(IntegrationAccountType.INTEGRATION_ACCOUNT));
+
+ try {
+ OpenAICodexIntegrationAccountResponse result =
+ apiInstance.createOpenAICodexIntegrationAccount(body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling OpenAiCodexIntegrationApi#createOpenAICodexIntegrationAccount");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/openai-codex-integration/DeleteOpenAICodexIntegrationAccount.java b/examples/v2/openai-codex-integration/DeleteOpenAICodexIntegrationAccount.java
new file mode 100644
index 00000000000..921482ca717
--- /dev/null
+++ b/examples/v2/openai-codex-integration/DeleteOpenAICodexIntegrationAccount.java
@@ -0,0 +1,25 @@
+// Delete an OpenAI Codex integration account returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.OpenAiCodexIntegrationApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
+ defaultClient.setUnstableOperationEnabled("v2.deleteOpenAICodexIntegrationAccount", true);
+ OpenAiCodexIntegrationApi apiInstance = new OpenAiCodexIntegrationApi(defaultClient);
+
+ try {
+ apiInstance.deleteOpenAICodexIntegrationAccount("account_id");
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling OpenAiCodexIntegrationApi#deleteOpenAICodexIntegrationAccount");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/openai-codex-integration/GetOpenAICodexIntegrationAccount.java b/examples/v2/openai-codex-integration/GetOpenAICodexIntegrationAccount.java
new file mode 100644
index 00000000000..bdff72b7208
--- /dev/null
+++ b/examples/v2/openai-codex-integration/GetOpenAICodexIntegrationAccount.java
@@ -0,0 +1,28 @@
+// Get an OpenAI Codex integration account returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.OpenAiCodexIntegrationApi;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
+ defaultClient.setUnstableOperationEnabled("v2.getOpenAICodexIntegrationAccount", true);
+ OpenAiCodexIntegrationApi apiInstance = new OpenAiCodexIntegrationApi(defaultClient);
+
+ try {
+ OpenAICodexIntegrationAccountResponse result =
+ apiInstance.getOpenAICodexIntegrationAccount("account_id");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling OpenAiCodexIntegrationApi#getOpenAICodexIntegrationAccount");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/openai-codex-integration/ListOpenAICodexIntegrationAccounts.java b/examples/v2/openai-codex-integration/ListOpenAICodexIntegrationAccounts.java
new file mode 100644
index 00000000000..4438d213cd8
--- /dev/null
+++ b/examples/v2/openai-codex-integration/ListOpenAICodexIntegrationAccounts.java
@@ -0,0 +1,28 @@
+// List OpenAI Codex integration accounts returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.OpenAiCodexIntegrationApi;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountsResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
+ defaultClient.setUnstableOperationEnabled("v2.listOpenAICodexIntegrationAccounts", true);
+ OpenAiCodexIntegrationApi apiInstance = new OpenAiCodexIntegrationApi(defaultClient);
+
+ try {
+ OpenAICodexIntegrationAccountsResponse result =
+ apiInstance.listOpenAICodexIntegrationAccounts();
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling OpenAiCodexIntegrationApi#listOpenAICodexIntegrationAccounts");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/openai-codex-integration/UpdateOpenAICodexIntegrationAccount.java b/examples/v2/openai-codex-integration/UpdateOpenAICodexIntegrationAccount.java
new file mode 100644
index 00000000000..64382109b6b
--- /dev/null
+++ b/examples/v2/openai-codex-integration/UpdateOpenAICodexIntegrationAccount.java
@@ -0,0 +1,67 @@
+// Update an OpenAI Codex integration account returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.OpenAiCodexIntegrationApi;
+import com.datadog.api.client.v2.model.IntegrationAccountType;
+import com.datadog.api.client.v2.model.OpenAICodexDoraIntegrationDataflowRequest;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountAuthenticationUpdate;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountBearerTokenAuthType;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountBearerTokenAuthUpdate;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountResponse;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountSettingsUpdate;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountUpdateAttributes;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountUpdateData;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountUpdateRequest;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationDataflowsRequest;
+import com.datadog.api.client.v2.model.OpenAICodexTurnMetricsIntegrationDataflowRequest;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
+ defaultClient.setUnstableOperationEnabled("v2.updateOpenAICodexIntegrationAccount", true);
+ OpenAiCodexIntegrationApi apiInstance = new OpenAiCodexIntegrationApi(defaultClient);
+
+ OpenAICodexIntegrationAccountUpdateRequest body =
+ new OpenAICodexIntegrationAccountUpdateRequest()
+ .data(
+ new OpenAICodexIntegrationAccountUpdateData()
+ .attributes(
+ new OpenAICodexIntegrationAccountUpdateAttributes()
+ .authentication(
+ new OpenAICodexIntegrationAccountAuthenticationUpdate(
+ new OpenAICodexIntegrationAccountBearerTokenAuthUpdate()
+ .authType(
+ OpenAICodexIntegrationAccountBearerTokenAuthType
+ .BEARER_TOKEN)
+ .token("your-token")))
+ .dataflows(
+ new OpenAICodexIntegrationDataflowsRequest()
+ .openaiCodexDora(
+ new OpenAICodexDoraIntegrationDataflowRequest()
+ .enabled(true))
+ .openaiCodexTurnMetrics(
+ new OpenAICodexTurnMetricsIntegrationDataflowRequest()
+ .enabled(true)))
+ .name("openai-codex-acme")
+ .settings(
+ new OpenAICodexIntegrationAccountSettingsUpdate()
+ .codexWorkspaceId("your-workspace-id")))
+ .id("7d2f9c4e-3a1b-4c8e-9f6d-2b5a8e1c0d47")
+ .type(IntegrationAccountType.INTEGRATION_ACCOUNT));
+
+ try {
+ OpenAICodexIntegrationAccountResponse result =
+ apiInstance.updateOpenAICodexIntegrationAccount("account_id", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling OpenAiCodexIntegrationApi#updateOpenAICodexIntegrationAccount");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/ApiClient.java b/src/main/java/com/datadog/api/client/ApiClient.java
index 39a8c9f10ba..36f25b80e9c 100644
--- a/src/main/java/com/datadog/api/client/ApiClient.java
+++ b/src/main/java/com/datadog/api/client/ApiClient.java
@@ -1540,6 +1540,11 @@ public class ApiClient {
put("v2.getElasticCloudIntegrationAccount", false);
put("v2.listElasticCloudIntegrationAccounts", false);
put("v2.updateElasticCloudIntegrationAccount", false);
+ put("v2.createOpenAICodexIntegrationAccount", false);
+ put("v2.deleteOpenAICodexIntegrationAccount", false);
+ put("v2.getOpenAICodexIntegrationAccount", false);
+ put("v2.listOpenAICodexIntegrationAccounts", false);
+ put("v2.updateOpenAICodexIntegrationAccount", false);
put("v2.createSnowflakeIntegrationAccount", false);
put("v2.deleteSnowflakeIntegrationAccount", false);
put("v2.getSnowflakeIntegrationAccount", false);
diff --git a/src/main/java/com/datadog/api/client/v2/api/OpenAiCodexIntegrationApi.java b/src/main/java/com/datadog/api/client/v2/api/OpenAiCodexIntegrationApi.java
new file mode 100644
index 00000000000..ecd8cac3369
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/api/OpenAiCodexIntegrationApi.java
@@ -0,0 +1,849 @@
+package com.datadog.api.client.v2.api;
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.ApiResponse;
+import com.datadog.api.client.Pair;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountCreateRequest;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountResponse;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountUpdateRequest;
+import com.datadog.api.client.v2.model.OpenAICodexIntegrationAccountsResponse;
+import jakarta.ws.rs.client.Invocation;
+import jakarta.ws.rs.core.GenericType;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class OpenAiCodexIntegrationApi {
+ private ApiClient apiClient;
+
+ public OpenAiCodexIntegrationApi() {
+ this(ApiClient.getDefaultApiClient());
+ }
+
+ public OpenAiCodexIntegrationApi(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ /**
+ * Get the API client.
+ *
+ * @return API client
+ */
+ public ApiClient getApiClient() {
+ return apiClient;
+ }
+
+ /**
+ * Set the API client.
+ *
+ * @param apiClient an instance of API client
+ */
+ public void setApiClient(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ /**
+ * Create an OpenAI Codex integration account.
+ *
+ *
See {@link #createOpenAICodexIntegrationAccountWithHttpInfo}.
+ *
+ * @param body (required)
+ * @return OpenAICodexIntegrationAccountResponse
+ * @throws ApiException if fails to make API call
+ */
+ public OpenAICodexIntegrationAccountResponse createOpenAICodexIntegrationAccount(
+ OpenAICodexIntegrationAccountCreateRequest body) throws ApiException {
+ return createOpenAICodexIntegrationAccountWithHttpInfo(body).getData();
+ }
+
+ /**
+ * Create an OpenAI Codex integration account.
+ *
+ *
See {@link #createOpenAICodexIntegrationAccountWithHttpInfoAsync}.
+ *
+ * @param body (required)
+ * @return CompletableFuture<OpenAICodexIntegrationAccountResponse>
+ */
+ public CompletableFuture
+ createOpenAICodexIntegrationAccountAsync(OpenAICodexIntegrationAccountCreateRequest body) {
+ return createOpenAICodexIntegrationAccountWithHttpInfoAsync(body)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Create an OpenAI Codex integration account.
+ *
+ * @param body (required)
+ * @return ApiResponse<OpenAICodexIntegrationAccountResponse>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+ *
+ * Response details
+ * | Status Code | Description | Response Headers |
+ * | 201 | Created | - |
+ * | 400 | Bad Request | - |
+ * | 403 | Forbidden | - |
+ * | 404 | Not Found | - |
+ * | 422 | The server cannot process the request because it contains invalid data. | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse
+ createOpenAICodexIntegrationAccountWithHttpInfo(
+ OpenAICodexIntegrationAccountCreateRequest body) throws ApiException {
+ // Check if unstable operation is enabled
+ String operationId = "createOpenAICodexIntegrationAccount";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
+ }
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'body' when calling createOpenAICodexIntegrationAccount");
+ }
+ // create path and map variables
+ String localVarPath = "/api/v2/integration-interfaces/openai-codex/accounts";
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.OpenAiCodexIntegrationApi.createOpenAICodexIntegrationAccount",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "POST",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * Create an OpenAI Codex integration account.
+ *
+ * See {@link #createOpenAICodexIntegrationAccountWithHttpInfo}.
+ *
+ * @param body (required)
+ * @return CompletableFuture<ApiResponse<OpenAICodexIntegrationAccountResponse>>
+ */
+ public CompletableFuture>
+ createOpenAICodexIntegrationAccountWithHttpInfoAsync(
+ OpenAICodexIntegrationAccountCreateRequest body) {
+ // Check if unstable operation is enabled
+ String operationId = "createOpenAICodexIntegrationAccount";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
+ return result;
+ }
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'body' when calling"
+ + " createOpenAICodexIntegrationAccount"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath = "/api/v2/integration-interfaces/openai-codex/accounts";
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.OpenAiCodexIntegrationApi.createOpenAICodexIntegrationAccount",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ } catch (ApiException ex) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(ex);
+ return result;
+ }
+ return apiClient.invokeAPIAsync(
+ "POST",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * Delete an OpenAI Codex integration account.
+ *
+ * See {@link #deleteOpenAICodexIntegrationAccountWithHttpInfo}.
+ *
+ * @param accountId Unique identifier of the integration account. (required)
+ * @throws ApiException if fails to make API call
+ */
+ public void deleteOpenAICodexIntegrationAccount(String accountId) throws ApiException {
+ deleteOpenAICodexIntegrationAccountWithHttpInfo(accountId);
+ }
+
+ /**
+ * Delete an OpenAI Codex integration account.
+ *
+ *
See {@link #deleteOpenAICodexIntegrationAccountWithHttpInfoAsync}.
+ *
+ * @param accountId Unique identifier of the integration account. (required)
+ * @return CompletableFuture
+ */
+ public CompletableFuture deleteOpenAICodexIntegrationAccountAsync(String accountId) {
+ return deleteOpenAICodexIntegrationAccountWithHttpInfoAsync(accountId)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Delete an OpenAI Codex integration account.
+ *
+ * @param accountId Unique identifier of the integration account. (required)
+ * @return ApiResponse<Void>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+ *
+ * Response details
+ * | Status Code | Description | Response Headers |
+ * | 200 | OK | - |
+ * | 400 | Bad Request | - |
+ * | 403 | Forbidden | - |
+ * | 404 | Not Found | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse deleteOpenAICodexIntegrationAccountWithHttpInfo(String accountId)
+ throws ApiException {
+ // Check if unstable operation is enabled
+ String operationId = "deleteOpenAICodexIntegrationAccount";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
+ }
+ Object localVarPostBody = null;
+
+ // verify the required parameter 'accountId' is set
+ if (accountId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'accountId' when calling"
+ + " deleteOpenAICodexIntegrationAccount");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integration-interfaces/openai-codex/accounts/{account_id}"
+ .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.OpenAiCodexIntegrationApi.deleteOpenAICodexIntegrationAccount",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"*/*"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "DELETE",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ null);
+ }
+
+ /**
+ * Delete an OpenAI Codex integration account.
+ *
+ * See {@link #deleteOpenAICodexIntegrationAccountWithHttpInfo}.
+ *
+ * @param accountId Unique identifier of the integration account. (required)
+ * @return CompletableFuture<ApiResponse<Void>>
+ */
+ public CompletableFuture> deleteOpenAICodexIntegrationAccountWithHttpInfoAsync(
+ String accountId) {
+ // Check if unstable operation is enabled
+ String operationId = "deleteOpenAICodexIntegrationAccount";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
+ return result;
+ }
+ Object localVarPostBody = null;
+
+ // verify the required parameter 'accountId' is set
+ if (accountId == null) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'accountId' when calling"
+ + " deleteOpenAICodexIntegrationAccount"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integration-interfaces/openai-codex/accounts/{account_id}"
+ .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.OpenAiCodexIntegrationApi.deleteOpenAICodexIntegrationAccount",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"*/*"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ } catch (ApiException ex) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(ex);
+ return result;
+ }
+ return apiClient.invokeAPIAsync(
+ "DELETE",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ null);
+ }
+
+ /**
+ * Get an OpenAI Codex integration account.
+ *
+ * See {@link #getOpenAICodexIntegrationAccountWithHttpInfo}.
+ *
+ * @param accountId Unique identifier of the integration account. (required)
+ * @return OpenAICodexIntegrationAccountResponse
+ * @throws ApiException if fails to make API call
+ */
+ public OpenAICodexIntegrationAccountResponse getOpenAICodexIntegrationAccount(String accountId)
+ throws ApiException {
+ return getOpenAICodexIntegrationAccountWithHttpInfo(accountId).getData();
+ }
+
+ /**
+ * Get an OpenAI Codex integration account.
+ *
+ *
See {@link #getOpenAICodexIntegrationAccountWithHttpInfoAsync}.
+ *
+ * @param accountId Unique identifier of the integration account. (required)
+ * @return CompletableFuture<OpenAICodexIntegrationAccountResponse>
+ */
+ public CompletableFuture
+ getOpenAICodexIntegrationAccountAsync(String accountId) {
+ return getOpenAICodexIntegrationAccountWithHttpInfoAsync(accountId)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Get an OpenAI Codex integration account.
+ *
+ * @param accountId Unique identifier of the integration account. (required)
+ * @return ApiResponse<OpenAICodexIntegrationAccountResponse>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+ *
+ * Response details
+ * | Status Code | Description | Response Headers |
+ * | 200 | OK | - |
+ * | 400 | Bad Request | - |
+ * | 403 | Forbidden | - |
+ * | 404 | Not Found | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse
+ getOpenAICodexIntegrationAccountWithHttpInfo(String accountId) throws ApiException {
+ // Check if unstable operation is enabled
+ String operationId = "getOpenAICodexIntegrationAccount";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
+ }
+ Object localVarPostBody = null;
+
+ // verify the required parameter 'accountId' is set
+ if (accountId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'accountId' when calling"
+ + " getOpenAICodexIntegrationAccount");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integration-interfaces/openai-codex/accounts/{account_id}"
+ .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.OpenAiCodexIntegrationApi.getOpenAICodexIntegrationAccount",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "GET",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * Get an OpenAI Codex integration account.
+ *
+ * See {@link #getOpenAICodexIntegrationAccountWithHttpInfo}.
+ *
+ * @param accountId Unique identifier of the integration account. (required)
+ * @return CompletableFuture<ApiResponse<OpenAICodexIntegrationAccountResponse>>
+ */
+ public CompletableFuture>
+ getOpenAICodexIntegrationAccountWithHttpInfoAsync(String accountId) {
+ // Check if unstable operation is enabled
+ String operationId = "getOpenAICodexIntegrationAccount";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
+ return result;
+ }
+ Object localVarPostBody = null;
+
+ // verify the required parameter 'accountId' is set
+ if (accountId == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'accountId' when calling"
+ + " getOpenAICodexIntegrationAccount"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integration-interfaces/openai-codex/accounts/{account_id}"
+ .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.OpenAiCodexIntegrationApi.getOpenAICodexIntegrationAccount",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ } catch (ApiException ex) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(ex);
+ return result;
+ }
+ return apiClient.invokeAPIAsync(
+ "GET",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * List OpenAI Codex integration accounts.
+ *
+ * See {@link #listOpenAICodexIntegrationAccountsWithHttpInfo}.
+ *
+ * @return OpenAICodexIntegrationAccountsResponse
+ * @throws ApiException if fails to make API call
+ */
+ public OpenAICodexIntegrationAccountsResponse listOpenAICodexIntegrationAccounts()
+ throws ApiException {
+ return listOpenAICodexIntegrationAccountsWithHttpInfo().getData();
+ }
+
+ /**
+ * List OpenAI Codex integration accounts.
+ *
+ *
See {@link #listOpenAICodexIntegrationAccountsWithHttpInfoAsync}.
+ *
+ * @return CompletableFuture<OpenAICodexIntegrationAccountsResponse>
+ */
+ public CompletableFuture
+ listOpenAICodexIntegrationAccountsAsync() {
+ return listOpenAICodexIntegrationAccountsWithHttpInfoAsync()
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * List OpenAI Codex integration accounts.
+ *
+ * @return ApiResponse<OpenAICodexIntegrationAccountsResponse>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+ *
+ * Response details
+ * | Status Code | Description | Response Headers |
+ * | 200 | OK | - |
+ * | 400 | Bad Request | - |
+ * | 403 | Forbidden | - |
+ * | 404 | Not Found | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse
+ listOpenAICodexIntegrationAccountsWithHttpInfo() throws ApiException {
+ // Check if unstable operation is enabled
+ String operationId = "listOpenAICodexIntegrationAccounts";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
+ }
+ Object localVarPostBody = null;
+ // create path and map variables
+ String localVarPath = "/api/v2/integration-interfaces/openai-codex/accounts";
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.OpenAiCodexIntegrationApi.listOpenAICodexIntegrationAccounts",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "GET",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * List OpenAI Codex integration accounts.
+ *
+ * See {@link #listOpenAICodexIntegrationAccountsWithHttpInfo}.
+ *
+ * @return CompletableFuture<ApiResponse<OpenAICodexIntegrationAccountsResponse>>
+ */
+ public CompletableFuture>
+ listOpenAICodexIntegrationAccountsWithHttpInfoAsync() {
+ // Check if unstable operation is enabled
+ String operationId = "listOpenAICodexIntegrationAccounts";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
+ return result;
+ }
+ Object localVarPostBody = null;
+ // create path and map variables
+ String localVarPath = "/api/v2/integration-interfaces/openai-codex/accounts";
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.OpenAiCodexIntegrationApi.listOpenAICodexIntegrationAccounts",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ } catch (ApiException ex) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(ex);
+ return result;
+ }
+ return apiClient.invokeAPIAsync(
+ "GET",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * Update an OpenAI Codex integration account.
+ *
+ * See {@link #updateOpenAICodexIntegrationAccountWithHttpInfo}.
+ *
+ * @param accountId Unique identifier of the integration account. (required)
+ * @param body (required)
+ * @return OpenAICodexIntegrationAccountResponse
+ * @throws ApiException if fails to make API call
+ */
+ public OpenAICodexIntegrationAccountResponse updateOpenAICodexIntegrationAccount(
+ String accountId, OpenAICodexIntegrationAccountUpdateRequest body) throws ApiException {
+ return updateOpenAICodexIntegrationAccountWithHttpInfo(accountId, body).getData();
+ }
+
+ /**
+ * Update an OpenAI Codex integration account.
+ *
+ *
See {@link #updateOpenAICodexIntegrationAccountWithHttpInfoAsync}.
+ *
+ * @param accountId Unique identifier of the integration account. (required)
+ * @param body (required)
+ * @return CompletableFuture<OpenAICodexIntegrationAccountResponse>
+ */
+ public CompletableFuture
+ updateOpenAICodexIntegrationAccountAsync(
+ String accountId, OpenAICodexIntegrationAccountUpdateRequest body) {
+ return updateOpenAICodexIntegrationAccountWithHttpInfoAsync(accountId, body)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Update an OpenAI Codex integration account. Only the fields provided are changed.
+ *
+ * @param accountId Unique identifier of the integration account. (required)
+ * @param body (required)
+ * @return ApiResponse<OpenAICodexIntegrationAccountResponse>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+ *
+ * Response details
+ * | Status Code | Description | Response Headers |
+ * | 200 | OK | - |
+ * | 400 | Bad Request | - |
+ * | 403 | Forbidden | - |
+ * | 404 | Not Found | - |
+ * | 422 | The server cannot process the request because it contains invalid data. | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse
+ updateOpenAICodexIntegrationAccountWithHttpInfo(
+ String accountId, OpenAICodexIntegrationAccountUpdateRequest body) throws ApiException {
+ // Check if unstable operation is enabled
+ String operationId = "updateOpenAICodexIntegrationAccount";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
+ }
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'accountId' is set
+ if (accountId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'accountId' when calling"
+ + " updateOpenAICodexIntegrationAccount");
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'body' when calling updateOpenAICodexIntegrationAccount");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integration-interfaces/openai-codex/accounts/{account_id}"
+ .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.OpenAiCodexIntegrationApi.updateOpenAICodexIntegrationAccount",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "PATCH",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * Update an OpenAI Codex integration account.
+ *
+ * See {@link #updateOpenAICodexIntegrationAccountWithHttpInfo}.
+ *
+ * @param accountId Unique identifier of the integration account. (required)
+ * @param body (required)
+ * @return CompletableFuture<ApiResponse<OpenAICodexIntegrationAccountResponse>>
+ */
+ public CompletableFuture>
+ updateOpenAICodexIntegrationAccountWithHttpInfoAsync(
+ String accountId, OpenAICodexIntegrationAccountUpdateRequest body) {
+ // Check if unstable operation is enabled
+ String operationId = "updateOpenAICodexIntegrationAccount";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
+ return result;
+ }
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'accountId' is set
+ if (accountId == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'accountId' when calling"
+ + " updateOpenAICodexIntegrationAccount"));
+ return result;
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'body' when calling"
+ + " updateOpenAICodexIntegrationAccount"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/integration-interfaces/openai-codex/accounts/{account_id}"
+ .replaceAll("\\{" + "account_id" + "\\}", apiClient.escapeString(accountId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.OpenAiCodexIntegrationApi.updateOpenAICodexIntegrationAccount",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ } catch (ApiException ex) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(ex);
+ return result;
+ }
+ return apiClient.invokeAPIAsync(
+ "PATCH",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/OpenAICodexDoraIntegrationDataflowRequest.java b/src/main/java/com/datadog/api/client/v2/model/OpenAICodexDoraIntegrationDataflowRequest.java
new file mode 100644
index 00000000000..0dadf515073
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/OpenAICodexDoraIntegrationDataflowRequest.java
@@ -0,0 +1,87 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.Objects;
+
+/**
+ * A daily per-engineer engagement signal that AI Impact uses to attribute
+ * AI-assisted pull requests.
+ */
+@JsonPropertyOrder({OpenAICodexDoraIntegrationDataflowRequest.JSON_PROPERTY_ENABLED})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class OpenAICodexDoraIntegrationDataflowRequest {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_ENABLED = "enabled";
+ private Boolean enabled;
+
+ public OpenAICodexDoraIntegrationDataflowRequest enabled(Boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * Whether Datadog collects this data. Defaults to true; set to false to
+ * stop collection.
+ *
+ * @return enabled
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ENABLED)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ /** Return true if this OpenAICodexDoraIntegrationDataflowRequest object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ OpenAICodexDoraIntegrationDataflowRequest openAiCodexDoraIntegrationDataflowRequest =
+ (OpenAICodexDoraIntegrationDataflowRequest) o;
+ return Objects.equals(this.enabled, openAiCodexDoraIntegrationDataflowRequest.enabled);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(enabled);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class OpenAICodexDoraIntegrationDataflowRequest {\n");
+ sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n");
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/OpenAICodexDoraIntegrationDataflowResponse.java b/src/main/java/com/datadog/api/client/v2/model/OpenAICodexDoraIntegrationDataflowResponse.java
new file mode 100644
index 00000000000..a48e2f7d55a
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/OpenAICodexDoraIntegrationDataflowResponse.java
@@ -0,0 +1,163 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * A daily per-engineer engagement signal that AI Impact uses to attribute
+ * AI-assisted pull requests.
+ */
+@JsonPropertyOrder({
+ OpenAICodexDoraIntegrationDataflowResponse.JSON_PROPERTY_ENABLED,
+ OpenAICodexDoraIntegrationDataflowResponse.JSON_PROPERTY_STATUS
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class OpenAICodexDoraIntegrationDataflowResponse {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_ENABLED = "enabled";
+ private Boolean enabled;
+
+ public static final String JSON_PROPERTY_STATUS = "status";
+ private IntegrationAccountDataflowStatus status;
+
+ public OpenAICodexDoraIntegrationDataflowResponse enabled(Boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * Whether Datadog collects this data.
+ *
+ * @return enabled
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ENABLED)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ /**
+ * Read-only collection status of a dataflow.
+ *
+ * @return status
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_STATUS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public IntegrationAccountDataflowStatus getStatus() {
+ return status;
+ }
+
+ /**
+ * A container for additional, undeclared properties. This is a holder for any undeclared
+ * properties as specified with the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value. If the property
+ * does not already exist, create it otherwise replace it.
+ *
+ * @param key The arbitrary key to set
+ * @param value The associated value
+ * @return OpenAICodexDoraIntegrationDataflowResponse
+ */
+ @JsonAnySetter
+ public OpenAICodexDoraIntegrationDataflowResponse putAdditionalProperty(
+ String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return The additional properties
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key The arbitrary key to get
+ * @return The specific additional property for the given key
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ /** Return true if this OpenAICodexDoraIntegrationDataflowResponse object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ OpenAICodexDoraIntegrationDataflowResponse openAiCodexDoraIntegrationDataflowResponse =
+ (OpenAICodexDoraIntegrationDataflowResponse) o;
+ return Objects.equals(this.enabled, openAiCodexDoraIntegrationDataflowResponse.enabled)
+ && Objects.equals(this.status, openAiCodexDoraIntegrationDataflowResponse.status)
+ && Objects.equals(
+ this.additionalProperties,
+ openAiCodexDoraIntegrationDataflowResponse.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(enabled, status, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class OpenAICodexDoraIntegrationDataflowResponse {\n");
+ sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n");
+ sb.append(" status: ").append(toIndentedString(status)).append("\n");
+ sb.append(" additionalProperties: ")
+ .append(toIndentedString(additionalProperties))
+ .append("\n");
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/OpenAICodexIntegrationAccountAuthenticationRequest.java b/src/main/java/com/datadog/api/client/v2/model/OpenAICodexIntegrationAccountAuthenticationRequest.java
new file mode 100644
index 00000000000..1d32b7d70d1
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/OpenAICodexIntegrationAccountAuthenticationRequest.java
@@ -0,0 +1,248 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.datadog.api.client.AbstractOpenApiSchema;
+import com.datadog.api.client.JSON;
+import com.datadog.api.client.UnparsedObject;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.JsonToken;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.MapperFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import jakarta.ws.rs.core.GenericType;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+@JsonDeserialize(
+ using =
+ OpenAICodexIntegrationAccountAuthenticationRequest
+ .OpenAICodexIntegrationAccountAuthenticationRequestDeserializer.class)
+@JsonSerialize(
+ using =
+ OpenAICodexIntegrationAccountAuthenticationRequest
+ .OpenAICodexIntegrationAccountAuthenticationRequestSerializer.class)
+public class OpenAICodexIntegrationAccountAuthenticationRequest extends AbstractOpenApiSchema {
+ private static final Logger log =
+ Logger.getLogger(OpenAICodexIntegrationAccountAuthenticationRequest.class.getName());
+
+ @JsonIgnore public boolean unparsed = false;
+
+ public static class OpenAICodexIntegrationAccountAuthenticationRequestSerializer
+ extends StdSerializer {
+ public OpenAICodexIntegrationAccountAuthenticationRequestSerializer(
+ Class t) {
+ super(t);
+ }
+
+ public OpenAICodexIntegrationAccountAuthenticationRequestSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ OpenAICodexIntegrationAccountAuthenticationRequest value,
+ JsonGenerator jgen,
+ SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.getActualInstance());
+ }
+ }
+
+ public static class OpenAICodexIntegrationAccountAuthenticationRequestDeserializer
+ extends StdDeserializer {
+ public OpenAICodexIntegrationAccountAuthenticationRequestDeserializer() {
+ this(OpenAICodexIntegrationAccountAuthenticationRequest.class);
+ }
+
+ public OpenAICodexIntegrationAccountAuthenticationRequestDeserializer(Class> vc) {
+ super(vc);
+ }
+
+ @Override
+ public OpenAICodexIntegrationAccountAuthenticationRequest deserialize(
+ JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
+ JsonNode tree = jp.readValueAsTree();
+ Object deserialized = null;
+ Object tmp = null;
+ boolean typeCoercion = ctxt.isEnabled(MapperFeature.ALLOW_COERCION_OF_SCALARS);
+ int match = 0;
+ JsonToken token = tree.traverse(jp.getCodec()).nextToken();
+ // deserialize OpenAICodexIntegrationAccountBearerTokenAuthRequest
+ try {
+ boolean attemptParsing = true;
+ // ensure that we respect type coercion as set on the client ObjectMapper
+ if (OpenAICodexIntegrationAccountBearerTokenAuthRequest.class.equals(Integer.class)
+ || OpenAICodexIntegrationAccountBearerTokenAuthRequest.class.equals(Long.class)
+ || OpenAICodexIntegrationAccountBearerTokenAuthRequest.class.equals(Float.class)
+ || OpenAICodexIntegrationAccountBearerTokenAuthRequest.class.equals(Double.class)
+ || OpenAICodexIntegrationAccountBearerTokenAuthRequest.class.equals(Boolean.class)
+ || OpenAICodexIntegrationAccountBearerTokenAuthRequest.class.equals(String.class)) {
+ attemptParsing = typeCoercion;
+ if (!attemptParsing) {
+ attemptParsing |=
+ ((OpenAICodexIntegrationAccountBearerTokenAuthRequest.class.equals(Integer.class)
+ || OpenAICodexIntegrationAccountBearerTokenAuthRequest.class.equals(
+ Long.class))
+ && token == JsonToken.VALUE_NUMBER_INT);
+ attemptParsing |=
+ ((OpenAICodexIntegrationAccountBearerTokenAuthRequest.class.equals(Float.class)
+ || OpenAICodexIntegrationAccountBearerTokenAuthRequest.class.equals(
+ Double.class))
+ && (token == JsonToken.VALUE_NUMBER_FLOAT
+ || token == JsonToken.VALUE_NUMBER_INT));
+ attemptParsing |=
+ (OpenAICodexIntegrationAccountBearerTokenAuthRequest.class.equals(Boolean.class)
+ && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
+ attemptParsing |=
+ (OpenAICodexIntegrationAccountBearerTokenAuthRequest.class.equals(String.class)
+ && token == JsonToken.VALUE_STRING);
+ }
+ }
+ if (attemptParsing) {
+ tmp =
+ tree.traverse(jp.getCodec())
+ .readValueAs(OpenAICodexIntegrationAccountBearerTokenAuthRequest.class);
+ // TODO: there is no validation against JSON schema constraints
+ // (min, max, enum, pattern...), this does not perform a strict JSON
+ // validation, which means the 'match' count may be higher than it should be.
+ if (!((OpenAICodexIntegrationAccountBearerTokenAuthRequest) tmp).unparsed) {
+ deserialized = tmp;
+ match++;
+ }
+ log.log(
+ Level.FINER,
+ "Input data matches schema 'OpenAICodexIntegrationAccountBearerTokenAuthRequest'");
+ }
+ } catch (Exception e) {
+ // deserialization failed, continue
+ log.log(
+ Level.FINER,
+ "Input data does not match schema"
+ + " 'OpenAICodexIntegrationAccountBearerTokenAuthRequest'",
+ e);
+ }
+
+ OpenAICodexIntegrationAccountAuthenticationRequest ret =
+ new OpenAICodexIntegrationAccountAuthenticationRequest();
+ if (match == 1) {
+ ret.setActualInstance(deserialized);
+ } else {
+ Map res =
+ new ObjectMapper()
+ .readValue(
+ tree.traverse(jp.getCodec()).readValueAsTree().toString(),
+ new TypeReference