diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index 7131ce19a0..1a0f742ff6 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -17308,6 +17308,7 @@ components: - $ref: "#/components/schemas/SyntheticsBasicAuthDigest" - $ref: "#/components/schemas/SyntheticsBasicAuthOauthClient" - $ref: "#/components/schemas/SyntheticsBasicAuthOauthROP" + - $ref: "#/components/schemas/SyntheticsBasicAuthJWT" SyntheticsBasicAuthDigest: description: Object to handle digest authentication when performing the test. properties: @@ -17335,6 +17336,78 @@ components: type: string x-enum-varnames: - DIGEST + SyntheticsBasicAuthJWT: + description: Object to handle JWT authentication when performing the test. + properties: + addClaims: + $ref: "#/components/schemas/SyntheticsBasicAuthJWTAddClaims" + algorithm: + $ref: "#/components/schemas/SyntheticsBasicAuthJWTAlgorithm" + expiresIn: + description: Token time-to-live in seconds. + example: 3600 + format: int64 + minimum: 1 + type: integer + header: + description: Custom JWT header as a JSON string. + example: '{"kid": "my-key-id"}' + type: string + payload: + description: JWT claims as a JSON string. + example: '{"sub": "1234567890", "name": "John Doe"}' + type: string + secret: + description: |- + Signing key for the JWT authentication. Use the shared secret for `HS256` + or the private key (PEM format) for `RS256` and `ES256`. + example: "mysecretkey" + type: string + tokenPrefix: + description: Prefix added before the token in the `Authorization` header. Defaults to `Bearer`. + example: "Bearer" + type: string + type: + $ref: "#/components/schemas/SyntheticsBasicAuthJWTType" + required: + - algorithm + - payload + - secret + - type + type: object + SyntheticsBasicAuthJWTAddClaims: + description: Standard JWT claims to automatically inject. + properties: + exp: + description: Whether to inject the `exp` (expiration) claim. + example: true + type: boolean + iat: + description: Whether to inject the `iat` (issued at) claim. + example: true + type: boolean + type: object + SyntheticsBasicAuthJWTAlgorithm: + description: Algorithm to use for the JWT authentication. + enum: + - HS256 + - RS256 + - ES256 + example: "HS256" + type: string + x-enum-varnames: + - HS256 + - RS256 + - ES256 + SyntheticsBasicAuthJWTType: + default: "jwt" + description: The type of authentication to use when performing the test. + enum: + - jwt + example: "jwt" + type: string + x-enum-varnames: + - JWT SyntheticsBasicAuthNTLM: description: Object to handle `NTLM` authentication when performing the test. properties: @@ -22750,23 +22823,33 @@ components: format: int64 type: integer ai_credits_agent_builder_ai_credits_sum: - description: Shows the sum of all AI credits used by Agent Builder over all hours in the current date for all organizations. + description: |- + Shows the sum of all AI credits used by Agent Builder over all hours in the current date for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer ai_credits_bits_assistant_ai_credits_sum: - description: Shows the sum of all AI credits used by Bits AI Assistant over all hours in the current date for all organizations. + description: |- + Shows the sum of all AI credits used by Bits AI Assistant over all hours in the current date for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer ai_credits_bits_dev_ai_credits_sum: - description: Shows the sum of all AI credits used by Bits AI Dev over all hours in the current date for all organizations. + description: |- + Shows the sum of all AI credits used by Bits AI Dev over all hours in the current date for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer ai_credits_bits_sre_ai_credits_sum: - description: Shows the sum of all AI credits used by Bits AI SRE over all hours in the current date for all organizations. + description: |- + Shows the sum of all AI credits used by Bits AI SRE over all hours in the current date for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer ai_credits_sum: - description: Shows the sum of all AI credits over all hours in the current date for all organizations. + description: |- + Shows the sum of all AI credits over all hours in the current date for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer apm_azure_app_service_host_top99p: @@ -23125,7 +23208,9 @@ components: format: int64 type: integer do_jobs_monitoring_orchestrators_job_hours_sum: - description: Shows the sum of all orchestrator job hours over all hours in the current date for all organizations. + description: |- + Shows the sum of all orchestrator job hours over all hours in the current date for all organizations. + Values are returned in seconds. Divide by 3,600 to convert to hours. format: int64 type: integer eph_infra_host_agent_sum: @@ -23309,123 +23394,183 @@ components: format: int64 type: integer infra_cpu_avg: - description: Shows the average of all Infrastructure vCPU cores over all hours in the current date for all organizations. + description: |- + Shows the average of all Infrastructure vCPU cores over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_agent_avg: - description: Shows the average of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + description: |- + Shows the average of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_agent_basic_avg: - description: Shows the average of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + description: |- + Shows the average of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_agent_basic_sum: - description: Shows the sum of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + description: |- + Shows the sum of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_agent_sum: - description: Shows the sum of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + description: |- + Shows the sum of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_aws_avg: - description: Shows the average of all default Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations. + description: |- + Shows the average of all default Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_aws_sum: - description: Shows the sum of all default Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations. + description: |- + Shows the sum of all default Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_azure_avg: - description: Shows the average of all default Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations. + description: |- + Shows the average of all default Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_azure_sum: - description: Shows the sum of all default Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations. + description: |- + Shows the sum of all default Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_gcp_avg: - description: Shows the average of all default Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations. + description: |- + Shows the average of all default Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_gcp_sum: - description: Shows the sum of all default Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations. + description: |- + Shows the sum of all default Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_nutanix_avg: - description: Shows the average of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + description: |- + Shows the average of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_nutanix_basic_avg: - description: Shows the average of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + description: |- + Shows the average of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_nutanix_basic_sum: - description: Shows the sum of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + description: |- + Shows the sum of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_nutanix_sum: - description: Shows the sum of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + description: |- + Shows the sum of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_opentelemetry_avg: - description: Shows the average of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations. + description: |- + Shows the average of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_opentelemetry_sum: - description: Shows the sum of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations. + description: |- + Shows the sum of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_agent_avg: - description: Shows the average of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + description: |- + Shows the average of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_agent_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_aws_avg: - description: Shows the average of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations. + description: |- + Shows the average of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_aws_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_azure_avg: - description: Shows the average of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations. + description: |- + Shows the average of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_azure_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_gcp_avg: - description: Shows the average of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations. + description: |- + Shows the average of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_gcp_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_nutanix_avg: - description: Shows the average of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + description: |- + Shows the average of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_nutanix_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_opentelemetry_avg: - description: Shows the average of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations. + description: |- + Shows the average of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_opentelemetry_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_sum: - description: Shows the sum of all Infrastructure vCPU cores over all hours in the current date for all organizations. + description: |- + Shows the sum of all Infrastructure vCPU cores over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_edge_monitoring_devices_top99p: @@ -23985,23 +24130,33 @@ components: format: int64 type: integer ai_credits_agent_builder_ai_credits_sum: - description: Shows the sum of all AI credits used by Agent Builder over all hours in the current date for the given org. + description: |- + Shows the sum of all AI credits used by Agent Builder over all hours in the current date for the given org. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer ai_credits_bits_assistant_ai_credits_sum: - description: Shows the sum of all AI credits used by Bits AI Assistant over all hours in the current date for the given org. + description: |- + Shows the sum of all AI credits used by Bits AI Assistant over all hours in the current date for the given org. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer ai_credits_bits_dev_ai_credits_sum: - description: Shows the sum of all AI credits used by Bits AI Dev over all hours in the current date for the given org. + description: |- + Shows the sum of all AI credits used by Bits AI Dev over all hours in the current date for the given org. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer ai_credits_bits_sre_ai_credits_sum: - description: Shows the sum of all AI credits used by Bits AI SRE over all hours in the current date for the given org. + description: |- + Shows the sum of all AI credits used by Bits AI SRE over all hours in the current date for the given org. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer ai_credits_sum: - description: Shows the sum of all AI credits over all hours in the current date for the given org. + description: |- + Shows the sum of all AI credits over all hours in the current date for the given org. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer apm_azure_app_service_host_top99p: @@ -24364,7 +24519,9 @@ components: format: int64 type: integer do_jobs_monitoring_orchestrators_job_hours_sum: - description: Shows the sum of all orchestrator job hours over all hours in the current date for the given org. + description: |- + Shows the sum of all orchestrator job hours over all hours in the current date for the given org. + Values are returned in seconds. Divide by 3,600 to convert to hours. format: int64 type: integer eph_infra_host_agent_sum: @@ -24552,123 +24709,183 @@ components: format: int64 type: integer infra_cpu_avg: - description: Shows the average of all Infrastructure vCPU cores over all hours in the current date for the given org. + description: |- + Shows the average of all Infrastructure vCPU cores over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_agent_avg: - description: Shows the average of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + description: |- + Shows the average of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_agent_basic_avg: - description: Shows the average of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + description: |- + Shows the average of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_agent_basic_sum: - description: Shows the sum of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + description: |- + Shows the sum of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_agent_sum: - description: Shows the sum of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + description: |- + Shows the sum of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_aws_avg: - description: Shows the average of all default Infrastructure host vCPU cores on AWS over all hours in the current date for the given org. + description: |- + Shows the average of all default Infrastructure host vCPU cores on AWS over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_aws_sum: - description: Shows the sum of all default Infrastructure host vCPU cores on AWS over all hours in the current date for the given org. + description: |- + Shows the sum of all default Infrastructure host vCPU cores on AWS over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_azure_avg: - description: Shows the average of all default Infrastructure host vCPU cores on Azure over all hours in the current date for the given org. + description: |- + Shows the average of all default Infrastructure host vCPU cores on Azure over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_azure_sum: - description: Shows the sum of all default Infrastructure host vCPU cores on Azure over all hours in the current date for the given org. + description: |- + Shows the sum of all default Infrastructure host vCPU cores on Azure over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_gcp_avg: - description: Shows the average of all default Infrastructure host vCPU cores on GCP over all hours in the current date for the given org. + description: |- + Shows the average of all default Infrastructure host vCPU cores on GCP over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_gcp_sum: - description: Shows the sum of all default Infrastructure host vCPU cores on GCP over all hours in the current date for the given org. + description: |- + Shows the sum of all default Infrastructure host vCPU cores on GCP over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_nutanix_avg: - description: Shows the average of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + description: |- + Shows the average of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_nutanix_basic_avg: - description: Shows the average of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + description: |- + Shows the average of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_nutanix_basic_sum: - description: Shows the sum of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + description: |- + Shows the sum of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_nutanix_sum: - description: Shows the sum of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + description: |- + Shows the sum of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_opentelemetry_avg: - description: Shows the average of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org. + description: |- + Shows the average of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_opentelemetry_sum: - description: Shows the sum of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org. + description: |- + Shows the sum of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_agent_avg: - description: Shows the average of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + description: |- + Shows the average of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_agent_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_aws_avg: - description: Shows the average of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for the given org. + description: |- + Shows the average of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_aws_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for the given org. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_azure_avg: - description: Shows the average of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for the given org. + description: |- + Shows the average of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_azure_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for the given org. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_gcp_avg: - description: Shows the average of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for the given org. + description: |- + Shows the average of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_gcp_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for the given org. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_nutanix_avg: - description: Shows the average of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + description: |- + Shows the average of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_nutanix_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_opentelemetry_avg: - description: Shows the average of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org. + description: |- + Shows the average of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_opentelemetry_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_sum: - description: Shows the sum of all Infrastructure vCPU cores over all hours in the current date for the given org. + description: |- + Shows the sum of all Infrastructure vCPU cores over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_edge_monitoring_devices_top99p: @@ -25227,23 +25444,33 @@ components: format: int64 type: integer ai_credits_agent_builder_ai_credits_agg_sum: - description: Shows the sum of all AI credits used by Agent Builder over all hours in the current month for all organizations. + description: |- + Shows the sum of all AI credits used by Agent Builder over all hours in the current month for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer ai_credits_agg_sum: - description: Shows the sum of all AI credits over all hours in the current month for all organizations. + description: |- + Shows the sum of all AI credits over all hours in the current month for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer ai_credits_bits_assistant_ai_credits_agg_sum: - description: Shows the sum of all AI credits used by Bits AI Assistant over all hours in the current month for all organizations. + description: |- + Shows the sum of all AI credits used by Bits AI Assistant over all hours in the current month for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer ai_credits_bits_dev_ai_credits_agg_sum: - description: Shows the sum of all AI credits used by Bits AI Dev over all hours in the current month for all organizations. + description: |- + Shows the sum of all AI credits used by Bits AI Dev over all hours in the current month for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer ai_credits_bits_sre_ai_credits_agg_sum: - description: Shows the sum of all AI credits used by Bits AI SRE over all hours in the current month for all organizations. + description: |- + Shows the sum of all AI credits used by Bits AI SRE over all hours in the current month for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. format: int64 type: integer apm_azure_app_service_host_top99p_sum: @@ -25610,7 +25837,9 @@ components: format: int64 type: integer do_jobs_monitoring_orchestrators_job_hours_agg_sum: - description: Shows the sum of all orchestrator job hours over all hours in the current month for all organizations. + description: |- + Shows the sum of all orchestrator job hours over all hours in the current month for all organizations. + Values are returned in seconds. Divide by 3,600 to convert to hours. format: int64 type: integer end_date: @@ -25799,123 +26028,183 @@ components: format: int64 type: integer infra_cpu_agg_sum: - description: Shows the sum of all Infrastructure vCPU cores over all hours in the current month for all organizations. + description: |- + Shows the sum of all Infrastructure vCPU cores over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_avg_sum: - description: Shows the average of all Infrastructure vCPU cores over all hours in the current month for all organizations. + description: |- + Shows the average of all Infrastructure vCPU cores over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_agent_agg_sum: - description: Shows the sum of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + description: |- + Shows the sum of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_agent_avg_sum: - description: Shows the average of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + description: |- + Shows the average of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_agent_basic_agg_sum: - description: Shows the sum of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + description: |- + Shows the sum of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_agent_basic_avg_sum: - description: Shows the average of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + description: |- + Shows the average of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_aws_agg_sum: - description: Shows the sum of all default Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations. + description: |- + Shows the sum of all default Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_aws_avg_sum: - description: Shows the average of all default Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations. + description: |- + Shows the average of all default Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_azure_agg_sum: - description: Shows the sum of all default Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations. + description: |- + Shows the sum of all default Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_azure_avg_sum: - description: Shows the average of all default Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations. + description: |- + Shows the average of all default Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_gcp_agg_sum: - description: Shows the sum of all default Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations. + description: |- + Shows the sum of all default Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_gcp_avg_sum: - description: Shows the average of all default Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations. + description: |- + Shows the average of all default Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_nutanix_agg_sum: - description: Shows the sum of all default Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + description: |- + Shows the sum of all default Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_nutanix_avg_sum: - description: Shows the average of all default Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + description: |- + Shows the average of all default Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_nutanix_basic_agg_sum: - description: Shows the sum of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + description: |- + Shows the sum of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_nutanix_basic_avg_sum: - description: Shows the average of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + description: |- + Shows the average of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_opentelemetry_agg_sum: - description: Shows the sum of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations. + description: |- + Shows the sum of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_default_infra_host_vcpu_opentelemetry_avg_sum: - description: Shows the average of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations. + description: |- + Shows the average of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_agent_agg_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_agent_avg_sum: - description: Shows the average of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + description: |- + Shows the average of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_aws_agg_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_aws_avg_sum: - description: Shows the average of all observed Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations. + description: |- + Shows the average of all observed Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_azure_agg_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_azure_avg_sum: - description: Shows the average of all observed Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations. + description: |- + Shows the average of all observed Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_gcp_agg_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_gcp_avg_sum: - description: Shows the average of all observed Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations. + description: |- + Shows the average of all observed Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_nutanix_agg_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_nutanix_avg_sum: - description: Shows the average of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + description: |- + Shows the average of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_opentelemetry_agg_sum: - description: Shows the sum of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations. + description: |- + Shows the sum of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_cpu_observed_infra_host_vcpu_opentelemetry_avg_sum: - description: Shows the average of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations. + description: |- + Shows the average of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. format: int64 type: integer infra_edge_monitoring_devices_top99p_sum: diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 74b9de4010..48ab737deb 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -161,6 +161,13 @@ components: schema: example: "2020-11-24T18:46:21+00:00" type: string + ApplicationKeyFilterOwnedByParameter: + description: Filter application keys by owner ID. + in: query + name: filter[owned_by] + required: false + schema: + type: string ApplicationKeyFilterParameter: description: Filter application keys by the specified string. in: query @@ -661,6 +668,13 @@ components: required: true schema: type: string + GoogleChatTargetAudienceIdPathParameter: + description: Your target audience ID. + in: path + name: target_audience_id + required: true + schema: + type: string HistoricalJobID: description: The ID of the job. in: path @@ -800,28 +814,6 @@ components: required: false schema: $ref: "#/components/schemas/IncidentSearchSortOrder" - IncidentServiceIDPathParameter: - description: The ID of the incident service. - in: path - name: service_id - required: true - schema: - type: string - IncidentServiceIncludeQueryParameter: - description: Specifies which types of related objects should be included in the response. - in: query - name: "include" - required: false - schema: - $ref: "#/components/schemas/IncidentRelatedObject" - IncidentServiceSearchQueryParameter: - description: A search query that filters services by name. - in: query - name: "filter" - required: false - schema: - example: "ExampleServiceName" - type: string IncidentTodoIDPathParameter: description: The UUID of the incident todo. in: path @@ -930,6 +922,58 @@ components: required: true schema: $ref: "#/components/schemas/LLMObsIntegrationName" + LLMObsPatternsConfigIDPathParameter: + description: The ID of the patterns configuration. + example: "a7c8d9e0-1234-5678-9abc-def012345678" + in: path + name: config_id + required: true + schema: + type: string + LLMObsPatternsConfigIDQueryParameter: + description: The ID of the patterns configuration. + example: "a7c8d9e0-1234-5678-9abc-def012345678" + in: query + name: config_id + required: true + schema: + type: string + LLMObsPatternsIncludeMetricsQueryParameter: + description: |- + When true, enrich each clustered point with span metrics such as status, + duration, token counts, estimated cost, and evaluations. + in: query + name: include_metrics + schema: + type: boolean + LLMObsPatternsPageSizeQueryParameter: + description: Maximum number of clustered points to return per page. + in: query + name: page_size + schema: + format: int64 + type: integer + LLMObsPatternsPageTokenQueryParameter: + description: Pagination token to retrieve the next page of clustered points. + in: query + name: page_token + schema: + type: string + LLMObsPatternsRunIDQueryParameter: + description: The ID of a specific patterns run. Defaults to the most recent completed run. + example: "3fd6b5e0-8910-4b1c-a7d0-5b84de329012" + in: query + name: run_id + schema: + type: string + LLMObsPatternsTopicIDQueryParameter: + description: The ID of the topic to retrieve clustered points for. + example: "5c1fae90-2b6d-4e3a-9f12-7a0c4d8e6b21" + in: query + name: topic_id + required: true + schema: + type: string LLMObsProjectIDPathParameter: description: The ID of the LLM Observability project. example: "a33671aa-24fd-4dcd-9b33-a8ec7dde7751" @@ -1005,6 +1049,13 @@ components: required: true schema: type: string + MicrosoftTeamsTenantIDPathParameter: + description: Your tenant id. + in: path + name: tenant_id + required: true + schema: + type: string MicrosoftTeamsTenantIDQueryParameter: description: Your tenant id. in: query @@ -1558,20 +1609,6 @@ components: required: true schema: type: string - RumHardcodedRetentionFilterApplicationIDParameter: - description: RUM application ID. - in: path - name: app_id - required: true - schema: - type: string - RumHardcodedRetentionFilterIDParameter: - description: Hardcoded retention filter ID. - in: path - name: rf_id - required: true - schema: - type: string RumMetricIDParameter: description: The name of the RUM-based metric. in: path @@ -1586,6 +1623,23 @@ components: required: true schema: $ref: "#/components/schemas/RumPermanentRetentionFilterID" + RumRateLimitScopeIDParameter: + description: |- + The identifier of the scope the rate limit configuration applies to. + For the `application` scope, this is the RUM application ID. + in: path + name: scope_id + required: true + schema: + example: cd73a516-a481-4af5-8352-9b577465c77b + type: string + RumRateLimitScopeTypeParameter: + description: The type of scope the rate limit configuration applies to. + in: path + name: scope_type + required: true + schema: + $ref: "#/components/schemas/RumRateLimitScopeType" RumRetentionFilterIDParameter: description: Retention filter ID. in: path @@ -1683,6 +1737,15 @@ components: required: true schema: type: string + SecurityMonitoringRuleVersion: + description: The historical version number of the rule. + in: path + name: version + required: true + schema: + example: 1 + format: int64 + type: integer SecurityMonitoringSuppressionID: description: The ID of the suppression rule in: path @@ -1734,6 +1797,14 @@ components: schema: example: "my-service" type: string + SharedDashboardDashboardIDPathParameter: + description: ID of the dashboard. + in: path + name: dashboard_id + required: true + schema: + example: abc-def-ghi + type: string SignalID: description: The ID of the signal. in: path @@ -1748,6 +1819,14 @@ components: required: false schema: type: boolean + SlackUserUuidQueryParameter: + description: The UUID of the Datadog user to list Slack bindings for. + in: query + name: user_uuid + required: true + schema: + format: uuid + type: string SloID: description: The ID of the SLO. in: path @@ -1770,6 +1849,14 @@ components: required: true schema: type: string + TagIndexingRuleId: + description: ID of the tag indexing rule. + example: 00000000-0000-0000-0000-000000000001 + in: path + name: id + required: true + schema: + type: string TagKey: description: The Cloud Cost Management tag key. Tag keys can contain forward slashes (for example, `kubernetes/instance`). in: path @@ -1953,12 +2040,7 @@ components: content: "application/json": schema: - properties: - data: - items: - $ref: "#/components/schemas/NotificationRule" - type: array - type: object + $ref: "#/components/schemas/NotificationRulesListResponse" description: The list of notification rules. PreconditionFailedResponse: content: @@ -2693,6 +2775,158 @@ components: type: string x-enum-varnames: - CCM_CONFIG + AWSCcmConfigValidationIssue: + description: A single validation issue found while validating an AWS Cost and Usage Report (CUR) 2.0 configuration. + properties: + code: + $ref: "#/components/schemas/AWSCcmConfigValidationIssueCode" + description: + description: Human-readable description of the validation issue. + example: 'no CUR 2.0 export named "cost-and-usage-report" found' + type: string + required: + - code + - description + type: object + AWSCcmConfigValidationIssueCode: + description: Identifies the specific reason a Cost and Usage Report (CUR) 2.0 configuration failed validation. + enum: + - ISSUE_CODE_UNSPECIFIED + - CREDENTIAL_ERROR + - BUCKET_NAME_INVALID_GOVCLOUD + - S3_LIST_PERMISSION_MISSING + - S3_GET_PERMISSION_MISSING + - S3_BUCKET_REGION_MISMATCH + - S3_BUCKET_NOT_ACCESSIBLE + - EXPORT_LIST_PERMISSION_MISSING + - EXPORT_GET_PERMISSION_MISSING + - EXPORT_NOT_FOUND + - EXPORT_STATUS_UNHEALTHY + - TIME_GRANULARITY_INVALID + - FILE_FORMAT_INVALID + - INCLUDE_RESOURCES_DISABLED + - REFRESH_CADENCE_INVALID + - OVERWRITE_MODE_INVALID + - QUERY_STATEMENT_INVALID + example: "EXPORT_NOT_FOUND" + type: string + x-enum-varnames: + - ISSUE_CODE_UNSPECIFIED + - CREDENTIAL_ERROR + - BUCKET_NAME_INVALID_GOVCLOUD + - S3_LIST_PERMISSION_MISSING + - S3_GET_PERMISSION_MISSING + - S3_BUCKET_REGION_MISMATCH + - S3_BUCKET_NOT_ACCESSIBLE + - EXPORT_LIST_PERMISSION_MISSING + - EXPORT_GET_PERMISSION_MISSING + - EXPORT_NOT_FOUND + - EXPORT_STATUS_UNHEALTHY + - TIME_GRANULARITY_INVALID + - FILE_FORMAT_INVALID + - INCLUDE_RESOURCES_DISABLED + - REFRESH_CADENCE_INVALID + - OVERWRITE_MODE_INVALID + - QUERY_STATEMENT_INVALID + AWSCcmConfigValidationIssues: + description: List of validation issues found for the Cost and Usage Report (CUR) 2.0 configuration. Empty when the configuration is valid. + items: + $ref: "#/components/schemas/AWSCcmConfigValidationIssue" + type: array + AWSCcmConfigValidationRequest: + description: AWS CCM config validation request body. + properties: + data: + $ref: "#/components/schemas/AWSCcmConfigValidationRequestData" + required: + - data + type: object + AWSCcmConfigValidationRequestAttributes: + description: Attributes for an AWS CCM config validation request. + properties: + account_id: + description: Your AWS Account ID without dashes. + example: "123456789012" + type: string + bucket_name: + description: Name of the S3 bucket where the Cost and Usage Report is stored. + example: "billing" + type: string + bucket_region: + description: AWS region of the S3 bucket. + example: "us-east-1" + type: string + report_name: + description: Name of the Cost and Usage Report. + example: "cost-and-usage-report" + type: string + report_prefix: + description: S3 prefix where the Cost and Usage Report is stored. + example: "reports" + type: string + required: + - account_id + - bucket_name + - bucket_region + - report_name + type: object + AWSCcmConfigValidationRequestData: + description: AWS CCM config validation request data. + properties: + attributes: + $ref: "#/components/schemas/AWSCcmConfigValidationRequestAttributes" + type: + $ref: "#/components/schemas/AWSCcmConfigValidationType" + required: + - attributes + - type + type: object + AWSCcmConfigValidationResponse: + description: AWS CCM config validation response body. + properties: + data: + $ref: "#/components/schemas/AWSCcmConfigValidationResponseData" + required: + - data + type: object + AWSCcmConfigValidationResponseAttributes: + description: Attributes for an AWS CCM config validation response. + properties: + account_id: + description: Your AWS Account ID without dashes. + example: "123456789012" + type: string + issues: + $ref: "#/components/schemas/AWSCcmConfigValidationIssues" + required: + - account_id + - issues + type: object + AWSCcmConfigValidationResponseData: + description: AWS CCM config validation response data. + properties: + attributes: + $ref: "#/components/schemas/AWSCcmConfigValidationResponseAttributes" + id: + description: AWS CCM config validation resource identifier. + example: "ccm_config_validation" + type: string + type: + $ref: "#/components/schemas/AWSCcmConfigValidationType" + required: + - attributes + - id + - type + type: object + AWSCcmConfigValidationType: + default: "ccm_config_validation" + description: AWS CCM config validation resource type. + enum: + - ccm_config_validation + example: "ccm_config_validation" + type: string + x-enum-varnames: + - CCM_CONFIG_VALIDATION AWSCloudAuthPersonaMappingAttributesResponse: description: Attributes for AWS cloud authentication persona mapping response properties: @@ -10112,6 +10346,7 @@ components: description: HTTP-like status code describing the outcome for this finding. example: 500 format: int32 + maximum: 599 type: integer title: description: Short label describing the outcome for this finding. @@ -17127,6 +17362,32 @@ components: required: - type type: object + CloneFormData: + description: The data for cloning a form. + properties: + attributes: + $ref: "#/components/schemas/CloneFormDataAttributes" + type: + $ref: "#/components/schemas/FormType" + required: + - type + type: object + CloneFormDataAttributes: + description: The attributes for cloning a form. + properties: + name: + description: The name for the cloned form. Defaults to "Copy of (source form name)" if not provided. + example: Copy of My Form + type: string + type: object + CloneFormRequest: + description: A request to clone a form. + properties: + data: + $ref: "#/components/schemas/CloneFormData" + required: + - data + type: object CloudAssetType: description: The cloud asset type enum: @@ -17880,7 +18141,8 @@ components: description: "The value of the set action" oneOf: - type: string - - type: integer + - format: int64 + type: integer - type: boolean CloudWorkloadSecurityAgentRuleActions: description: "The array of actions the rule can perform if triggered" @@ -23057,6 +23319,60 @@ components: required: - data type: object + CreateFormData: + description: The data for creating a form. + properties: + attributes: + $ref: "#/components/schemas/CreateFormDataAttributes" + type: + $ref: "#/components/schemas/FormType" + required: + - attributes + - type + type: object + CreateFormDataAttributes: + description: The attributes for creating a form. + properties: + anonymous: + default: false + description: Whether the form accepts anonymous submissions. + example: false + type: boolean + data_definition: + $ref: "#/components/schemas/FormDataDefinition" + description: + description: The description of the form. + example: A form to collect user feedback. + type: string + idp_survey: + default: false + description: Whether the form is an IDP survey. + example: false + type: boolean + name: + description: The name of the form. + example: User Feedback Form + type: string + single_response: + default: false + description: Whether each user can only submit one response. + example: false + type: boolean + ui_definition: + $ref: "#/components/schemas/FormUiDefinition" + required: + - data_definition + - name + - ui_definition + type: object + CreateFormRequest: + description: A request to create a form. + properties: + data: + $ref: "#/components/schemas/CreateFormData" + required: + - data + type: object CreateIncidentNotificationRuleRequest: description: Create request for a notification rule. properties: @@ -23283,6 +23599,8 @@ components: $ref: "#/components/schemas/Enabled" name: $ref: "#/components/schemas/RuleName" + routing: + $ref: "#/components/schemas/NotificationRuleRouting" selectors: $ref: "#/components/schemas/Selectors" targets: @@ -24632,6 +24950,189 @@ components: type: $ref: "#/components/schemas/CSMAgentsType" type: object + CsmAgentlessHostAttributes: + description: Attributes of an agentless host. + properties: + account_id: + description: The ID of the cloud account that the host belongs to. + example: "123456789012" + type: string + cloud_provider: + $ref: "#/components/schemas/CsmCloudProvider" + has_posture_management: + description: Whether CSM Misconfigurations is enabled for this host. `true` if enabled; `false` if disabled. + example: true + type: boolean + has_vulnerability_scanning: + description: Whether CSM Vulnerabilities is enabled for this host. `true` if enabled; `false` if disabled. + example: true + type: boolean + resource_type: + $ref: "#/components/schemas/CsmAgentlessHostResourceType" + required: + - account_id + - cloud_provider + - resource_type + - has_posture_management + - has_vulnerability_scanning + type: object + CsmAgentlessHostData: + description: A single agentless host resource. + properties: + attributes: + $ref: "#/components/schemas/CsmAgentlessHostAttributes" + id: + description: The resource identifier of the agentless host. + example: i-0123456789abcdef0 + type: string + type: + $ref: "#/components/schemas/CsmAgentlessHostType" + required: + - id + - type + - attributes + type: object + CsmAgentlessHostFacetAttributes: + description: Attributes of an agentless host facet. + properties: + bounded: + description: Whether the facet has a bounded set of allowed values. `true` indicates a fixed value set and `false` indicates free-form values. + example: true + type: boolean + bundled: + description: Whether the facet is bundled as part of the default facet set. `true` indicates bundled and `false` indicates custom. + example: true + type: boolean + bundledAndUsed: + description: Whether the facet is both bundled and actively used. `true` indicates in use; `false` indicates unused. + example: true + type: boolean + defaultValues: + $ref: "#/components/schemas/CsmHostFacetDefaultValues" + description: + description: A human-readable description of what the facet represents. + example: The cloud provider of the resource + type: string + editable: + description: Whether the facet can be edited by users. `true` indicates editable; `false` indicates read-only. + example: false + type: boolean + facetType: + description: The UI display type for the facet, such as `list`. + example: list + type: string + groups: + $ref: "#/components/schemas/CsmHostFacetGroups" + name: + description: The display name of the facet. + example: Cloud Provider + type: string + path: + description: The field path used when filtering by this facet. + example: cloud_provider + type: string + source: + description: The data source that provides the facet values. + example: core + type: string + type: + description: The data type of the facet values. + example: string + type: string + values: + $ref: "#/components/schemas/CsmHostFacetValues" + required: + - name + - path + - description + - groups + - bounded + - bundled + - bundledAndUsed + - defaultValues + - editable + - facetType + - source + - type + - values + type: object + CsmAgentlessHostFacetData: + description: A single agentless host facet resource. + properties: + attributes: + $ref: "#/components/schemas/CsmAgentlessHostFacetAttributes" + id: + description: The identifier of the facet, corresponding to the field path. + example: cloud_provider + type: string + type: + $ref: "#/components/schemas/CsmAgentlessHostFacetType" + required: + - id + - type + - attributes + type: object + CsmAgentlessHostFacetItems: + description: The list of available facets for agentless hosts. + items: + $ref: "#/components/schemas/CsmAgentlessHostFacetData" + type: array + CsmAgentlessHostFacetType: + default: agentless_host_facet + description: The JSON:API type for agentless host facet resources. The value should always be `agentless_host_facet`. + enum: + - agentless_host_facet + example: agentless_host_facet + type: string + x-enum-varnames: + - AGENTLESS_HOST_FACET + CsmAgentlessHostFacetsResponse: + description: The response returned when listing facets for agentless hosts. + properties: + data: + $ref: "#/components/schemas/CsmAgentlessHostFacetItems" + required: + - data + type: object + CsmAgentlessHostItems: + description: The list of agentless hosts for the current page. + items: + $ref: "#/components/schemas/CsmAgentlessHostData" + type: array + CsmAgentlessHostResourceType: + description: The type of cloud resource for an agentless host. + enum: + - aws_ec2_instance + - azure_virtual_machine_instance + - gcp_compute_instance + - oci_instance + example: aws_ec2_instance + type: string + x-enum-varnames: + - AWS_EC2_INSTANCE + - AZURE_VIRTUAL_MACHINE_INSTANCE + - GCP_COMPUTE_INSTANCE + - OCI_INSTANCE + CsmAgentlessHostType: + default: agentless_host + description: The JSON:API type for agentless host resources. The value should always be `agentless_host`. + enum: + - agentless_host + example: agentless_host + type: string + x-enum-varnames: + - AGENTLESS_HOST + CsmAgentlessHostsResponse: + description: The response returned when listing agentless hosts. + properties: + data: + $ref: "#/components/schemas/CsmAgentlessHostItems" + meta: + $ref: "#/components/schemas/CsmSettingsMeta" + required: + - data + - meta + type: object CsmAgentsAttributes: description: "A CSM Agent returned by the API." properties: @@ -24750,6 +25251,20 @@ components: data: $ref: "#/components/schemas/CsmCloudAccountsCoverageAnalysisData" type: object + CsmCloudProvider: + description: The cloud provider of a host resource. + enum: + - aws + - gcp + - azure + - oci + example: aws + type: string + x-enum-varnames: + - AWS + - GCP + - AZURE + - OCI CsmCoverageAnalysis: description: CSM Coverage Analysis. properties: @@ -24774,6 +25289,103 @@ components: format: int64 type: integer type: object + CsmFacetInfoType: + default: facet_info + description: The JSON:API type for facet info resources. The value should always be `facet_info`. + enum: + - facet_info + example: facet_info + type: string + x-enum-varnames: + - FACET_INFO + CsmHostFacetDefaultValues: + description: The list of default filter values for the facet. + example: [] + items: + type: string + type: array + CsmHostFacetGroups: + description: The list of UI groups that this facet belongs to. + example: + - agentless + items: + type: string + type: array + CsmHostFacetInfoAttributes: + description: Attributes of a facet info response, containing the value distribution for the requested facet. + properties: + items: + $ref: "#/components/schemas/CsmHostFacetInfoItems" + required: + - items + type: object + CsmHostFacetInfoData: + description: The data wrapper for a facet info response. + properties: + attributes: + $ref: "#/components/schemas/CsmHostFacetInfoAttributes" + id: + description: The identifier of the facet. + example: cloud_provider + type: string + meta: + $ref: "#/components/schemas/CsmHostFacetInfoMeta" + type: + $ref: "#/components/schemas/CsmFacetInfoType" + required: + - id + - type + - attributes + - meta + type: object + CsmHostFacetInfoItem: + description: A single value and its occurrence count for a facet. + properties: + count: + description: The number of resources with this facet value. + example: 100 + format: int64 + type: integer + value: + description: The facet value. + example: aws + type: string + required: + - value + - count + type: object + CsmHostFacetInfoItems: + description: The list of facet value entries for the current page. + items: + $ref: "#/components/schemas/CsmHostFacetInfoItem" + type: array + CsmHostFacetInfoMeta: + description: Metadata for the facet info response. + properties: + total_count: + description: The total number of distinct values for this facet. + example: 4 + format: int64 + type: integer + required: + - total_count + type: object + CsmHostFacetInfoResponse: + description: The response returned when requesting value distribution for a specific facet. + properties: + data: + $ref: "#/components/schemas/CsmHostFacetInfoData" + required: + - data + type: object + CsmHostFacetValues: + description: The list of allowed filter values for bounded facets. Empty for unbounded facets. + example: + - aws + - gcp + items: + type: string + type: array CsmHostsAndContainersCoverageAnalysisAttributes: description: CSM Hosts and Containers Coverage Analysis attributes. properties: @@ -24846,6 +25458,235 @@ components: data: $ref: "#/components/schemas/CsmServerlessCoverageAnalysisData" type: object + CsmSettingsMeta: + description: Pagination metadata for a CSM settings list response. + properties: + page_index: + description: The current page index (zero-based). + example: 0 + format: int64 + type: integer + page_size: + description: The number of resources returned per page. + example: 10 + format: int64 + type: integer + total_filtered: + description: The total number of resources matching the filter criteria. + example: 100 + format: int64 + type: integer + required: + - total_filtered + - page_index + - page_size + type: object + CsmUnifiedHostAttributes: + description: Attributes of a unified host, combining data from agent and agentless sources. + properties: + account_id: + description: The ID of the cloud account that the host belongs to. Present only when the host was discovered through agentless scanning. + example: "123456789012" + nullable: true + type: string + agent_csm_vm_containers_enabled: + description: Whether CSM Vulnerabilities is enabled for containers through the Datadog Agent. `true` if enabled; `false` if disabled. + example: false + nullable: true + type: boolean + agent_csm_vm_hosts_enabled: + description: Whether CSM Vulnerabilities is enabled for hosts through the Datadog Agent. `true` if enabled; `false` if disabled. + example: true + nullable: true + type: boolean + agent_cws_enabled: + description: Whether CSM Threats is enabled for this host through the Datadog Agent. `true` if enabled; `false` if disabled. + example: false + nullable: true + type: boolean + agent_posture_management: + description: Whether CSM Misconfigurations is enabled for this host through the Datadog Agent. `true` if enabled; `false` if disabled. + example: true + nullable: true + type: boolean + agent_version: + description: The version of the Datadog Agent running on this host. + example: 7.50.0 + nullable: true + type: string + agentless_posture_management: + description: Whether CSM Misconfigurations is enabled for this host via agentless scanning. `true` if enabled; `false` if disabled. + example: false + nullable: true + type: boolean + agentless_vulnerability_scanning: + description: Whether CSM Vulnerabilities is enabled for this host via agentless scanning. `true` if enabled; `false` if disabled. + example: true + nullable: true + type: boolean + cloud_provider: + $ref: "#/components/schemas/CsmCloudProvider" + cluster_name: + description: The name of the Kubernetes cluster the host belongs to, if applicable. + example: my-cluster + nullable: true + type: string + datadog_agent_key: + description: The Datadog Agent key associated with this host. Present only for agent-sourced hosts. + example: key123 + nullable: true + type: string + env: + description: The list of environment tags associated with this host. + example: + - prod + items: + type: string + nullable: true + type: array + host_id: + description: The internal Datadog host identifier. Present only for agent-sourced hosts. + example: 12345678 + format: int64 + nullable: true + type: integer + install_method_tool: + description: The tool used to install the Datadog Agent on this host. + example: helm + nullable: true + type: string + os: + description: The operating system of the host. Present only for agent-sourced hosts. + example: linux + nullable: true + type: string + resource_type: + $ref: "#/components/schemas/CsmAgentlessHostResourceType" + source: + $ref: "#/components/schemas/CsmUnifiedHostSource" + required: + - source + type: object + CsmUnifiedHostData: + description: A single unified host resource, combining agent and agentless data. + properties: + attributes: + $ref: "#/components/schemas/CsmUnifiedHostAttributes" + id: + description: The resource identifier of the unified host. + example: i-0123456789abcdef0 + type: string + type: + $ref: "#/components/schemas/CsmUnifiedHostType" + required: + - id + - type + - attributes + type: object + CsmUnifiedHostFacetData: + description: A single unified host facet resource. + properties: + attributes: + $ref: "#/components/schemas/CsmAgentlessHostFacetAttributes" + id: + description: The identifier of the facet, corresponding to the field path. + example: cloud_provider + type: string + type: + $ref: "#/components/schemas/CsmUnifiedHostFacetType" + required: + - id + - type + - attributes + type: object + CsmUnifiedHostFacetItems: + description: The list of available facets for unified hosts. + items: + $ref: "#/components/schemas/CsmUnifiedHostFacetData" + type: array + CsmUnifiedHostFacetType: + default: unified_host_facet + description: The JSON:API type for unified host facet resources. The value should always be `unified_host_facet`. + enum: + - unified_host_facet + example: unified_host_facet + type: string + x-enum-varnames: + - UNIFIED_HOST_FACET + CsmUnifiedHostFacetsResponse: + description: The response returned when listing facets for unified hosts. + properties: + data: + $ref: "#/components/schemas/CsmUnifiedHostFacetItems" + required: + - data + type: object + CsmUnifiedHostItems: + description: The list of unified hosts for the current page. + items: + $ref: "#/components/schemas/CsmUnifiedHostData" + type: array + CsmUnifiedHostSource: + description: The source of a unified host entry, indicating whether it was discovered via agent, agentless scanning, or both. + enum: + - agent + - agentless + - both + example: agent + type: string + x-enum-varnames: + - AGENT + - AGENTLESS + - BOTH + CsmUnifiedHostType: + default: unified_host + description: The JSON:API type for unified host resources. The value should always be `unified_host`. + enum: + - unified_host + example: unified_host + type: string + x-enum-varnames: + - UNIFIED_HOST + CsmUnifiedHostsMeta: + description: Pagination metadata for a unified hosts list response. + properties: + page_index: + description: The current page index (zero-based). + example: 0 + format: int64 + type: integer + page_size: + description: The number of hosts returned per page. + example: 10 + format: int64 + type: integer + total_filtered: + description: The total number of hosts matching the filter criteria. + example: 100 + format: int64 + type: integer + total_pages: + description: The total number of pages available. + example: 10 + format: int64 + type: integer + required: + - total_filtered + - page_index + - page_size + - total_pages + type: object + CsmUnifiedHostsResponse: + description: The response returned when listing unified hosts. + properties: + data: + $ref: "#/components/schemas/CsmUnifiedHostItems" + meta: + $ref: "#/components/schemas/CsmUnifiedHostsMeta" + required: + - data + - meta + type: object CustomAttributeConfig: description: "A custom attribute configuration that defines an organization-specific metadata field on cases. Custom attributes are scoped to a case type and can hold text, URLs, numbers, or predefined select options." properties: @@ -27941,6 +28782,31 @@ components: - bucket_name - bucket_region type: object + DataObservabilityMonitorRunStatus: + description: The status of a data observability monitor run. + enum: + - pending + - ok + - warn + - alert + - error + example: pending + type: string + x-enum-varnames: + - PENDING + - OK + - WARN + - ALERT + - ERROR + DataObservabilityMonitorRunType: + default: monitor_run + description: The JSON:API resource type for a data observability monitor run. + enum: + - monitor_run + example: monitor_run + type: string + x-enum-varnames: + - MONITOR_RUN DataRelationshipsTeams: description: Associates teams with this schedule in a data structure. properties: @@ -28872,6 +29738,26 @@ components: required: - data type: object + DeleteFormData: + description: The data returned when a form is deleted. + properties: + id: + description: The ID of the deleted form. + example: 844dfd88-aa84-4db4-8979-e7bdbb9c1dc3 + format: uuid + type: string + type: + $ref: "#/components/schemas/FormType" + required: + - id + - type + type: object + DeleteFormResponse: + description: A response returned after deleting a form. + properties: + data: + $ref: "#/components/schemas/DeleteFormData" + type: object DeletedSuiteResponseData: description: Data object for a deleted Synthetic test suite. properties: @@ -30684,9 +31570,10 @@ components: additionalProperties: {} description: The set of attributes recorded for the entity at this revision. The keys depend on the kind of entity. example: + accounts: + - linked-account-123 display_name: Test User - emails: - - user@example.com + email: user@example.com principal_id: user@example.com type: object EntityData: @@ -35538,155 +36425,6 @@ components: format: int64 type: integer type: object - FleetClusterAttributes: - description: Attributes of a Kubernetes cluster in the fleet. - properties: - agent_versions: - description: Datadog Agent versions running in the cluster. - items: - description: A Datadog Agent version string. - type: string - type: array - api_key_names: - description: API key names used by agents in the cluster. - items: - description: An API key name. - type: string - type: array - api_key_uuids: - description: API key UUIDs used by agents in the cluster. - items: - description: An API key UUID. - type: string - type: array - cloud_providers: - description: Cloud providers hosting the cluster. - items: - description: A cloud provider name. - type: string - type: array - cluster_name: - description: The name of the Kubernetes cluster. - example: "production-us-east-1" - type: string - enabled_products: - description: Datadog products enabled in the cluster. - items: - description: A Datadog product name. - type: string - type: array - envs: - description: Environments associated with the cluster. - items: - description: An environment name. - type: string - type: array - first_seen_at: - description: Timestamp when the cluster was first seen. - format: int64 - type: integer - install_method_tool: - description: The tool used to install agents in the cluster. - example: "helm" - type: string - node_count: - description: Total number of nodes in the cluster. - example: 25 - format: int64 - type: integer - node_count_by_status: - $ref: "#/components/schemas/FleetClusterNodeCountByStatus" - operating_systems: - description: Operating systems of nodes in the cluster. - items: - description: An operating system name. - type: string - type: array - otel_collector_distributions: - description: OpenTelemetry collector distributions in the cluster. - items: - description: An OpenTelemetry collector distribution name. - type: string - type: array - otel_collector_versions: - description: OpenTelemetry collector versions in the cluster. - items: - description: An OpenTelemetry collector version string. - type: string - type: array - pod_count_by_state: - $ref: "#/components/schemas/FleetClusterPodCountByState" - services: - description: Services running in the cluster. - items: - description: A service name. - type: string - type: array - teams: - description: Teams associated with the cluster. - items: - description: A team name. - type: string - type: array - type: object - FleetClusterNodeCountByStatus: - additionalProperties: - format: int64 - type: integer - description: Node counts grouped by status. - type: object - FleetClusterPodCountByState: - additionalProperties: - format: int64 - type: integer - description: Pod counts grouped by state. - type: object - FleetClustersResponse: - description: Response containing a paginated list of fleet clusters. - properties: - data: - $ref: "#/components/schemas/FleetClustersResponseData" - meta: - $ref: "#/components/schemas/FleetClustersResponseMeta" - required: - - data - type: object - FleetClustersResponseData: - description: The response data containing status and clusters array. - properties: - attributes: - $ref: "#/components/schemas/FleetClustersResponseDataAttributes" - id: - description: Status identifier. - example: "done" - type: string - type: - description: Resource type. - example: "status" - type: string - required: - - id - - type - - attributes - type: object - FleetClustersResponseDataAttributes: - description: Attributes of the fleet clusters response containing the list of clusters. - properties: - clusters: - description: Array of clusters matching the query criteria. - items: - $ref: "#/components/schemas/FleetClusterAttributes" - type: array - type: object - FleetClustersResponseMeta: - description: Metadata for the list of clusters response. - properties: - total_filtered_count: - description: Total number of clusters matching the filter criteria across all pages. - example: 12 - format: int64 - type: integer - type: object FleetConfigurationFile: description: A configuration file for an integration. properties: @@ -36036,93 +36774,6 @@ components: example: "postgres" type: string type: object - FleetInstrumentedPodGroupAttributes: - description: Attributes of a group of instrumented pods targeted for SSI injection. - properties: - applied_target: - additionalProperties: {} - description: The SSI injection target configuration applied to the pod group. - type: object - applied_target_name: - description: The name of the applied SSI injection target. - example: "my-injection-target" - type: string - injected_tags: - description: Tags injected into the pods by the Admission Controller. - items: - description: An injected tag string. - type: string - type: array - kube_ownerref_kind: - description: The kind of the Kubernetes owner reference. - example: "Deployment" - type: string - kube_ownerref_name: - description: The name of the Kubernetes owner reference (deployment, statefulset, etc.). - example: "inventory-service" - type: string - lib_injection_annotations: - description: Library injection annotations on the pod group. - items: - description: A library injection annotation string. - type: string - type: array - namespace: - description: The Kubernetes namespace of the pod group. - example: "default" - type: string - pod_count: - description: Total number of pods in the group. - example: 3 - format: int64 - type: integer - pod_names: - description: Names of the individual pods in the group. - items: - description: A Kubernetes pod name. - type: string - type: array - tags: - additionalProperties: - type: string - description: Additional tags associated with the pod group. - type: object - type: object - FleetInstrumentedPodsResponse: - description: Response containing instrumented pods for a Kubernetes cluster. - properties: - data: - $ref: "#/components/schemas/FleetInstrumentedPodsResponseData" - required: - - data - type: object - FleetInstrumentedPodsResponseData: - description: The response data containing the cluster name and instrumented pod groups. - properties: - attributes: - $ref: "#/components/schemas/FleetInstrumentedPodsResponseDataAttributes" - id: - description: The cluster name identifier. - example: "production-us-east-1" - type: string - type: - description: Resource type. - example: "cluster_name" - type: string - required: - - id - - type - - attributes - type: object - FleetInstrumentedPodsResponseDataAttributes: - description: Attributes of the instrumented pods response containing the list of pod groups. - properties: - groups: - description: Array of instrumented pod groups in the cluster. - items: - $ref: "#/components/schemas/FleetInstrumentedPodGroupAttributes" - type: array - type: object FleetIntegrationDetails: description: Detailed information about a single integration. properties: @@ -36578,6 +37229,266 @@ components: - type - attributes type: object + FormData: + description: A form resource object. + properties: + attributes: + $ref: "#/components/schemas/FormDataAttributes" + id: + description: The ID of the form. + example: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + format: uuid + type: string + type: + $ref: "#/components/schemas/FormType" + required: + - id + - type + - attributes + type: object + FormDataAttributes: + description: The attributes of a form. + properties: + active: + description: Whether the form is currently active. + example: true + type: boolean + anonymous: + description: Whether the form accepts anonymous submissions. + example: false + type: boolean + created_at: + description: The time at which the form was created. + example: "2026-05-29T20:06:13.677353Z" + format: date-time + type: string + datastore_config: + $ref: "#/components/schemas/FormDatastoreConfigAttributes" + description: + description: The description of the form. + example: A form to collect user feedback. + type: string + end_date: + description: The date and time at which the form stops accepting responses. + example: + format: date-time + nullable: true + type: string + has_submitted: + description: Whether the current user has already submitted this form. Only present for forms with `single_response` set to `true`. + nullable: true + type: boolean + idp_survey: + description: Whether the form is an IDP survey. + example: false + type: boolean + modified_at: + description: The time at which the form was last modified. + example: "2026-05-29T20:06:13.677353Z" + format: date-time + type: string + name: + description: The name of the form. + example: User Feedback Form + type: string + org_id: + description: The ID of the organization that owns this form. + example: 2 + format: int64 + type: integer + publication: + $ref: "#/components/schemas/FormPublicationAttributes" + self_service: + description: Whether the form is available in the self-service catalog. + example: false + type: boolean + single_response: + description: Whether each user can only submit one response. + example: false + type: boolean + user_id: + description: The ID of the user who created this form. + example: 10001 + format: int64 + type: integer + user_uuid: + description: The UUID of the user who created this form. + example: 1fc709aa-be19-4539-a47d-52a30d78a978 + format: uuid + type: string + version: + $ref: "#/components/schemas/FormVersionAttributes" + required: + - active + - anonymous + - created_at + - datastore_config + - description + - idp_survey + - modified_at + - name + - org_id + - self_service + - single_response + - user_id + - user_uuid + type: object + FormDataDefinition: + additionalProperties: {} + description: A JSON Schema definition that describes the form's data fields. + properties: + description: + description: A description shown to form respondents. + example: Welcome to the Engineering Experience Survey. + type: string + properties: + additionalProperties: {} + description: A map of field names to their JSON Schema definitions. + type: object + required: + description: List of field names that must be answered. + items: + type: string + type: array + title: + description: The title of the form schema. + example: Developer Experience Survey + type: string + type: + $ref: "#/components/schemas/FormDataDefinitionType" + type: object + FormDataDefinitionType: + default: object + description: The root schema type. + enum: + - object + type: string + x-enum-varnames: + - OBJECT + FormDataList: + description: A list of form resource objects. + items: + $ref: "#/components/schemas/FormData" + type: array + FormDatastoreConfigAttributes: + description: The datastore configuration for a form. + properties: + datastore_id: + description: The ID of the datastore. + example: 5108ea24-dd83-4696-9caa-f069f73d0fad + format: uuid + type: string + primary_column_name: + description: The name of the primary column in the datastore. + example: id + type: string + primary_key_generation_strategy: + description: The strategy used to generate primary keys in the datastore. + example: none + type: string + required: + - datastore_id + - primary_column_name + - primary_key_generation_strategy + type: object + FormPublicationAttributes: + description: The attributes of a form publication. + properties: + created_at: + description: The time at which the publication was created. + example: "2026-05-29T20:06:13.677353Z" + format: date-time + type: string + form_id: + description: The ID of the form. + example: afc67600-0511-43b1-9b18-578fb4979bd3 + format: uuid + type: string + form_version: + description: The version number that was published. + example: 1 + format: int64 + type: integer + id: + description: The ID of the form publication. + example: "42" + type: string + modified_at: + description: The time at which the publication was last modified. + example: "2026-05-29T20:06:13.677353Z" + format: date-time + type: string + org_id: + description: The ID of the organization that owns this publication. + example: 2 + format: int64 + type: integer + publish_seq: + description: The sequential publication number for this form. + example: 1 + format: int64 + type: integer + user_id: + description: The ID of the user who created this publication. + example: 10001 + format: int64 + type: integer + user_uuid: + description: The UUID of the user who created this publication. + example: 1fc709aa-be19-4539-a47d-52a30d78a978 + format: uuid + type: string + required: + - created_at + - form_id + - form_version + - modified_at + - org_id + - publish_seq + - user_id + - user_uuid + type: object + FormPublicationData: + description: A form publication resource object. + properties: + attributes: + $ref: "#/components/schemas/FormPublicationAttributes" + id: + description: The ID of the form publication. + example: "42" + type: string + type: + $ref: "#/components/schemas/FormPublicationType" + required: + - id + - type + - attributes + type: object + FormPublicationResponse: + description: A response containing a single form publication. + properties: + data: + $ref: "#/components/schemas/FormPublicationData" + required: + - data + type: object + FormPublicationType: + default: form_publications + description: The resource type for a form publication. + enum: + - form_publications + example: form_publications + type: string + x-enum-varnames: + - FORM_PUBLICATIONS + FormResponse: + description: A response containing a single form. + properties: + data: + $ref: "#/components/schemas/FormData" + required: + - data + type: object FormTrigger: description: "Trigger a workflow from a Form." properties: @@ -36596,6 +37507,180 @@ components: required: - formTrigger type: object + FormType: + default: forms + description: The resource type for a form. + enum: + - forms + example: forms + type: string + x-enum-varnames: + - FORMS + FormUiDefinition: + additionalProperties: {} + description: UI configuration for rendering form fields, including widget overrides, field ordering, and themes. + properties: + "ui:order": + description: The order in which form fields are displayed. + items: + type: string + type: array + "ui:theme": + $ref: "#/components/schemas/FormUiDefinitionUiTheme" + type: object + FormUiDefinitionUiTheme: + description: The visual theme applied to the form. + properties: + primaryColor: + $ref: "#/components/schemas/FormUiDefinitionUiThemePrimaryColor" + type: object + FormUiDefinitionUiThemePrimaryColor: + description: The primary color of the form theme. + enum: + - gray + - red + - orange + - yellow + - green + - light-blue + - dark-blue + - magenta + - indigo + type: string + x-enum-varnames: + - GRAY + - RED + - ORANGE + - YELLOW + - GREEN + - LIGHT_BLUE + - DARK_BLUE + - MAGENTA + - INDIGO + FormUpdateAttributes: + description: The fields to update on a form. At least one field must be provided. + properties: + datastore_config: + $ref: "#/components/schemas/FormDatastoreConfigAttributes" + description: + description: The updated description of the form. + example: An updated description. + type: string + name: + description: The updated name of the form. + example: Updated Form Name + type: string + type: object + FormVersionAttributes: + description: The attributes of a form version. + properties: + created_at: + description: The time at which the version was created. + example: "2026-05-29T20:06:14.895921Z" + format: date-time + type: string + data_definition: + $ref: "#/components/schemas/FormDataDefinition" + definition_signature: + description: The signature of the version definition. + example: '{"signature":"b7f312957a80cea2c8c9950532b205a90a3f8a7ebb7e52fc25437a25d903d545","version":1}' + type: string + etag: + description: The ETag for optimistic concurrency control. + example: b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d + nullable: true + type: string + id: + description: The ID of the form version. + example: "126" + type: string + modified_at: + description: The time at which the version was last modified. + example: "2026-05-29T20:06:14.949163Z" + format: date-time + type: string + state: + $ref: "#/components/schemas/FormVersionState" + ui_definition: + $ref: "#/components/schemas/FormUiDefinition" + user_id: + description: The ID of the user who created this version. + example: 10001 + format: int64 + type: integer + user_uuid: + description: The UUID of the user who created this version. + example: 1fc709aa-be19-4539-a47d-52a30d78a978 + format: uuid + type: string + version: + description: The sequential version number. + example: 1 + format: int64 + type: integer + required: + - created_at + - data_definition + - definition_signature + - etag + - modified_at + - state + - ui_definition + - user_id + - user_uuid + - version + type: object + FormVersionData: + description: A form version resource object. + properties: + attributes: + $ref: "#/components/schemas/FormVersionAttributes" + id: + description: The ID of the form version. + example: "126" + type: string + type: + $ref: "#/components/schemas/FormVersionType" + required: + - id + - type + - attributes + type: object + FormVersionResponse: + description: A response containing a single form version. + properties: + data: + $ref: "#/components/schemas/FormVersionData" + required: + - data + type: object + FormVersionState: + description: The state of a form version. + enum: + - draft + - frozen + example: frozen + type: string + x-enum-varnames: + - DRAFT + - FROZEN + FormVersionType: + default: form_versions + description: The resource type for a form version. + enum: + - form_versions + example: form_versions + type: string + x-enum-varnames: + - FORM_VERSIONS + FormsResponse: + description: A response containing a list of forms. + properties: + data: + $ref: "#/components/schemas/FormDataList" + required: + - data + type: object FormulaLimit: description: |- Message for specifying limits to the number of values returned by a query. @@ -38032,6 +39117,42 @@ components: meta: $ref: "#/components/schemas/DataDeletionResponseMeta" type: object + GetDataObservabilityMonitorRunStatusResponse: + description: The response for getting the status of a data observability monitor run. + properties: + data: + $ref: "#/components/schemas/GetDataObservabilityMonitorRunStatusResponseData" + required: + - data + type: object + GetDataObservabilityMonitorRunStatusResponseAttributes: + description: The attributes of a data observability monitor run status response. + properties: + error_message: + description: Error message describing why the monitor run failed. Only present when status is error. + example: "run completed but produced no metric data" + type: string + status: + $ref: "#/components/schemas/DataObservabilityMonitorRunStatus" + required: + - status + type: object + GetDataObservabilityMonitorRunStatusResponseData: + description: The data object for a data observability monitor run status response. + properties: + attributes: + $ref: "#/components/schemas/GetDataObservabilityMonitorRunStatusResponseAttributes" + id: + description: The unique identifier of the monitor run. + example: "abc123def456" + type: string + type: + $ref: "#/components/schemas/DataObservabilityMonitorRunType" + required: + - id + - type + - attributes + type: object GetDeviceAttributes: description: The device attributes properties: @@ -38900,6 +40021,64 @@ components: type: string x-enum-varnames: - INCIDENTS_GLOBAL_SETTINGS + GlobalOrg: + description: Organization information for a global organization association. + properties: + name: + description: The name of the organization. + example: Example Org + type: string + public_id: + description: The public identifier of the organization. + example: abcdef12345 + nullable: true + type: string + subdomain: + description: The subdomain used to access the organization, if configured. + example: example + nullable: true + type: string + uuid: + description: The UUID of the organization. + example: "13d10a96-6ff2-49be-be7b-4f56ebb13335" + format: uuid + type: string + required: + - uuid + - name + type: object + GlobalOrgAttributes: + description: Attributes of an organization associated with the authenticated user. + properties: + org: + $ref: "#/components/schemas/GlobalOrg" + redirect_url: + description: The login URL used to switch into the organization, if available. + example: "https://app.datadoghq.com/account/login/password?dd_oid=13d10a96-6ff2-49be-be7b-4f56ebb13335&login_hint=user%40example.com" + nullable: true + type: string + source_region: + description: The source region of the organization. + example: us1.prod.dog + type: string + user: + $ref: "#/components/schemas/GlobalOrgUser" + required: + - user + - org + - source_region + type: object + GlobalOrgData: + description: An organization associated with the authenticated user. + properties: + attributes: + $ref: "#/components/schemas/GlobalOrgAttributes" + type: + $ref: "#/components/schemas/GlobalOrgType" + required: + - type + - attributes + type: object GlobalOrgIdentifier: description: A unique identifier for an organization including its site. properties: @@ -38916,6 +40095,99 @@ components: - org_uuid - org_site type: object + GlobalOrgType: + description: The resource type for global user organizations. + enum: [global_user_orgs] + example: global_user_orgs + type: string + x-enum-varnames: + - GLOBAL_USER_ORGS + GlobalOrgUser: + description: User information for a global organization association. + properties: + handle: + description: The handle of the user. + example: user@example.com + type: string + uuid: + description: The UUID of the user. + example: "cfab5cf9-5472-48ea-a79c-a64045f4f745" + format: uuid + type: string + required: + - uuid + - handle + type: object + GlobalOrgsLinks: + description: Pagination links. + properties: + next: + description: Link to the next page. + example: "https://app.datadoghq.com/api/v2/global_orgs?user_handle=user@example.com&page[limit]=100&page[cursor]=next-page" + nullable: true + type: string + prev: + description: Link to the previous page. + nullable: true + type: string + self: + description: Link to the current page. + example: "https://app.datadoghq.com/api/v2/global_orgs?user_handle=user@example.com&page[limit]=100" + type: string + type: object + GlobalOrgsMeta: + description: Response metadata object. + properties: + page: + $ref: "#/components/schemas/GlobalOrgsMetaPage" + type: object + GlobalOrgsMetaPage: + description: Paging attributes. + properties: + cursor: + description: The cursor used to get the current results, if any. + example: "" + type: string + limit: + description: Number of results returned. + example: 100 + format: int32 + maximum: 1000 + type: integer + next_cursor: + description: The cursor used to get the next results, if any. + example: next-page + nullable: true + type: string + prev_cursor: + description: The cursor used to get the previous results, if any. + nullable: true + type: string + type: + $ref: "#/components/schemas/GlobalOrgsMetaPageType" + type: object + GlobalOrgsMetaPageType: + description: Type of global orgs pagination. + enum: [cursor] + example: cursor + type: string + x-enum-varnames: + - CURSOR + GlobalOrgsResponse: + description: Response containing organizations across regions for the authenticated user. + properties: + data: + description: Organizations across regions for the authenticated user. + items: + $ref: "#/components/schemas/GlobalOrgData" + type: array + links: + $ref: "#/components/schemas/GlobalOrgsLinks" + meta: + $ref: "#/components/schemas/GlobalOrgsMeta" + required: + - data + type: object GlobalVariableData: description: Synthetics global variable data. Wrapper around the global variable object. properties: @@ -39063,6 +40335,84 @@ components: required: - attributes type: object + GoogleChatDelegatedUserAttributes: + description: Google Chat delegated user attributes. + properties: + display_name: + description: The delegated user's display name. + example: "fake-display-name" + type: string + email: + description: The delegated user's email address. + example: "user@example.com" + type: string + features: + description: The list of features enabled for the delegated user. + items: + type: string + type: array + type: object + GoogleChatDelegatedUserData: + description: Google Chat delegated user data from a response. + properties: + attributes: + $ref: "#/components/schemas/GoogleChatDelegatedUserAttributes" + id: + description: The ID of the delegated user. + example: "2b3c4d5e-6f78-9012-bcde-f23456789012" + maxLength: 100 + minLength: 1 + type: string + type: + $ref: "#/components/schemas/GoogleChatDelegatedUserType" + type: object + GoogleChatDelegatedUserResponse: + description: Response containing a Google Chat delegated user. + properties: + data: + $ref: "#/components/schemas/GoogleChatDelegatedUserData" + required: + - data + type: object + GoogleChatDelegatedUserType: + default: google-chat-delegated-user + description: Google Chat delegated user resource type. + enum: + - google-chat-delegated-user + example: google-chat-delegated-user + type: string + x-enum-varnames: + - GOOGLE_CHAT_DELEGATED_USER_TYPE + GoogleChatOrganizationAttributes: + description: Google Chat organization attributes. + properties: + domain_id: + description: The Google Chat organization domain ID. + example: "fake-domain-id" + maxLength: 255 + type: string + domain_name: + description: The Google Chat organization domain name. + example: "example.com" + maxLength: 255 + type: string + type: object + GoogleChatOrganizationData: + description: Google Chat organization data from a response. + properties: + attributes: + $ref: "#/components/schemas/GoogleChatOrganizationAttributes" + id: + description: The ID of the Google Chat organization binding. + example: "5ce87709-a12f-4086-fcc8-147045b73a19" + maxLength: 100 + minLength: 1 + type: string + relationships: + $ref: "#/components/schemas/GoogleChatOrganizationRelationships" + type: + $ref: "#/components/schemas/GoogleChatOrganizationType" + type: object GoogleChatOrganizationHandleResponse: description: Organization handle for monitor notifications to a Google Chat space within a Google organization. properties: @@ -39125,6 +40475,184 @@ components: required: - data type: object + GoogleChatOrganizationRelationships: + description: Google Chat organization relationships. + properties: + delegated_user: + $ref: "#/components/schemas/GoogleChatOrganizationRelationshipsDelegatedUser" + type: object + GoogleChatOrganizationRelationshipsDelegatedUser: + description: The delegated user relationship. + properties: + data: + $ref: "#/components/schemas/GoogleChatOrganizationRelationshipsDelegatedUserData" + type: object + GoogleChatOrganizationRelationshipsDelegatedUserData: + description: Delegated user relationship data. + properties: + id: + description: The ID of the delegated user. + example: "2b3c4d5e-6f78-9012-bcde-f23456789012" + type: string + type: + $ref: "#/components/schemas/GoogleChatDelegatedUserType" + type: object + GoogleChatOrganizationResponse: + description: Response containing a Google Chat organization binding. + properties: + data: + $ref: "#/components/schemas/GoogleChatOrganizationData" + required: + - data + type: object + GoogleChatOrganizationType: + default: google-chat-organization + description: Google Chat organization resource type. + enum: + - google-chat-organization + example: google-chat-organization + type: string + x-enum-varnames: + - GOOGLE_CHAT_ORGANIZATION_TYPE + GoogleChatOrganizationsResponse: + description: Response containing a list of Google Chat organization bindings. + properties: + data: + description: An array of Google Chat organization bindings. + items: + $ref: "#/components/schemas/GoogleChatOrganizationData" + type: array + required: + - data + type: object + GoogleChatTargetAudienceAttributes: + description: Google Chat target audience attributes. + properties: + audience_id: + description: The audience ID. + example: "fake-audience-id-1" + maxLength: 255 + type: string + audience_name: + description: The audience name. + example: "fake audience name 1" + maxLength: 255 + type: string + required: + - audience_name + - audience_id + type: object + GoogleChatTargetAudienceCreateRequest: + description: Create target audience request. + properties: + data: + $ref: "#/components/schemas/GoogleChatTargetAudienceCreateRequestData" + required: + - data + type: object + GoogleChatTargetAudienceCreateRequestAttributes: + description: Attributes for creating a Google Chat target audience. + properties: + audience_id: + description: The audience ID. + example: "fake-audience-id-1" + maxLength: 255 + type: string + audience_name: + description: The audience name. + example: "fake audience name 1" + maxLength: 255 + type: string + required: + - audience_name + - audience_id + type: object + GoogleChatTargetAudienceCreateRequestData: + description: Data for a create target audience request. + properties: + attributes: + $ref: "#/components/schemas/GoogleChatTargetAudienceCreateRequestAttributes" + type: + $ref: "#/components/schemas/GoogleChatTargetAudienceType" + required: + - type + - attributes + type: object + GoogleChatTargetAudienceData: + description: Google Chat target audience data from a response. + properties: + attributes: + $ref: "#/components/schemas/GoogleChatTargetAudienceAttributes" + id: + description: The ID of the target audience. + example: "1f3e5ce6-944a-4075-97ae-105b5920b5cb" + maxLength: 100 + minLength: 1 + type: string + type: + $ref: "#/components/schemas/GoogleChatTargetAudienceType" + type: object + GoogleChatTargetAudienceResponse: + description: Response containing a Google Chat target audience. + properties: + data: + $ref: "#/components/schemas/GoogleChatTargetAudienceData" + required: + - data + type: object + GoogleChatTargetAudienceType: + default: google-chat-target-audience + description: Google Chat target audience resource type. + enum: + - google-chat-target-audience + example: google-chat-target-audience + type: string + x-enum-varnames: + - GOOGLE_CHAT_TARGET_AUDIENCE_TYPE + GoogleChatTargetAudienceUpdateRequest: + description: Update target audience request. + properties: + data: + $ref: "#/components/schemas/GoogleChatTargetAudienceUpdateRequestData" + required: + - data + type: object + GoogleChatTargetAudienceUpdateRequestAttributes: + description: Attributes for updating a Google Chat target audience. + properties: + audience_id: + description: The audience ID. + example: "fake-audience-id-1" + maxLength: 255 + type: string + audience_name: + description: The audience name. + example: "fake audience name 1" + maxLength: 255 + type: string + type: object + GoogleChatTargetAudienceUpdateRequestData: + description: Data for an update target audience request. + properties: + attributes: + $ref: "#/components/schemas/GoogleChatTargetAudienceUpdateRequestAttributes" + type: + $ref: "#/components/schemas/GoogleChatTargetAudienceType" + required: + - type + - attributes + type: object + GoogleChatTargetAudiencesResponse: + description: Response containing a list of Google Chat target audiences. + properties: + data: + description: An array of Google Chat target audiences. + items: + $ref: "#/components/schemas/GoogleChatTargetAudienceData" + type: array + required: + - data + type: object GoogleChatUpdateOrganizationHandleRequest: description: Update organization handle request. properties: @@ -39771,6 +41299,7 @@ components: - 4 - 5 example: 4 + format: int64 type: integer x-enum-varnames: - UNSPECIFIED @@ -42207,161 +43736,6 @@ components: x-enum-varnames: - CREATED_ASCENDING - CREATED_DESCENDING - IncidentServiceCreateAttributes: - description: The incident service's attributes for a create request. - properties: - name: - description: Name of the incident service. - example: "an example service name" - type: string - required: - - name - type: object - IncidentServiceCreateData: - description: Incident Service payload for create requests. - properties: - attributes: - $ref: "#/components/schemas/IncidentServiceCreateAttributes" - relationships: - $ref: "#/components/schemas/IncidentServiceRelationships" - type: - $ref: "#/components/schemas/IncidentServiceType" - required: - - type - type: object - IncidentServiceCreateRequest: - description: Create request with an incident service payload. - properties: - data: - $ref: "#/components/schemas/IncidentServiceCreateData" - required: - - data - type: object - IncidentServiceIncludedItems: - description: An object related to an incident service which is present in the included payload. - oneOf: - - $ref: "#/components/schemas/User" - IncidentServiceRelationships: - description: The incident service's relationships. - properties: - created_by: - $ref: "#/components/schemas/RelationshipToUser" - last_modified_by: - $ref: "#/components/schemas/RelationshipToUser" - readOnly: true - type: object - IncidentServiceResponse: - description: Response with an incident service payload. - properties: - data: - $ref: "#/components/schemas/IncidentServiceResponseData" - included: - description: Included objects from relationships. - items: - $ref: "#/components/schemas/IncidentServiceIncludedItems" - readOnly: true - type: array - required: - - data - type: object - IncidentServiceResponseAttributes: - description: The incident service's attributes from a response. - properties: - created: - description: Timestamp of when the incident service was created. - format: date-time - readOnly: true - type: string - modified: - description: Timestamp of when the incident service was modified. - format: date-time - readOnly: true - type: string - name: - description: Name of the incident service. - example: "service name" - type: string - type: object - IncidentServiceResponseData: - description: Incident Service data from responses. - properties: - attributes: - $ref: "#/components/schemas/IncidentServiceResponseAttributes" - id: - description: The incident service's ID. - example: "00000000-0000-0000-0000-000000000000" - type: string - relationships: - $ref: "#/components/schemas/IncidentServiceRelationships" - type: - $ref: "#/components/schemas/IncidentServiceType" - required: - - id - - type - type: object - IncidentServiceType: - default: services - description: Incident service resource type. - enum: - - services - example: services - type: string - x-enum-varnames: - - SERVICES - IncidentServiceUpdateAttributes: - description: The incident service's attributes for an update request. - properties: - name: - description: Name of the incident service. - example: "an example service name" - type: string - required: - - name - type: object - IncidentServiceUpdateData: - description: Incident Service payload for update requests. - properties: - attributes: - $ref: "#/components/schemas/IncidentServiceUpdateAttributes" - id: - description: The incident service's ID. - example: "00000000-0000-0000-0000-000000000000" - type: string - relationships: - $ref: "#/components/schemas/IncidentServiceRelationships" - type: - $ref: "#/components/schemas/IncidentServiceType" - required: - - type - type: object - IncidentServiceUpdateRequest: - description: Update request with an incident service payload. - properties: - data: - $ref: "#/components/schemas/IncidentServiceUpdateData" - required: - - data - type: object - IncidentServicesResponse: - description: Response with a list of incident service payloads. - properties: - data: - description: An array of incident services. - example: [{"id": "00000000-0000-0000-0000-000000000000", "type": "services"}] - items: - $ref: "#/components/schemas/IncidentServiceResponseData" - type: array - included: - description: Included related resources which the user requested. - items: - $ref: "#/components/schemas/IncidentServiceIncludedItems" - readOnly: true - type: array - meta: - $ref: "#/components/schemas/IncidentResponseMeta" - required: - - data - type: "object" IncidentSeverity: description: The incident severity. enum: @@ -46082,7 +47456,7 @@ components: attributes: $ref: "#/components/schemas/LLMObsAnnotatedInteractionsDataAttributesResponse" id: - description: The queue ID. + description: The annotation queue ID. example: "00000000-0000-0000-0000-000000000001" type: string type: @@ -46108,6 +47482,35 @@ components: type: string x-enum-varnames: - ANNOTATED_INTERACTIONS + LLMObsAnnotationAssessment: + description: Assessment result for a label value. + enum: + - pass + - fail + example: "pass" + type: string + x-enum-varnames: + - PASS + - FAIL + LLMObsAnnotationError: + description: A partial error for a single annotation that could not be processed. + properties: + annotation_id: + description: ID of the annotation that failed, if applicable. + example: "00000000-0000-0000-0000-000000000000" + type: string + error: + description: Error message. + example: "interaction not found" + type: string + interaction_id: + description: ID of the interaction that failed. + example: "00000000-0000-0000-0000-000000000001" + type: string + required: + - interaction_id + - error + type: object LLMObsAnnotationItem: description: A single annotation on an interaction. properties: @@ -46130,9 +47533,10 @@ components: type: string label_values: additionalProperties: {} - description: The label values for this annotation. + description: Label values for this annotation. example: - quality: "good" + - label_schema_id: "abc-123" + value: "good" type: object modified_at: description: Timestamp when the annotation was last modified. @@ -46152,6 +47556,122 @@ components: - modified_by - modified_at type: object + LLMObsAnnotationItemResponse: + description: A single annotation on an interaction, as returned by the API. + properties: + created_at: + description: Timestamp when the annotation was created. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + created_by: + description: Identifier of the user who created the annotation. + example: "00000000-0000-0000-0000-000000000002" + type: string + id: + description: Unique identifier of the annotation. + example: "annotation-789" + type: string + interaction_id: + description: Identifier of the interaction this annotation belongs to. + example: "interaction-456" + type: string + label_values: + description: |- + Label values for this annotation. Each entry references a label schema by ID + and provides the corresponding value. + example: + - label_schema_id: "abc-123" + value: "good" + items: + $ref: "#/components/schemas/LLMObsAnnotationLabelValueResponse" + type: array + modified_at: + description: Timestamp when the annotation was last modified. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + modified_by: + description: Identifier of the user who last modified the annotation. + example: "00000000-0000-0000-0000-000000000002" + type: string + required: + - id + - interaction_id + - label_values + - created_by + - created_at + - modified_by + - modified_at + type: object + LLMObsAnnotationLabelValue: + description: |- + A single label value entry in an annotation. + The `value` type must match the label schema type: + - `score`: a number within the schema `min`/`max` range (integer if `is_integer` is `true`). + - `categorical`: a string that is one of the schema `values`. + - `boolean`: `true` or `false`. + - `text`: any non-empty string. + properties: + assessment: + $ref: "#/components/schemas/LLMObsAnnotationAssessment" + label_schema_id: + description: ID of the label schema this value corresponds to. + example: "abc-123" + type: string + reasoning: + description: Free text reasoning for this label value. + example: "The response was accurate and well-structured." + type: string + value: + $ref: "#/components/schemas/LLMObsAnnotationLabelValueValue" + required: + - label_schema_id + - value + type: object + LLMObsAnnotationLabelValueResponse: + description: |- + A single label value entry in an annotation response. + In addition to the submitted fields, the server populates `type` and + `name_when_saved` to mirror the schema state at the time the annotation + was created — these help clients display values correctly when the schema + has since changed. + properties: + assessment: + $ref: "#/components/schemas/LLMObsAnnotationAssessment" + label_schema_id: + description: ID of the label schema this value corresponds to. + example: "abc-123" + type: string + name_when_saved: + description: Name of the label schema at the time the annotation was created. + example: "quality" + type: string + reasoning: + description: Free text reasoning for this label value. + example: "The response was accurate and well-structured." + type: string + type: + $ref: "#/components/schemas/LLMObsLabelSchemaType" + value: + $ref: "#/components/schemas/LLMObsAnnotationLabelValueValue" + required: + - label_schema_id + - value + type: object + LLMObsAnnotationLabelValueStringArray: + description: For categorical-type labels allowing multiple selections. + items: + type: string + type: array + LLMObsAnnotationLabelValueValue: + description: The value for this label. Must comply with the label schema type constraints. + example: 0.0 + oneOf: + - $ref: "#/components/schemas/AnyValueNumber" + - $ref: "#/components/schemas/AnyValueString" + - $ref: "#/components/schemas/LLMObsAnnotationLabelValueStringArray" + - $ref: "#/components/schemas/AnyValueBoolean" LLMObsAnnotationQueueDataAttributesRequest: description: Attributes for creating an LLM Observability annotation queue. properties: @@ -46479,6 +47999,85 @@ components: required: - label_schemas type: object + LLMObsAnnotationsDataAttributesRequest: + description: Attributes for creating or updating annotations. + properties: + annotations: + description: List of annotations to create or update. Must contain at least one item. + items: + $ref: "#/components/schemas/LLMObsUpsertAnnotationItem" + minItems: 1 + type: array + required: + - annotations + type: object + LLMObsAnnotationsDataAttributesResponse: + description: Attributes of the annotations response. + properties: + annotations: + description: Successfully created or updated annotations. + items: + $ref: "#/components/schemas/LLMObsAnnotationItemResponse" + type: array + errors: + description: Partial errors for annotations that could not be processed. + items: + $ref: "#/components/schemas/LLMObsAnnotationError" + type: array + required: + - annotations + type: object + LLMObsAnnotationsDataRequest: + description: Data object for creating or updating annotations. + properties: + attributes: + $ref: "#/components/schemas/LLMObsAnnotationsDataAttributesRequest" + type: + $ref: "#/components/schemas/LLMObsAnnotationsType" + required: + - type + - attributes + type: object + LLMObsAnnotationsDataResponse: + description: Data object for the annotations response. + properties: + attributes: + $ref: "#/components/schemas/LLMObsAnnotationsDataAttributesResponse" + id: + description: The annotation queue ID. + example: "00000000-0000-0000-0000-000000000001" + type: string + type: + $ref: "#/components/schemas/LLMObsAnnotationsType" + required: + - id + - type + - attributes + type: object + LLMObsAnnotationsRequest: + description: Request to create or update annotations on interactions in an annotation queue. + properties: + data: + $ref: "#/components/schemas/LLMObsAnnotationsDataRequest" + required: + - data + type: object + LLMObsAnnotationsResponse: + description: Response containing the created or updated annotations. + properties: + data: + $ref: "#/components/schemas/LLMObsAnnotationsDataResponse" + required: + - data + type: object + LLMObsAnnotationsType: + description: Resource type for LLM Observability annotations. + enum: + - annotations + example: annotations + type: string + x-enum-varnames: + - ANNOTATIONS LLMObsAnthropicEffort: description: The effort level for Anthropic inference. enum: @@ -47919,6 +49518,21 @@ components: required: - data type: object + LLMObsDeleteAnnotationError: + description: A partial error for a single annotation that could not be deleted. + properties: + annotation_id: + description: ID of the annotation that could not be deleted. + example: "00000000-0000-0000-0000-000000000000" + type: string + error: + description: Error message. + example: "annotation not found" + type: string + required: + - annotation_id + - error + type: object LLMObsDeleteAnnotationQueueInteractionsDataAttributesRequest: description: Attributes for deleting interactions from an annotation queue. properties: @@ -47954,6 +49568,85 @@ components: required: - data type: object + LLMObsDeleteAnnotationsDataAttributesRequest: + description: Attributes for deleting annotations. + properties: + annotation_ids: + description: IDs of the annotations to delete. Must contain at least one item. + example: + - "00000000-0000-0000-0000-000000000000" + - "00000000-0000-0000-0000-000000000001" + items: + type: string + minItems: 1 + type: array + required: + - annotation_ids + type: object + LLMObsDeleteAnnotationsDataAttributesResponse: + description: Attributes of the annotation deletion response. + properties: + annotation_ids: + description: IDs of the successfully deleted annotations. + example: + - "00000000-0000-0000-0000-000000000000" + items: + type: string + type: array + errors: + description: Errors for annotations that could not be deleted. + items: + $ref: "#/components/schemas/LLMObsDeleteAnnotationError" + type: array + required: + - annotation_ids + - errors + type: object + LLMObsDeleteAnnotationsDataRequest: + description: Data object for deleting annotations. + properties: + attributes: + $ref: "#/components/schemas/LLMObsDeleteAnnotationsDataAttributesRequest" + type: + $ref: "#/components/schemas/LLMObsAnnotationsType" + required: + - type + - attributes + type: object + LLMObsDeleteAnnotationsDataResponse: + description: Data object for the annotation deletion response. + properties: + attributes: + $ref: "#/components/schemas/LLMObsDeleteAnnotationsDataAttributesResponse" + id: + description: The annotation queue ID. + example: "00000000-0000-0000-0000-000000000001" + type: string + type: + $ref: "#/components/schemas/LLMObsAnnotationsType" + required: + - id + - type + - attributes + type: object + LLMObsDeleteAnnotationsRequest: + description: Request to delete annotations from an annotation queue. + properties: + data: + $ref: "#/components/schemas/LLMObsDeleteAnnotationsDataRequest" + required: + - data + type: object + LLMObsDeleteAnnotationsResponse: + description: |- + Response for a batch annotation deletion. Partial errors are listed in the + response if any annotations could not be deleted. + properties: + data: + $ref: "#/components/schemas/LLMObsDeleteAnnotationsDataResponse" + required: + - data + type: object LLMObsDeleteDatasetRecordsDataAttributesRequest: description: Attributes for deleting records from an LLM Observability dataset. properties: @@ -50035,6 +51728,1017 @@ components: - AUTO - CONCISE - DETAILED + LLMObsPatternsActivityProgress: + description: Progress information for a single step of a patterns run. + properties: + name: + description: Name of the step. + example: generate_topics + type: string + started_at: + description: Timestamp when the step started. Null if the step has not started. + example: "2024-01-15T10:30:00Z" + format: date-time + nullable: true + type: string + status: + description: Status of the step. + example: completed + type: string + required: + - name + - status + type: object + LLMObsPatternsClusteredPoint: + description: A single data point grouped into a topic. + properties: + event_id: + description: Identifier of the source event. + example: "AAAAAYabc123" + type: string + id: + description: Unique identifier of the clustered point. + example: "9b0c1d2e-3f40-5a61-b728-c9d0e1f2a3b4" + type: string + input: + description: Input text of the source span. + example: "How do I get a refund?" + type: string + is_included: + description: Whether the point is included in the patterns dataset. + example: false + type: boolean + is_suggested: + description: Whether the point is suggested for inclusion in the patterns dataset. + example: true + type: boolean + session_id: + description: Identifier of the source session. + example: "session-7c3f5a1b" + type: string + span_id: + description: Identifier of the source span. + example: "1234567890123456789" + type: string + topic_id: + description: Identifier of the topic the point belongs to. + example: "5c1fae90-2b6d-4e3a-9f12-7a0c4d8e6b21" + type: string + required: + - id + - event_id + - topic_id + - span_id + - session_id + - input + - is_suggested + - is_included + type: object + LLMObsPatternsClusteredPointRef: + description: |- + A clustered point attached inline to a topic. The metric fields are populated + only when the request includes `include_metrics=true`. + properties: + duration: + description: Duration of the source span in nanoseconds. Included only when metrics are requested. + example: 1500000 + format: double + type: number + estimated_total_cost: + description: Estimated total cost of the source span. Included only when metrics are requested. + example: 0.0021 + format: double + type: number + evaluation: + additionalProperties: {} + description: |- + Evaluation results for the source span keyed by evaluation name. Included + only when metrics are requested. + type: object + input_tokens: + description: Number of input tokens of the source span. Included only when metrics are requested. + example: 128 + format: double + type: number + output_tokens: + description: Number of output tokens of the source span. Included only when metrics are requested. + example: 64 + format: double + type: number + span_id: + description: Identifier of the source span. + example: "1234567890123456789" + type: string + status: + description: Status of the source span. Included only when metrics are requested. + example: ok + type: string + total_tokens: + description: Total number of tokens of the source span. Included only when metrics are requested. + example: 192 + format: double + type: number + required: + - span_id + type: object + LLMObsPatternsClusteredPointRefsList: + description: List of clustered points attached to a topic. + items: + $ref: "#/components/schemas/LLMObsPatternsClusteredPointRef" + type: array + LLMObsPatternsClusteredPointsList: + description: List of clustered points. + items: + $ref: "#/components/schemas/LLMObsPatternsClusteredPoint" + type: array + LLMObsPatternsClusteredPointsResponse: + description: Response containing the clustered points of an LLM Observability topic. + properties: + data: + $ref: "#/components/schemas/LLMObsPatternsClusteredPointsResponseData" + required: + - data + type: object + LLMObsPatternsClusteredPointsResponseAttributes: + description: Attributes of an LLM Observability patterns clustered points response. + properties: + next_page_token: + description: Pagination token for the next page of points. Null if there are no more pages. + example: "eyJvZmZzZXQiOjUwfQ==" + nullable: true + type: string + points: + $ref: "#/components/schemas/LLMObsPatternsClusteredPointsList" + topic_id: + description: Identifier of the topic the points belong to. + example: "5c1fae90-2b6d-4e3a-9f12-7a0c4d8e6b21" + type: string + required: + - topic_id + - next_page_token + - points + type: object + LLMObsPatternsClusteredPointsResponseData: + description: Data object of an LLM Observability patterns clustered points response. + properties: + attributes: + $ref: "#/components/schemas/LLMObsPatternsClusteredPointsResponseAttributes" + id: + description: Identifier of the topic the points belong to. + example: "5c1fae90-2b6d-4e3a-9f12-7a0c4d8e6b21" + type: string + type: + $ref: "#/components/schemas/LLMObsPatternsClusteredPointsType" + required: + - id + - type + - attributes + type: object + LLMObsPatternsClusteredPointsType: + description: Resource type of an LLM Observability patterns clustered points response. + enum: + - clustered_points_response + example: clustered_points_response + type: string + x-enum-varnames: + - CLUSTERED_POINTS_RESPONSE + LLMObsPatternsConfigAttributes: + description: Attributes of an LLM Observability patterns configuration. + properties: + account_id: + description: Integration account ID for a bring-your-own-model configuration. + example: "1000000001" + nullable: true + type: string + created_at: + description: Timestamp when the configuration was created. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + evp_query: + description: Query that selects the spans the patterns run analyzes. + example: "@ml_app:support-bot" + type: string + hierarchy_depth: + description: Depth of the topic hierarchy to generate. + example: 2 + format: int32 + maximum: 2147483647 + type: integer + integration_provider: + description: Integration provider for a bring-your-own-model configuration. + example: openai + nullable: true + type: string + model_name: + description: Model name for a bring-your-own-model configuration. + example: gpt-4o + nullable: true + type: string + name: + description: Name of the configuration. + example: "Support chatbot topics" + type: string + num_records: + description: Maximum number of records to process for the run. + example: 1000 + format: int32 + maximum: 2147483647 + type: integer + sampling_ratio: + description: Fraction of matching spans to sample for the run. + example: 0.1 + format: double + type: number + scope: + description: Scope of the configuration. + example: "" + type: string + template: + description: Template used to guide topic generation. + example: "" + nullable: true + type: string + updated_at: + description: Timestamp when the configuration was last updated. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + required: + - name + - evp_query + - sampling_ratio + - num_records + - hierarchy_depth + - scope + - created_at + - updated_at + type: object + LLMObsPatternsConfigItem: + description: A single LLM Observability patterns configuration in a list response. + properties: + account_id: + description: Integration account ID for a bring-your-own-model configuration. + example: "1000000001" + nullable: true + type: string + created_at: + description: Timestamp when the configuration was created. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + evp_query: + description: Query that selects the spans the patterns run analyzes. + example: "@ml_app:support-bot" + type: string + hierarchy_depth: + description: Depth of the topic hierarchy to generate. + example: 2 + format: int32 + maximum: 2147483647 + type: integer + id: + description: Unique identifier of the configuration. + example: "a7c8d9e0-1234-5678-9abc-def012345678" + type: string + integration_provider: + description: Integration provider for a bring-your-own-model configuration. + example: openai + nullable: true + type: string + model_name: + description: Model name for a bring-your-own-model configuration. + example: gpt-4o + nullable: true + type: string + name: + description: Name of the configuration. + example: "Support chatbot topics" + type: string + num_records: + description: Maximum number of records to process for the run. + example: 1000 + format: int32 + maximum: 2147483647 + type: integer + sampling_ratio: + description: Fraction of matching spans to sample for the run. + example: 0.1 + format: double + type: number + scope: + description: Scope of the configuration. + example: "" + type: string + template: + description: Template used to guide topic generation. + example: "" + nullable: true + type: string + updated_at: + description: Timestamp when the configuration was last updated. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + required: + - id + - name + - evp_query + - sampling_ratio + - num_records + - hierarchy_depth + - scope + - created_at + - updated_at + type: object + LLMObsPatternsConfigItemsList: + description: List of patterns configurations. + items: + $ref: "#/components/schemas/LLMObsPatternsConfigItem" + type: array + LLMObsPatternsConfigResponse: + description: Response containing a single LLM Observability patterns configuration. + properties: + data: + $ref: "#/components/schemas/LLMObsPatternsConfigResponseData" + required: + - data + type: object + LLMObsPatternsConfigResponseData: + description: Data object of an LLM Observability patterns configuration. + properties: + attributes: + $ref: "#/components/schemas/LLMObsPatternsConfigAttributes" + id: + description: Unique identifier of the configuration. + example: "a7c8d9e0-1234-5678-9abc-def012345678" + type: string + type: + $ref: "#/components/schemas/LLMObsPatternsConfigType" + required: + - id + - type + - attributes + type: object + LLMObsPatternsConfigSnapshot: + description: Snapshot of the configuration used for a patterns run. + properties: + account_id: + description: Integration account ID used for a bring-your-own-model run. + example: "1000000001" + type: string + evp_query: + description: Query that selected the spans for the run. + example: "@ml_app:support-bot" + type: string + hierarchy_depth: + description: Depth of the topic hierarchy generated. + example: 2 + format: int32 + maximum: 2147483647 + type: integer + integration_provider: + description: Integration provider used for a bring-your-own-model run. + example: openai + type: string + model_name: + description: Model name used for a bring-your-own-model run. + example: gpt-4o + type: string + num_records: + description: Maximum number of records processed for the run. + example: 1000 + format: int32 + maximum: 2147483647 + type: integer + sampling_ratio: + description: Fraction of matching spans sampled for the run. + example: 0.1 + format: double + type: number + type: object + LLMObsPatternsConfigType: + description: Resource type of an LLM Observability patterns configuration. + enum: + - topic_discovery_configs + example: topic_discovery_configs + type: string + x-enum-varnames: + - TOPIC_DISCOVERY_CONFIGS + LLMObsPatternsConfigUpsertRequest: + description: Request to create or update an LLM Observability patterns configuration. + properties: + data: + $ref: "#/components/schemas/LLMObsPatternsConfigUpsertRequestData" + required: + - data + type: object + LLMObsPatternsConfigUpsertRequestAttributes: + description: Attributes for creating or updating an LLM Observability patterns configuration. + properties: + account_id: + description: Integration account ID for a bring-your-own-model configuration. + example: "1000000001" + type: string + config_id: + description: The ID of an existing configuration to update. If omitted, a new configuration is created. + example: "a7c8d9e0-1234-5678-9abc-def012345678" + type: string + evp_query: + description: Query that selects the spans the patterns run analyzes. + example: "@ml_app:support-bot" + type: string + hierarchy_depth: + description: Depth of the topic hierarchy to generate. + example: 2 + format: int32 + maximum: 2147483647 + type: integer + integration_provider: + description: Integration provider for a bring-your-own-model configuration. + example: openai + type: string + model_name: + description: Model name for a bring-your-own-model configuration. + example: gpt-4o + type: string + name: + description: Name of the configuration. + example: "Support chatbot topics" + type: string + num_records: + description: Maximum number of records to process for the run. + example: 1000 + format: int32 + maximum: 2147483647 + type: integer + sampling_ratio: + description: Fraction of matching spans to sample for the run. + example: 0.1 + format: double + type: number + scope: + description: Scope of the configuration. + example: "" + type: string + template: + description: Template used to guide topic generation. + example: "" + type: string + required: + - name + - evp_query + - sampling_ratio + - num_records + - hierarchy_depth + type: object + LLMObsPatternsConfigUpsertRequestData: + description: Data object for creating or updating an LLM Observability patterns configuration. + properties: + attributes: + $ref: "#/components/schemas/LLMObsPatternsConfigUpsertRequestAttributes" + type: + $ref: "#/components/schemas/LLMObsPatternsConfigType" + required: + - type + - attributes + type: object + LLMObsPatternsConfigsListType: + description: Resource type of a list of LLM Observability patterns configurations. + enum: + - list_topic_discovery_configs_response + example: list_topic_discovery_configs_response + type: string + x-enum-varnames: + - LIST_TOPIC_DISCOVERY_CONFIGS_RESPONSE + LLMObsPatternsConfigsResponse: + description: Response containing a list of LLM Observability patterns configurations. + properties: + data: + $ref: "#/components/schemas/LLMObsPatternsConfigsResponseData" + required: + - data + type: object + LLMObsPatternsConfigsResponseAttributes: + description: Attributes of a list of LLM Observability patterns configurations. + properties: + configs: + $ref: "#/components/schemas/LLMObsPatternsConfigItemsList" + required: + - configs + type: object + LLMObsPatternsConfigsResponseData: + description: Data object of a list of LLM Observability patterns configurations. + properties: + attributes: + $ref: "#/components/schemas/LLMObsPatternsConfigsResponseAttributes" + id: + description: Identifier of the list response. + example: "1000000001" + type: string + type: + $ref: "#/components/schemas/LLMObsPatternsConfigsListType" + required: + - id + - type + - attributes + type: object + LLMObsPatternsProgressList: + description: List of step-by-step progress entries for a patterns run. + items: + $ref: "#/components/schemas/LLMObsPatternsActivityProgress" + type: array + LLMObsPatternsRequestType: + description: Resource type for triggering an LLM Observability patterns run. + enum: + - topic_discovery + example: topic_discovery + type: string + x-enum-varnames: + - TOPIC_DISCOVERY + LLMObsPatternsRunStatusResponse: + description: Response containing the status of an LLM Observability patterns run. + properties: + data: + $ref: "#/components/schemas/LLMObsPatternsRunStatusResponseData" + required: + - data + type: object + LLMObsPatternsRunStatusResponseAttributes: + description: Attributes of an LLM Observability patterns run status. + properties: + created_at: + description: Timestamp when the run was created. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + progress: + $ref: "#/components/schemas/LLMObsPatternsProgressList" + status: + description: Overall status of the run. + example: running + type: string + step: + description: The current step of the run. + example: generate_topics + type: string + required: + - created_at + - status + - step + - progress + type: object + LLMObsPatternsRunStatusResponseData: + description: Data object of an LLM Observability patterns run status response. + properties: + attributes: + $ref: "#/components/schemas/LLMObsPatternsRunStatusResponseAttributes" + id: + description: The ID of the patterns run. + example: "3fd6b5e0-8910-4b1c-a7d0-5b84de329012" + type: string + type: + $ref: "#/components/schemas/LLMObsPatternsRunStatusType" + required: + - id + - type + - attributes + type: object + LLMObsPatternsRunStatusType: + description: Resource type of an LLM Observability patterns run status. + enum: + - topic_discovery_run_status + example: topic_discovery_run_status + type: string + x-enum-varnames: + - TOPIC_DISCOVERY_RUN_STATUS + LLMObsPatternsRunSummary: + description: Summary of an LLM Observability patterns run. + properties: + completed_at: + description: Timestamp when the run completed. Null if the run has not completed. + example: "2024-01-15T10:45:00Z" + format: date-time + nullable: true + type: string + config_snapshot: + $ref: "#/components/schemas/LLMObsPatternsConfigSnapshot" + created_at: + description: Timestamp when the run was created. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + id: + description: Unique identifier of the run. + example: "3fd6b5e0-8910-4b1c-a7d0-5b84de329012" + type: string + status: + description: Status of the run. + example: completed + type: string + required: + - id + - status + - created_at + type: object + LLMObsPatternsRunsList: + description: List of patterns runs. + items: + $ref: "#/components/schemas/LLMObsPatternsRunSummary" + type: array + LLMObsPatternsRunsListType: + description: Resource type of a list of LLM Observability patterns runs. + enum: + - list_topic_discovery_runs_response + example: list_topic_discovery_runs_response + type: string + x-enum-varnames: + - LIST_TOPIC_DISCOVERY_RUNS_RESPONSE + LLMObsPatternsRunsResponse: + description: Response containing the completed runs of an LLM Observability patterns configuration. + properties: + data: + $ref: "#/components/schemas/LLMObsPatternsRunsResponseData" + required: + - data + type: object + LLMObsPatternsRunsResponseAttributes: + description: Attributes of an LLM Observability patterns runs response. + properties: + runs: + $ref: "#/components/schemas/LLMObsPatternsRunsList" + required: + - runs + type: object + LLMObsPatternsRunsResponseData: + description: Data object of an LLM Observability patterns runs response. + properties: + attributes: + $ref: "#/components/schemas/LLMObsPatternsRunsResponseAttributes" + id: + description: Identifier of the configuration the runs belong to. + example: "a7c8d9e0-1234-5678-9abc-def012345678" + type: string + type: + $ref: "#/components/schemas/LLMObsPatternsRunsListType" + required: + - id + - type + - attributes + type: object + LLMObsPatternsTopic: + description: A topic discovered by an LLM Observability patterns run. + properties: + created_at: + description: Timestamp when the topic was created. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + description: + description: Description of the topic. + example: "Questions about invoices, charges, and refunds." + type: string + first_seen_at: + description: Timestamp when the topic was first seen. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + hierarchy_level: + description: Level of the topic in the hierarchy. Level 0 is a leaf topic. + example: 0 + format: int64 + type: integer + id: + description: Unique identifier of the topic. + example: "5c1fae90-2b6d-4e3a-9f12-7a0c4d8e6b21" + type: string + is_validated: + description: Whether the topic has been validated. + example: true + type: boolean + name: + description: Name of the topic. + example: "Billing questions" + type: string + parent_topic_id: + description: Identifier of the parent topic. Empty for top-level topics. + example: "" + type: string + point_count: + description: Number of data points assigned to the topic. + example: 125 + format: int64 + type: integer + run_id: + description: Identifier of the run that produced the topic. + example: "3fd6b5e0-8910-4b1c-a7d0-5b84de329012" + type: string + required: + - id + - run_id + - parent_topic_id + - hierarchy_level + - name + - description + - is_validated + - created_at + - point_count + - first_seen_at + type: object + LLMObsPatternsTopicWithClusteredPoints: + description: |- + A topic discovered by an LLM Observability patterns run, including the + clustered points attached to leaf topics. + properties: + cluster_points: + $ref: "#/components/schemas/LLMObsPatternsClusteredPointRefsList" + created_at: + description: Timestamp when the topic was created. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + description: + description: Description of the topic. + example: "Questions about invoices, charges, and refunds." + type: string + first_seen_at: + description: Timestamp when the topic was first seen. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + hierarchy_level: + description: Level of the topic in the hierarchy. Level 0 is a leaf topic. + example: 0 + format: int64 + type: integer + id: + description: Unique identifier of the topic. + example: "5c1fae90-2b6d-4e3a-9f12-7a0c4d8e6b21" + type: string + is_validated: + description: Whether the topic has been validated. + example: true + type: boolean + name: + description: Name of the topic. + example: "Billing questions" + type: string + parent_topic_id: + description: Identifier of the parent topic. Empty for top-level topics. + example: "" + type: string + point_count: + description: Number of data points assigned to the topic. + example: 125 + format: int64 + type: integer + run_id: + description: Identifier of the run that produced the topic. + example: "3fd6b5e0-8910-4b1c-a7d0-5b84de329012" + type: string + required: + - id + - run_id + - parent_topic_id + - hierarchy_level + - name + - description + - is_validated + - created_at + - point_count + - first_seen_at + type: object + LLMObsPatternsTopicsList: + description: List of discovered topics. + items: + $ref: "#/components/schemas/LLMObsPatternsTopic" + type: array + LLMObsPatternsTopicsResponse: + description: Response containing the topics discovered by an LLM Observability patterns run. + properties: + data: + $ref: "#/components/schemas/LLMObsPatternsTopicsResponseData" + required: + - data + type: object + LLMObsPatternsTopicsResponseAttributes: + description: Attributes of an LLM Observability patterns topics response. + properties: + completed_at: + description: Timestamp when the run completed. Null if the run has not completed. + example: "2024-01-15T10:45:00Z" + format: date-time + nullable: true + type: string + config_id: + description: Identifier of the configuration that produced the run. + example: "a7c8d9e0-1234-5678-9abc-def012345678" + type: string + config_snapshot: + $ref: "#/components/schemas/LLMObsPatternsConfigSnapshot" + created_at: + description: Timestamp when the run was created. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + previous_run_id: + description: Identifier of the run that completed immediately before this one. Empty if none. + example: "" + type: string + run_id: + description: Identifier of the run that produced the topics. + example: "3fd6b5e0-8910-4b1c-a7d0-5b84de329012" + type: string + topics: + $ref: "#/components/schemas/LLMObsPatternsTopicsList" + required: + - run_id + - config_id + - previous_run_id + - created_at + - topics + type: object + LLMObsPatternsTopicsResponseData: + description: Data object of an LLM Observability patterns topics response. + properties: + attributes: + $ref: "#/components/schemas/LLMObsPatternsTopicsResponseAttributes" + id: + description: Identifier of the run the topics belong to. + example: "3fd6b5e0-8910-4b1c-a7d0-5b84de329012" + type: string + type: + $ref: "#/components/schemas/LLMObsPatternsTopicsType" + required: + - id + - type + - attributes + type: object + LLMObsPatternsTopicsType: + description: Resource type of an LLM Observability patterns topics response. + enum: + - get_topics_response + example: get_topics_response + type: string + x-enum-varnames: + - GET_TOPICS_RESPONSE + LLMObsPatternsTopicsWithClusteredPointsList: + description: List of discovered topics with their clustered points. + items: + $ref: "#/components/schemas/LLMObsPatternsTopicWithClusteredPoints" + type: array + LLMObsPatternsTopicsWithClusteredPointsResponse: + description: |- + Response containing the topics, and the clustered points of their leaf topics, + discovered by an LLM Observability patterns run. + properties: + data: + $ref: "#/components/schemas/LLMObsPatternsTopicsWithClusteredPointsResponseData" + required: + - data + type: object + LLMObsPatternsTopicsWithClusteredPointsResponseAttributes: + description: Attributes of an LLM Observability patterns topics-with-clustered-points response. + properties: + completed_at: + description: Timestamp when the run completed. Null if the run has not completed. + example: "2024-01-15T10:45:00Z" + format: date-time + nullable: true + type: string + config_id: + description: Identifier of the configuration that produced the run. + example: "a7c8d9e0-1234-5678-9abc-def012345678" + type: string + config_snapshot: + $ref: "#/components/schemas/LLMObsPatternsConfigSnapshot" + created_at: + description: Timestamp when the run was created. + example: "2024-01-15T10:30:00Z" + format: date-time + type: string + previous_run_id: + description: Identifier of the run that completed immediately before this one. Empty if none. + example: "" + type: string + run_id: + description: Identifier of the run that produced the topics. + example: "3fd6b5e0-8910-4b1c-a7d0-5b84de329012" + type: string + topics: + $ref: "#/components/schemas/LLMObsPatternsTopicsWithClusteredPointsList" + required: + - run_id + - config_id + - previous_run_id + - created_at + - topics + type: object + LLMObsPatternsTopicsWithClusteredPointsResponseData: + description: Data object of an LLM Observability patterns topics-with-clustered-points response. + properties: + attributes: + $ref: "#/components/schemas/LLMObsPatternsTopicsWithClusteredPointsResponseAttributes" + id: + description: Identifier of the run the topics belong to. + example: "3fd6b5e0-8910-4b1c-a7d0-5b84de329012" + type: string + type: + $ref: "#/components/schemas/LLMObsPatternsTopicsWithClusteredPointsType" + required: + - id + - type + - attributes + type: object + LLMObsPatternsTopicsWithClusteredPointsType: + description: Resource type of an LLM Observability patterns topics-with-clustered-points response. + enum: + - get_topics_with_cluster_points_response + example: get_topics_with_cluster_points_response + type: string + x-enum-varnames: + - GET_TOPICS_WITH_CLUSTER_POINTS_RESPONSE + LLMObsPatternsTriggerRequest: + description: Request to trigger an LLM Observability patterns run. + properties: + data: + $ref: "#/components/schemas/LLMObsPatternsTriggerRequestData" + required: + - data + type: object + LLMObsPatternsTriggerRequestAttributes: + description: Attributes for triggering an LLM Observability patterns run. + properties: + config_id: + description: The ID of the patterns configuration to run. + example: "a7c8d9e0-1234-5678-9abc-def012345678" + type: string + required: + - config_id + type: object + LLMObsPatternsTriggerRequestData: + description: Data object for triggering an LLM Observability patterns run. + properties: + attributes: + $ref: "#/components/schemas/LLMObsPatternsTriggerRequestAttributes" + type: + $ref: "#/components/schemas/LLMObsPatternsRequestType" + required: + - type + - attributes + type: object + LLMObsPatternsTriggerResponse: + description: Response after triggering an LLM Observability patterns run. + properties: + data: + $ref: "#/components/schemas/LLMObsPatternsTriggerResponseData" + required: + - data + type: object + LLMObsPatternsTriggerResponseAttributes: + description: Attributes of an LLM Observability patterns trigger response. + properties: + config_id: + description: The ID of the patterns configuration that was run. + example: "a7c8d9e0-1234-5678-9abc-def012345678" + type: string + run_id: + description: The ID of the patterns run that was started. + example: "3fd6b5e0-8910-4b1c-a7d0-5b84de329012" + type: string + status: + description: Status of the patterns run. + example: started + type: string + required: + - run_id + - config_id + - status + type: object + LLMObsPatternsTriggerResponseData: + description: Data object of an LLM Observability patterns trigger response. + properties: + attributes: + $ref: "#/components/schemas/LLMObsPatternsTriggerResponseAttributes" + id: + description: The ID of the patterns configuration that was run. + example: "a7c8d9e0-1234-5678-9abc-def012345678" + type: string + type: + $ref: "#/components/schemas/LLMObsPatternsTriggerResponseType" + required: + - id + - type + - attributes + type: object + LLMObsPatternsTriggerResponseType: + description: Resource type of an LLM Observability patterns trigger response. + enum: + - topic_discovery_run + example: topic_discovery_run + type: string + x-enum-varnames: + - TOPIC_DISCOVERY_RUN LLMObsProjectDataAttributesRequest: description: Attributes for creating an LLM Observability project. properties: @@ -50662,6 +53366,32 @@ components: - TRACE - EXPERIMENT_TRACE - SESSION + LLMObsUpsertAnnotationItem: + description: |- + A single annotation to create or update. The annotation is matched by + `interaction_id` and the requesting user's identity. + properties: + interaction_id: + description: ID of the interaction to annotate. + example: "00000000-0000-0000-0000-000000000001" + type: string + label_values: + description: |- + Label values for this annotation. Each entry references a label schema by ID + and provides the corresponding value validated against the schema type constraints. + example: + - label_schema_id: "abc-123" + value: "good" + - label_schema_id: "ef56gh78" + value: "positive" + items: + $ref: "#/components/schemas/LLMObsAnnotationLabelValue" + minItems: 1 + type: array + required: + - interaction_id + - label_values + type: object LLMObsVertexAIMetadata: description: Vertex AI-specific metadata for an integration account or inference request. properties: @@ -50709,6 +53439,16 @@ components: - PHP - KOTLIN - SWIFT + LatestVersionMatchPolicy: + description: The policy for matching the latest form version during an upsert operation. + enum: + - none + - if_etag_match + example: none + type: string + x-enum-varnames: + - NONE + - IF_ETAG_MATCH LaunchDarklyAPIKey: description: The definition of the `LaunchDarklyAPIKey` object. properties: @@ -52047,6 +54787,23 @@ components: meta: $ref: "#/components/schemas/ServiceAccessTokenResponseMeta" type: object + ListSharedDashboardsResponse: + description: Response containing shared dashboards for a dashboard. + properties: + data: + description: Shared dashboards for the dashboard. + items: + $ref: "#/components/schemas/SharedDashboardResponse" + type: array + included: + description: Users and dashboards related to the shared dashboards. + items: + $ref: "#/components/schemas/SharedDashboardIncluded" + type: array + required: + - data + - included + type: object ListSourcemapsResponse: description: Response containing a paginated list of source maps. properties: @@ -53830,6 +56587,40 @@ components: type: string x-enum-varnames: - MANAGED_ORGS + MaxSessionDurationType: + description: Data type of a maximum session duration update. + enum: [max_session_duration] + example: max_session_duration + type: string + x-enum-varnames: + - MAX_SESSION_DURATION + MaxSessionDurationUpdateAttributes: + description: Attributes for the maximum session duration update request. + properties: + max_session_duration: + description: The maximum session duration, in seconds. + example: 604800 + format: int64 + minimum: 1 + type: integer + required: [max_session_duration] + type: object + MaxSessionDurationUpdateData: + description: The data object for a maximum session duration update request. + properties: + attributes: + $ref: "#/components/schemas/MaxSessionDurationUpdateAttributes" + type: + $ref: "#/components/schemas/MaxSessionDurationType" + required: [type, attributes] + type: object + MaxSessionDurationUpdateRequest: + description: A request to update the maximum session duration for an organization. + properties: + data: + $ref: "#/components/schemas/MaxSessionDurationUpdateData" + required: [data] + type: object McpScanRequest: description: The top-level request object for submitting an MCP SCA dependency scan. properties: @@ -57511,6 +60302,191 @@ components: - type - attributes type: object + NetworkHealthInsight: + description: A single network health insight describing a service-to-service connectivity issue. + properties: + attributes: + $ref: "#/components/schemas/NetworkHealthInsightAttributes" + id: + description: Unique identifier for this network health insight. + example: example-insight-id + type: string + type: + $ref: "#/components/schemas/NetworkHealthInsightsType" + required: + - type + - id + - attributes + type: object + NetworkHealthInsightAttributes: + description: Detailed attributes of a network health insight. + properties: + account_id: + description: AWS account identifier where the certificate is located. Only set for `tls-cert` insights. + example: "123456789012" + type: string + certificate_id: + description: ARN or identifier of the certificate. Only set for `tls-cert` insights. + example: "arn:aws:acm:us-east-1:123456789012:certificate/abcd1234-a123-456b-a123-12345678901f" + type: string + certificate_lifetime_percent: + description: |- + Percentage of the certificate's validity period that has elapsed, ranging from 0 to 100. + Only set for `tls-cert` insights. + example: 96.7 + format: double + type: number + client_region: + description: AWS region where the client is located. Only set for `tls-cert` insights. + example: us-west-2 + type: string + client_service: + description: |- + Name of the service making the request (DNS query or TLS-secured connection). + Set to `N/A` when the client service cannot be determined. + example: network-logger + type: string + days_until_expiration: + description: |- + Number of days remaining until the certificate expires. Negative values indicate the + certificate has already expired. Only set for `tls-cert` insights. + example: 3 + format: int64 + type: integer + dns_query: + description: Domain name that was being resolved when the DNS failure occurred. Only set for `dns` insights. + example: kafka-broker.internal.domain.com + type: string + dns_server: + description: DNS server that received the failing query. Only set for `dns` insights. + example: cluster-dns + type: string + domain_name: + description: Domain name covered by the certificate. Only set for `tls-cert` insights. + example: api.example.com + type: string + failure_magnitude: + description: |- + Count of failed events observed during the query window. Only set for `dns`, `tcp`, + and `security-group` insights. + example: 150 + format: int64 + minimum: 0 + type: integer + failure_rate: + description: |- + Percentage of requests that failed during the query window, ranging from 0 to 100. + Only set for `dns`, `tcp`, and `security-group` insights. + example: 91 + format: double + maximum: 100 + minimum: 0 + type: number + failure_type: + $ref: "#/components/schemas/NetworkHealthInsightFailureType" + loadbalancer_id: + description: ARN of the load balancer using the certificate. Only set for `tls-cert` insights. + example: "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/my-lb/50dc6c495c0c9188" + type: string + server_region: + description: AWS region where the server or load balancer is located. Only set for `tls-cert` insights. + example: us-east-1 + type: string + server_service: + description: Name of the target service the client was trying to reach. + example: kafka + type: string + total_requests: + description: |- + Total number of requests observed during the query window. Provides context for + `failure_magnitude` and `failure_rate`. Only set for `dns`, `tcp`, and `security-group` insights. + example: 1200 + format: int64 + minimum: 0 + type: integer + traffic_volume: + $ref: "#/components/schemas/NetworkHealthInsightTrafficVolume" + type: + $ref: "#/components/schemas/NetworkHealthInsightCategory" + type: object + NetworkHealthInsightCategory: + description: |- + Category of network health insight. Indicates whether the insight relates to a DNS issue (`dns`), + a TCP issue (`tcp`), a TLS certificate issue (`tls-cert`), or a security group denial (`security-group`). + enum: + - dns + - tcp + - tls-cert + - security-group + example: dns + type: string + x-enum-varnames: + - DNS + - TCP + - TLS_CERT + - SECURITY_GROUP + NetworkHealthInsightFailureType: + description: |- + Specific failure type within the insight category. For DNS insights: `timeout`, `nxdomain`, + `servfail`, or `general_failure`. For TLS certificate insights: `expired` or `expiring_soon`. + For security group insights: `denied`. + enum: + - timeout + - nxdomain + - servfail + - general_failure + - expired + - expiring_soon + - denied + example: nxdomain + type: string + x-enum-varnames: + - TIMEOUT + - NXDOMAIN + - SERVFAIL + - GENERAL_FAILURE + - EXPIRED + - EXPIRING_SOON + - DENIED + NetworkHealthInsightTrafficVolume: + description: Network traffic volume metrics between the client and server services during the query window. + properties: + bytes_read: + description: Total bytes read from the server to the client during the query window. + example: 1800000 + format: int64 + type: integer + bytes_written: + description: Total bytes written from the client to the server during the query window. + example: 2500000 + format: int64 + type: integer + total_traffic: + description: Sum of bytes written and bytes read across the query window. + example: 4300000 + format: int64 + type: integer + type: object + NetworkHealthInsightsResponse: + description: Response containing a list of network health insights for the organization. + properties: + data: + description: Array of network health insights returned for the query window. + items: + $ref: "#/components/schemas/NetworkHealthInsight" + type: array + required: + - data + type: object + NetworkHealthInsightsType: + default: network-health-insights + description: The resource type for network health insights. Always `network-health-insights`. + enum: + - network-health-insights + example: network-health-insights + type: string + x-enum-varnames: + - NETWORK_HEALTH_INSIGHTS NodeType: additionalProperties: {} description: A tree-sitter node type definition for a given language, describing the node's structure, subtypes, and fields. @@ -57809,6 +60785,76 @@ components: - targets - version type: object + NotificationRulePreviewNotificationStatus: + description: The notification status for the given rule type. `SUCCESS` means a matching event was found and the notification was sent successfully. `DEFAULT` means no matching event was found and a default placeholder notification was sent instead. `ERROR` means an error occurred while sending the notification. + enum: + - SUCCESS + - DEFAULT + - ERROR + example: SUCCESS + type: string + x-enum-varnames: + - SUCCESS + - DEFAULT + - ERROR + NotificationRulePreviewResponse: + description: Response from the notification preview request. + properties: + data: + $ref: "#/components/schemas/NotificationRulePreviewResponseData" + required: + - data + type: object + NotificationRulePreviewResponseAttributes: + description: Attributes of the notification preview response. + properties: + preview_results: + $ref: "#/components/schemas/NotificationRulePreviewResults" + required: + - preview_results + type: object + NotificationRulePreviewResponseData: + description: The notification preview response data. + properties: + attributes: + $ref: "#/components/schemas/NotificationRulePreviewResponseAttributes" + id: + description: The ID of the notification preview response. + example: rka-loa-zwu + type: string + type: + $ref: "#/components/schemas/NotificationRulePreviewResponseType" + required: + - type + - attributes + type: object + NotificationRulePreviewResponseType: + description: The type of the notification preview response. + enum: + - notification_preview_response + example: notification_preview_response + type: string + x-enum-varnames: + - NOTIFICATION_PREVIEW_RESPONSE + NotificationRulePreviewResult: + description: The preview result for a single rule type. + properties: + notification_status: + $ref: "#/components/schemas/NotificationRulePreviewNotificationStatus" + rule_type: + $ref: "#/components/schemas/RuleTypesItems" + required: + - rule_type + - notification_status + type: object + NotificationRulePreviewResults: + description: List of preview results for each rule type matched by the notification rule. + example: + - notification_status: DEFAULT + rule_type: log_detection + items: + $ref: "#/components/schemas/NotificationRulePreviewResult" + type: array NotificationRuleQuery: description: The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes. example: (source:production_service OR env:prod) @@ -57819,6 +60865,30 @@ components: data: $ref: "#/components/schemas/NotificationRule" type: object + NotificationRuleRouting: + description: Routing configuration for the notification rule. + properties: + mode: + $ref: "#/components/schemas/NotificationRuleRoutingMode" + required: + - mode + type: object + NotificationRuleRoutingMode: + description: The routing mode for the notification rule. `manual` sends notifications to the configured targets. + enum: + - manual + example: manual + type: string + x-enum-varnames: + - MANUAL + NotificationRulesListResponse: + description: The list of notification rules. + properties: + data: + items: + $ref: "#/components/schemas/NotificationRule" + type: array + type: object NotificationRulesType: description: The rule type associated to notification rules. enum: @@ -59294,6 +62364,7 @@ components: - $ref: "#/components/schemas/ObservabilityPipelineDedupeProcessor" - $ref: "#/components/schemas/ObservabilityPipelineEnrichmentTableProcessor" - $ref: "#/components/schemas/ObservabilityPipelineGenerateMetricsProcessor" + - $ref: "#/components/schemas/ObservabilityPipelineGenerateMetricsV2Processor" - $ref: "#/components/schemas/ObservabilityPipelineOcsfMapperProcessor" - $ref: "#/components/schemas/ObservabilityPipelineParseGrokProcessor" - $ref: "#/components/schemas/ObservabilityPipelineParseJSONProcessor" @@ -60433,6 +63504,50 @@ components: type: string x-enum-varnames: - GENERATE_DATADOG_METRICS + ObservabilityPipelineGenerateMetricsV2Processor: + description: |- + The `generate_metrics` processor creates custom metrics from logs. + Metrics can be counters, gauges, or distributions and optionally grouped by log fields. + The generated metrics must be routed to a metrics destination using the input `.metrics`. + + **Supported pipeline types:** logs + properties: + display_name: + $ref: "#/components/schemas/ObservabilityPipelineComponentDisplayName" + enabled: + description: Indicates whether the processor is enabled. + example: true + type: boolean + id: + description: The unique identifier for this component. Used to reference this component in other parts of the pipeline. + example: generate-metrics-processor + type: string + include: + description: A Datadog search query used to determine which logs this processor targets. + example: "service:my-service" + type: string + metrics: + description: Configuration for generating individual metrics. + items: + $ref: "#/components/schemas/ObservabilityPipelineGeneratedMetric" + type: array + type: + $ref: "#/components/schemas/ObservabilityPipelineGenerateMetricsV2ProcessorType" + required: + - id + - type + - enabled + type: object + x-pipeline-types: [logs] + ObservabilityPipelineGenerateMetricsV2ProcessorType: + default: generate_metrics + description: The processor type. Always `generate_metrics`. + enum: + - generate_metrics + example: generate_metrics + type: string + x-enum-varnames: + - GENERATE_METRICS ObservabilityPipelineGeneratedMetric: description: |- Defines a log-based custom metric, including its name, type, filter, value computation strategy, @@ -66443,6 +69558,569 @@ components: required: - data type: object + OwnershipEvidenceAttributes: + description: The attributes of an ownership evidence response. + properties: + evidence_versions: + $ref: "#/components/schemas/OwnershipEvidenceVersions" + required: + - evidence_versions + type: object + OwnershipEvidenceData: + description: The data wrapper for an ownership evidence response. + properties: + attributes: + $ref: "#/components/schemas/OwnershipEvidenceAttributes" + id: + description: The identifier of the resource the evidence applies to. + example: test-resource + type: string + type: + $ref: "#/components/schemas/OwnershipEvidenceType" + required: + - id + - type + - attributes + type: object + OwnershipEvidenceResponse: + description: The response returned when retrieving the evidence backing an ownership inference for an owner type. + properties: + data: + $ref: "#/components/schemas/OwnershipEvidenceData" + required: + - data + type: object + OwnershipEvidenceType: + default: ownership_evidence + description: The type of the ownership evidence resource. The value should always be `ownership_evidence`. + enum: + - ownership_evidence + example: ownership_evidence + type: string + x-enum-varnames: + - OWNERSHIP_EVIDENCE + OwnershipEvidenceVersion: + additionalProperties: {} + description: A single evidence version entry describing how an inference was produced. + example: + pipeline_id: p1 + version: v3 + type: object + OwnershipEvidenceVersions: + description: The list of evidence versions associated with an inference. + example: + - pipeline_id: p1 + version: v3 + items: + $ref: "#/components/schemas/OwnershipEvidenceVersion" + nullable: true + type: array + OwnershipFeedbackAction: + description: The feedback action to apply to an inference. + enum: + - confirm + - reject + - correct + - persist + example: confirm + type: string + x-enum-varnames: + - CONFIRM + - REJECT + - CORRECT + - PERSIST + OwnershipFeedbackRequest: + description: The request body for submitting ownership feedback. + properties: + data: + $ref: "#/components/schemas/OwnershipFeedbackRequestData" + required: + - data + type: object + OwnershipFeedbackRequestAttributes: + description: The attributes of an ownership feedback request. + properties: + action: + $ref: "#/components/schemas/OwnershipFeedbackAction" + actor_handle: + description: The handle of the actor submitting the feedback. + example: user@example.com + type: string + actor_type: + description: The type of actor submitting the feedback, for example `user` or `service`. + example: user + type: string + corrected_owner_handle: + description: The corrected owner handle. Required when `action` is `correct`. + example: team-b + nullable: true + type: string + corrected_owner_type: + description: The corrected owner type. Required when `action` is `correct`. + example: team + nullable: true + type: string + inference_checksum: + description: The checksum of the inference being acted upon. Must match the current inference checksum or the request returns a conflict. + example: abc123 + type: string + reason: + description: An optional free-form reason explaining the feedback. + example: Confirmed by team lead. + nullable: true + type: string + required: + - action + - actor_handle + - actor_type + - inference_checksum + type: object + OwnershipFeedbackRequestData: + description: The data wrapper for an ownership feedback request. + properties: + attributes: + $ref: "#/components/schemas/OwnershipFeedbackRequestAttributes" + type: + $ref: "#/components/schemas/OwnershipFeedbackType" + required: + - type + - attributes + type: object + OwnershipFeedbackResponse: + description: The response returned after applying ownership feedback to an inference. + properties: + data: + $ref: "#/components/schemas/OwnershipFeedbackResultData" + required: + - data + type: object + OwnershipFeedbackResultAttributes: + description: The attributes of an ownership feedback result. + properties: + action: + $ref: "#/components/schemas/OwnershipFeedbackAction" + checksum: + description: The checksum of the inference after the feedback was applied. + example: abc123 + type: string + new_status: + $ref: "#/components/schemas/OwnershipInferenceStatus" + owner_type: + $ref: "#/components/schemas/OwnershipOwnerType" + previous_status: + $ref: "#/components/schemas/OwnershipInferenceStatus" + primary_contact_ref: + description: The primary contact reference for the inferred owner after the feedback was applied, formatted as `ref:handle/`. + example: ref:handle/team-a + nullable: true + type: string + updated_at: + description: The time when the inference was updated by the feedback. + example: "2026-01-15T10:00:00Z" + format: date-time + type: string + required: + - action + - previous_status + - new_status + - owner_type + - checksum + - updated_at + type: object + OwnershipFeedbackResultData: + description: The data wrapper for an ownership feedback result response. + properties: + attributes: + $ref: "#/components/schemas/OwnershipFeedbackResultAttributes" + id: + description: The identifier of the resource that the feedback was applied to. + example: res-1 + type: string + type: + $ref: "#/components/schemas/OwnershipFeedbackResultType" + required: + - id + - type + - attributes + type: object + OwnershipFeedbackResultType: + default: ownership_feedback_result + description: The type of the ownership feedback result resource. The value should always be `ownership_feedback_result`. + enum: + - ownership_feedback_result + example: ownership_feedback_result + type: string + x-enum-varnames: + - OWNERSHIP_FEEDBACK_RESULT + OwnershipFeedbackType: + default: ownership_feedback + description: The type of the ownership feedback request resource. The value should always be `ownership_feedback`. + enum: + - ownership_feedback + example: ownership_feedback + type: string + x-enum-varnames: + - OWNERSHIP_FEEDBACK + OwnershipHistoryAttributes: + description: The attributes of an ownership history response. + properties: + items: + $ref: "#/components/schemas/OwnershipHistoryItems" + pagination: + $ref: "#/components/schemas/OwnershipHistoryPagination" + required: + - items + - pagination + type: object + OwnershipHistoryData: + description: The data wrapper for an ownership history response. + properties: + attributes: + $ref: "#/components/schemas/OwnershipHistoryAttributes" + id: + description: The resource identifier for which history is returned. + example: res-1 + type: string + type: + $ref: "#/components/schemas/OwnershipHistoryType" + required: + - id + - type + - attributes + type: object + OwnershipHistoryItem: + description: A single ownership inference history entry. + properties: + checksum: + description: A checksum identifying the state of the inference at this point in time. + example: "" + type: string + confidence: + description: The confidence score of the inference, expressed as a numeric string with up to four decimal places. + example: "0.9000" + type: string + created_at: + description: The time this history entry was created. + example: "2026-01-15T10:00:00Z" + format: date-time + type: string + evidence_versions: + $ref: "#/components/schemas/OwnershipEvidenceVersions" + explanation: + description: A human-readable explanation of how the inference was produced. + example: "" + type: string + failed_at: + description: The time when this inference failed, if applicable. + example: "2026-01-15T10:00:00Z" + format: date-time + nullable: true + type: string + failure_reason: + description: The reason why this inference failed, if applicable. + example: missing evidence + nullable: true + type: string + id: + description: The unique identifier of the history entry. + example: 100 + format: int64 + type: integer + owner_type: + $ref: "#/components/schemas/OwnershipOwnerType" + primary_contact_ref: + description: The primary contact reference for the inferred owner, formatted as `ref:handle/`. + example: ref:handle/team-a + nullable: true + type: string + resource_id: + description: The identifier of the resource that the inference applies to. + example: res-1 + type: string + retry_schedule: + description: The scheduled retry time for a failed inference, if applicable. + example: "2026-01-15T11:00:00Z" + format: date-time + nullable: true + type: string + sources: + $ref: "#/components/schemas/OwnershipInferenceSources" + status: + $ref: "#/components/schemas/OwnershipInferenceStatus" + required: + - id + - resource_id + - owner_type + - confidence + - explanation + - evidence_versions + - sources + - checksum + - status + - created_at + type: object + OwnershipHistoryItems: + description: The list of history entries returned for this page. + items: + $ref: "#/components/schemas/OwnershipHistoryItem" + type: array + OwnershipHistoryPagination: + description: Cursor-based pagination metadata for the history response. + properties: + has_more: + description: Whether more history entries are available beyond this page. + example: false + type: boolean + next_cursor: + description: An opaque, base64-encoded cursor token. Pass it as the `cursor` query parameter to retrieve the next page. Absent or `null` when there are no further pages. + example: eyJpZCI6OTh9 + nullable: true + type: string + required: + - has_more + type: object + OwnershipHistoryResponse: + description: The response returned when listing the inference history for a resource. + properties: + data: + $ref: "#/components/schemas/OwnershipHistoryData" + required: + - data + type: object + OwnershipHistoryType: + default: ownership_history + description: The type of the ownership history resource. The value should always be `ownership_history`. + enum: + - ownership_history + example: ownership_history + type: string + x-enum-varnames: + - OWNERSHIP_HISTORY + OwnershipInferenceAttributes: + description: The attributes of a single ownership inference. + properties: + checksum: + description: A checksum that uniquely identifies the current state of the inference. Required when submitting feedback. + example: abc123 + type: string + confidence: + description: The confidence score of the inference, expressed as a numeric string with up to four decimal places. + example: "0.9500" + type: string + created_at: + description: The time when the inference was created. + example: "2026-01-15T10:00:00Z" + format: date-time + type: string + evidence_versions: + $ref: "#/components/schemas/OwnershipEvidenceVersions" + explanation: + description: A human-readable explanation of how the inference was produced. + example: High confidence match + type: string + owner_type: + $ref: "#/components/schemas/OwnershipOwnerType" + primary_contact_ref: + description: The primary contact reference for the inferred owner, formatted as `ref:handle/`. + example: ref:handle/team-a + nullable: true + type: string + sources: + $ref: "#/components/schemas/OwnershipInferenceSources" + status: + $ref: "#/components/schemas/OwnershipInferenceStatus" + updated_at: + description: The time when the inference was last updated. + example: "2026-01-15T10:00:00Z" + format: date-time + type: string + required: + - owner_type + - confidence + - explanation + - evidence_versions + - sources + - status + - checksum + - created_at + - updated_at + type: object + OwnershipInferenceData: + description: The data wrapper for a single ownership inference response. + properties: + attributes: + $ref: "#/components/schemas/OwnershipInferenceAttributes" + id: + description: The identifier of the inference, formatted as `resource_id:owner_type`. + example: test-resource:team + type: string + type: + $ref: "#/components/schemas/OwnershipInferenceType" + required: + - id + - type + - attributes + type: object + OwnershipInferenceItem: + description: A single ownership inference, scoped to a specific owner type. + properties: + checksum: + description: A checksum that uniquely identifies the current state of the inference. Required when submitting feedback. + example: abc123 + type: string + confidence: + description: The confidence score of the inference, expressed as a numeric string with up to four decimal places. + example: "0.9500" + type: string + created_at: + description: The time when the inference was created. + example: "2026-01-15T10:00:00Z" + format: date-time + type: string + evidence_versions: + $ref: "#/components/schemas/OwnershipEvidenceVersions" + explanation: + description: A human-readable explanation of how the inference was produced. + example: High confidence match + type: string + id: + description: The identifier of the inference, formatted as `resource_id:owner_type`. + example: test-resource:team + type: string + owner_type: + $ref: "#/components/schemas/OwnershipOwnerType" + primary_contact_ref: + description: The primary contact reference for the inferred owner, formatted as `ref:handle/`. + example: ref:handle/team-a + nullable: true + type: string + sources: + $ref: "#/components/schemas/OwnershipInferenceSources" + status: + $ref: "#/components/schemas/OwnershipInferenceStatus" + updated_at: + description: The time when the inference was last updated. + example: "2026-01-15T10:00:00Z" + format: date-time + type: string + required: + - id + - owner_type + - confidence + - explanation + - evidence_versions + - sources + - status + - checksum + - created_at + - updated_at + type: object + OwnershipInferenceItems: + description: The list of inferences for a resource, with one inference per owner type. + items: + $ref: "#/components/schemas/OwnershipInferenceItem" + type: array + OwnershipInferenceListAttributes: + description: The attributes of the ownership inferences collection response. + properties: + items: + $ref: "#/components/schemas/OwnershipInferenceItems" + required: + - items + type: object + OwnershipInferenceListData: + description: The data wrapper for the ownership inferences collection response. + properties: + attributes: + $ref: "#/components/schemas/OwnershipInferenceListAttributes" + id: + description: The resource identifier associated with the returned inferences. + example: test-resource + type: string + type: + $ref: "#/components/schemas/OwnershipInferencesType" + required: + - id + - type + - attributes + type: object + OwnershipInferenceListResponse: + description: The response returned when listing all current ownership inferences for a resource. + properties: + data: + $ref: "#/components/schemas/OwnershipInferenceListData" + required: + - data + type: object + OwnershipInferenceResponse: + description: The response returned when retrieving a single ownership inference for an owner type. + properties: + data: + $ref: "#/components/schemas/OwnershipInferenceData" + required: + - data + type: object + OwnershipInferenceSource: + additionalProperties: {} + description: A source describing how an inference was derived. + example: + kind: code_owners + type: object + OwnershipInferenceSources: + description: The list of sources backing an ownership inference. Empty when the inference status is not whitelisted to expose sources. + example: + - kind: code_owners + items: + $ref: "#/components/schemas/OwnershipInferenceSource" + type: array + OwnershipInferenceStatus: + description: The lifecycle status of an ownership inference. + enum: + - suggested + - persisted + - overridden + - failed + - unknown + example: suggested + type: string + x-enum-varnames: + - SUGGESTED + - PERSISTED + - OVERRIDDEN + - FAILED + - UNKNOWN + OwnershipInferenceType: + default: ownership_inference + description: The type of the ownership inference resource. The value should always be `ownership_inference`. + enum: + - ownership_inference + example: ownership_inference + type: string + x-enum-varnames: + - OWNERSHIP_INFERENCE + OwnershipInferencesType: + default: ownership_inferences + description: The type of the ownership inferences collection resource. The value should always be `ownership_inferences`. + enum: + - ownership_inferences + example: ownership_inferences + type: string + x-enum-varnames: + - OWNERSHIP_INFERENCES + OwnershipOwnerType: + description: The owner type for an ownership inference. + enum: + - user + - team + - service + - unknown + example: team + type: string + x-enum-varnames: + - USER + - TEAM + - SERVICE + - UNKNOWN PageAnnotationsAttributes: description: Attributes of the annotations on a page. properties: @@ -67052,6 +70730,8 @@ components: $ref: "#/components/schemas/Enabled" name: $ref: "#/components/schemas/RuleName" + routing: + $ref: "#/components/schemas/NotificationRuleRouting" selectors: $ref: "#/components/schemas/Selectors" targets: @@ -69193,6 +72873,7 @@ components: description: Notification destinations (1=email, 2=slack, 3=in-app). items: description: Notification channel identifier (1=email, 2=slack, 3=in-app). + format: int64 type: integer type: array enabled: @@ -69452,6 +73133,36 @@ components: data: $ref: "#/components/schemas/Deployment" type: object + PublishFormData: + description: The data for publishing a form version. + properties: + attributes: + $ref: "#/components/schemas/PublishFormDataAttributes" + type: + $ref: "#/components/schemas/FormPublicationType" + required: + - type + - attributes + type: object + PublishFormDataAttributes: + description: The attributes for publishing a form version. + properties: + version: + description: The version number to publish. + example: 1 + format: int64 + type: integer + required: + - version + type: object + PublishFormRequest: + description: A request to publish a form version. + properties: + data: + $ref: "#/components/schemas/PublishFormData" + required: + - data + type: object PublishRequestType: default: publishRequest description: The publish-request resource type. @@ -71719,6 +75430,428 @@ components: type: string x-enum-varnames: - RULESET + ReportScheduleAuthor: + description: A user included as a related JSON:API resource. + properties: + attributes: + $ref: "#/components/schemas/ReportScheduleAuthorAttributes" + id: + description: The user UUID. + example: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + type: string + type: + $ref: "#/components/schemas/ReportScheduleAuthorType" + required: + - type + - id + - attributes + type: object + ReportScheduleAuthorAttributes: + description: Attributes of the report author. + properties: + email: + description: The email address of the report author, or `null` if unavailable. + example: "user@example.com" + nullable: true + type: string + name: + description: The display name of the report author, or `null` if unavailable. + example: "Example User" + nullable: true + type: string + required: + - name + - email + type: object + ReportScheduleAuthorRelationship: + description: Relationship to the author of the report schedule. + properties: + data: + $ref: "#/components/schemas/ReportScheduleAuthorRelationshipData" + required: + - data + type: object + ReportScheduleAuthorRelationshipData: + description: Relationship data for the author of the report schedule. + properties: + id: + description: The user UUID of the report schedule author. + example: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + type: string + type: + $ref: "#/components/schemas/ReportScheduleAuthorType" + required: + - id + - type + type: object + ReportScheduleAuthorType: + description: JSON:API resource type for the included report author. + enum: + - users + example: users + type: string + x-enum-varnames: + - USERS + ReportScheduleCreateRequest: + description: Request body for creating a report schedule. + properties: + data: + $ref: "#/components/schemas/ReportScheduleCreateRequestData" + required: + - data + type: object + ReportScheduleCreateRequestAttributes: + description: The configuration of the report schedule to create. + properties: + delivery_format: + $ref: "#/components/schemas/ReportScheduleDeliveryFormat" + description: + description: A description of the report, up to 4096 characters. + example: "Weekly summary of infrastructure health." + maxLength: 4096 + type: string + recipients: + description: |- + The recipients of the report. Each entry is an email address, a Slack channel + reference in the form `slack:{team_id}.{channel_id}.{channel_name}`, or a Microsoft + Teams channel reference in the form `teams:{tenant_id}|{team_id}|{channel_id}`. + example: + - "user@example.com" + - "slack:T01234567.C01234567.alerts" + - "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2" + items: + description: A single recipient (email address, Slack channel reference, or Microsoft Teams channel reference). + type: string + type: array + resource_id: + description: The identifier of the dashboard or integration dashboard to render in the report. + example: "abc-def-ghi" + type: string + resource_type: + $ref: "#/components/schemas/ReportScheduleResourceType" + rrule: + description: The recurrence rule for the schedule, expressed as an iCalendar `RRULE` string. + example: "DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0" + type: string + tab_id: + description: The identifier of the dashboard tab to render, when the dashboard has tabs. + example: "66666666-7777-8888-9999-000000000000" + format: uuid + type: string + template_variables: + description: The dashboard template variables applied when rendering the report. + items: + $ref: "#/components/schemas/ReportScheduleTemplateVariable" + type: array + timeframe: + description: The relative timeframe of data to include in the report. + example: "calendar_month" + type: string + timezone: + description: The IANA time zone identifier the recurrence rule is evaluated in. + example: "America/New_York" + type: string + title: + description: The title of the report, between 1 and 78 characters. + example: "Weekly Infrastructure Report" + maxLength: 78 + minLength: 1 + type: string + required: + - resource_id + - resource_type + - recipients + - rrule + - timezone + - template_variables + - timeframe + - title + - description + type: object + ReportScheduleCreateRequestData: + description: The JSON:API data object for a report schedule creation request. + properties: + attributes: + $ref: "#/components/schemas/ReportScheduleCreateRequestAttributes" + type: + $ref: "#/components/schemas/ReportScheduleType" + required: + - type + - attributes + type: object + ReportScheduleDeliveryFormat: + description: |- + How a PDF-export report is delivered. `pdf` attaches a PDF file, `png` embeds + an inline PNG image, and `pdf_and_png` delivers both. + enum: + - pdf + - png + - pdf_and_png + example: pdf + type: string + x-enum-varnames: + - PDF + - PNG + - PDF_AND_PNG + ReportScheduleIncludedResource: + description: A related resource included with a report schedule. + oneOf: + - $ref: "#/components/schemas/ReportScheduleAuthor" + ReportSchedulePatchRequest: + description: Request body for updating a report schedule. + properties: + data: + $ref: "#/components/schemas/ReportSchedulePatchRequestData" + required: + - data + type: object + ReportSchedulePatchRequestAttributes: + description: |- + The updated configuration of the report schedule. These values replace the existing + ones; the targeted resource (`resource_id` and `resource_type`) cannot be changed. + properties: + delivery_format: + $ref: "#/components/schemas/ReportScheduleDeliveryFormat" + description: + description: A description of the report, up to 4096 characters. + example: "Updated weekly summary of infrastructure health." + maxLength: 4096 + type: string + recipients: + description: |- + The recipients of the report. Each entry is an email address, a Slack channel + reference in the form `slack:{team_id}.{channel_id}.{channel_name}`, or a Microsoft + Teams channel reference in the form `teams:{tenant_id}|{team_id}|{channel_id}`. + example: + - "user@example.com" + - "slack:T01234567.C01234567.alerts" + - "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2" + items: + description: A single recipient (email address, Slack channel reference, or Microsoft Teams channel reference). + type: string + type: array + rrule: + description: The recurrence rule for the schedule, expressed as an iCalendar `RRULE` string. + example: "DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0" + type: string + tab_id: + description: The identifier of the dashboard tab to render, when the dashboard has tabs. + example: "66666666-7777-8888-9999-000000000000" + format: uuid + type: string + template_variables: + description: The dashboard template variables applied when rendering the report. + items: + $ref: "#/components/schemas/ReportScheduleTemplateVariable" + type: array + timeframe: + description: The relative timeframe of data to include in the report. + example: "calendar_month" + type: string + timezone: + description: The IANA time zone identifier the recurrence rule is evaluated in. + example: "America/New_York" + type: string + title: + description: The title of the report, between 1 and 78 characters. + example: "Weekly Infrastructure Report" + maxLength: 78 + minLength: 1 + type: string + required: + - recipients + - rrule + - timezone + - template_variables + - timeframe + - title + - description + type: object + ReportSchedulePatchRequestData: + description: The JSON:API data object for a report schedule update request. + properties: + attributes: + $ref: "#/components/schemas/ReportSchedulePatchRequestAttributes" + type: + $ref: "#/components/schemas/ReportScheduleType" + required: + - type + - attributes + type: object + ReportScheduleResourceType: + description: The type of dashboard resource the report schedule targets. + enum: + - dashboard + - integration_dashboard + example: dashboard + type: string + x-enum-varnames: + - DASHBOARD + - INTEGRATION_DASHBOARD + ReportScheduleResponse: + description: Response containing a single report schedule. + properties: + data: + $ref: "#/components/schemas/ReportScheduleResponseData" + included: + description: Related resources included with the report schedule, such as the author. + items: + $ref: "#/components/schemas/ReportScheduleIncludedResource" + type: array + required: + - data + type: object + ReportScheduleResponseAttributes: + description: The configuration and derived state of a report schedule. + properties: + delivery_format: + $ref: "#/components/schemas/ReportScheduleResponseAttributesDeliveryFormat" + description: + description: The description of the report. + example: "Weekly summary of infrastructure health." + type: string + next_recurrence: + description: The Unix timestamp, in milliseconds, of the next scheduled delivery, or `null` if none is scheduled. + example: 1780923600000 + format: int64 + nullable: true + type: integer + recipients: + description: The recipients of the report (email addresses, Slack channel references, or Microsoft Teams channel references). + example: + - "user@example.com" + - "slack:T01234567.C01234567.alerts" + - "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2" + items: + description: A single recipient (email address, Slack channel reference, or Microsoft Teams channel reference). + type: string + type: array + resource_id: + description: The identifier of the resource rendered in the report. + example: "abc-def-ghi" + type: string + resource_type: + $ref: "#/components/schemas/ReportScheduleResourceType" + rrule: + description: The recurrence rule for the schedule, expressed as an iCalendar `RRULE` string. + example: "FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0" + type: string + status: + $ref: "#/components/schemas/ReportScheduleStatus" + tab_id: + description: The identifier of the dashboard tab rendered in the report, or `null` if not set. + example: "66666666-7777-8888-9999-000000000000" + nullable: true + type: string + template_variables: + description: The dashboard template variables applied when rendering the report. + items: + $ref: "#/components/schemas/ReportScheduleTemplateVariable" + type: array + timeframe: + description: The relative timeframe of data included in the report, or `null` if not set. + example: "1w" + nullable: true + type: string + timezone: + description: The IANA time zone identifier the recurrence rule is evaluated in. + example: "America/New_York" + type: string + title: + description: The title of the report. + example: "Weekly Infrastructure Report" + type: string + required: + - status + - resource_id + - resource_type + - recipients + - rrule + - timezone + - template_variables + - title + - description + - timeframe + - next_recurrence + - tab_id + type: object + ReportScheduleResponseAttributesDeliveryFormat: + description: The delivery format for dashboard report schedules, or `null` if not set. + enum: + - pdf + - png + - pdf_and_png + example: pdf + nullable: true + type: string + x-enum-varnames: + - PDF + - PNG + - PDF_AND_PNG + ReportScheduleResponseData: + description: The JSON:API data object representing a report schedule. + properties: + attributes: + $ref: "#/components/schemas/ReportScheduleResponseAttributes" + id: + description: The unique identifier of the report schedule. + example: "11111111-2222-3333-4444-555555555555" + type: string + relationships: + $ref: "#/components/schemas/ReportScheduleResponseRelationships" + type: + $ref: "#/components/schemas/ReportScheduleType" + required: + - id + - type + - attributes + - relationships + type: object + ReportScheduleResponseRelationships: + description: Relationships for the report schedule. + properties: + author: + $ref: "#/components/schemas/ReportScheduleAuthorRelationship" + required: + - author + type: object + ReportScheduleStatus: + description: Whether the schedule is currently delivering reports (`active`) or paused (`inactive`). + enum: + - active + - inactive + example: active + type: string + x-enum-varnames: + - ACTIVE + - INACTIVE + ReportScheduleTemplateVariable: + description: A dashboard template variable applied when rendering the report. + properties: + name: + description: The name of the template variable. + example: env + type: string + values: + description: The selected values for the template variable. + example: + - "prod" + items: + description: A single selected template variable value. + type: string + type: array + required: + - name + - values + type: object + ReportScheduleType: + description: JSON:API resource type for report schedules. + enum: + - schedule + example: schedule + type: string + x-enum-varnames: + - SCHEDULE ResolveVulnerableSymbolsRequest: description: The top-level request object for resolving vulnerable symbols in a set of packages. properties: @@ -73361,6 +77494,7 @@ components: - iac_misconfiguration - sast_vulnerability - secret_vulnerability + example: log_detection type: string x-enum-varnames: - APPLICATION_SECURITY @@ -73968,223 +78102,6 @@ components: minimum: 0 type: number type: object - RumHardcodedCrossProductSampling: - description: Cross-product retention settings for a hardcoded retention filter. - properties: - session_replay_enabled: - description: Indicates whether Session Replay cross-product retention is active. - example: true - type: boolean - session_replay_sample_rate: - description: Percentage (0–100) of retained sessions with an ingested replay whose replay data is kept. - example: 50.0 - format: double - maximum: 100 - minimum: 0 - type: number - trace_enabled: - description: Indicates whether Trace cross-product retention is active. - example: true - type: boolean - trace_sample_rate: - description: Percentage (0–100) of retained sessions with ingested traces whose traces are indexed. - example: 25.0 - format: double - maximum: 100 - minimum: 0 - type: number - type: object - RumHardcodedCrossProductSamplingEditability: - description: Flags indicating which `cross_product_sampling` fields can be updated. Read-only. - properties: - session_replay_sample_rate: - description: |- - If `true`, `cross_product_sampling.session_replay_sample_rate` can be updated on this filter. - example: true - type: boolean - trace_sample_rate: - description: If `true`, `cross_product_sampling.trace_sample_rate` can be updated on this filter. - example: false - type: boolean - type: object - RumHardcodedCrossProductSamplingUpdate: - description: |- - Partial update for cross-product retention of a hardcoded retention filter. - Only fields whose matching flag in `cross_product_sampling_editability` is `true` can be updated. - properties: - session_replay_enabled: - description: Controls whether Session Replay cross-product retention is active. Omit to leave unchanged. - example: true - type: boolean - session_replay_sample_rate: - description: |- - Percentage (0–100) of retained sessions with an ingested replay whose replay data is kept. - Omit to leave unchanged. - example: 50.0 - format: double - maximum: 100 - minimum: 0 - type: number - trace_enabled: - description: Controls whether Trace cross-product retention is active. Omit to leave unchanged. - example: true - type: boolean - trace_sample_rate: - description: |- - Percentage (0–100) of retained sessions with ingested traces whose traces are indexed. - Omit to leave unchanged. - example: 25.0 - format: double - maximum: 100 - minimum: 0 - type: number - type: object - RumHardcodedRetentionFilterAttributes: - description: The attributes of a hardcoded retention filter. - properties: - cross_product_sampling: - $ref: "#/components/schemas/RumHardcodedCrossProductSampling" - cross_product_sampling_editability: - $ref: "#/components/schemas/RumHardcodedCrossProductSamplingEditability" - enabled: - description: Indicates whether the hardcoded retention filter is active. Read-only. - example: true - type: boolean - event_type: - $ref: "#/components/schemas/RumHardcodedRetentionFilterEventType" - name: - description: The name of the hardcoded retention filter. Read-only. - example: Replay sessions - type: string - query: - description: The query string for the hardcoded retention filter. Read-only. - example: "@session.has_replay:true" - type: string - sample_rate: - description: The retention sample rate (0–100) for the hardcoded filter. Read-only. - example: 100.0 - format: double - maximum: 100 - minimum: 0 - type: number - type: object - RumHardcodedRetentionFilterData: - description: A hardcoded retention filter. - properties: - attributes: - $ref: "#/components/schemas/RumHardcodedRetentionFilterAttributes" - id: - description: The ID of the hardcoded retention filter. - example: forced_replay_sessions - type: string - meta: - $ref: "#/components/schemas/RumHardcodedRetentionFilterMeta" - type: - $ref: "#/components/schemas/RumHardcodedRetentionFilterType" - type: object - RumHardcodedRetentionFilterEventType: - description: The type of RUM events the hardcoded filter applies to. Read-only. - enum: - - session - - view - - action - - error - - resource - - long_task - - vital - example: session - type: string - x-enum-varnames: - - SESSION - - VIEW - - ACTION - - ERROR - - RESOURCE - - LONG_TASK - - VITAL - RumHardcodedRetentionFilterMeta: - description: Metadata about the hardcoded retention filter. - properties: - source: - $ref: "#/components/schemas/RumHardcodedRetentionFilterMetaSource" - updated_at: - description: Unix epoch (in milliseconds) of the last update. - example: 1735689600000 - format: int64 - type: integer - updated_by_handle: - description: Handle of the user who last updated the filter. - example: jane.doe@example.com - type: string - type: object - RumHardcodedRetentionFilterMetaSource: - description: The source of the last update to a hardcoded retention filter. - enum: - - default - - ui - - terraform - example: ui - type: string - x-enum-varnames: - - DEFAULT - - UI - - TERRAFORM - RumHardcodedRetentionFilterResponse: - description: A hardcoded retention filter response body. - properties: - data: - $ref: "#/components/schemas/RumHardcodedRetentionFilterData" - type: object - RumHardcodedRetentionFilterType: - default: hardcoded_retention_filters - description: The resource type. The value must be `hardcoded_retention_filters`. - enum: - - hardcoded_retention_filters - example: hardcoded_retention_filters - type: string - x-enum-varnames: - - HARDCODED_RETENTION_FILTERS - RumHardcodedRetentionFilterUpdateAttributes: - description: |- - The attributes of a hardcoded retention filter that can be updated. - Only fields whose matching flag in `cross_product_sampling_editability` is `true` can be modified. - properties: - cross_product_sampling: - $ref: "#/components/schemas/RumHardcodedCrossProductSamplingUpdate" - type: object - RumHardcodedRetentionFilterUpdateData: - description: The hardcoded retention filter properties to update. - properties: - attributes: - $ref: "#/components/schemas/RumHardcodedRetentionFilterUpdateAttributes" - id: - description: The ID of the hardcoded retention filter. Must match the `rf_id` path parameter. - example: forced_replay_sessions - type: string - type: - $ref: "#/components/schemas/RumHardcodedRetentionFilterType" - required: - - id - - type - - attributes - type: object - RumHardcodedRetentionFilterUpdateRequest: - description: The hardcoded retention filter body to update. - properties: - data: - $ref: "#/components/schemas/RumHardcodedRetentionFilterUpdateData" - required: - - data - type: object - RumHardcodedRetentionFiltersResponse: - description: All hardcoded retention filters for a RUM application. - properties: - data: - description: A list of hardcoded retention filters. - items: - $ref: "#/components/schemas/RumHardcodedRetentionFilterData" - type: array - type: object RumMetricCompute: description: The compute rule to compute the RUM-based metric. properties: @@ -74528,6 +78445,179 @@ components: $ref: "#/components/schemas/RumPermanentRetentionFilterData" type: array type: object + RumRateLimitAdaptiveConfig: + description: The configuration used when `mode` is `adaptive`. + properties: + max_retention_rate: + description: The maximum fraction of sessions to retain, in the range `(0, 1]`. + example: 0.5 + exclusiveMinimum: true + format: double + maximum: 1 + minimum: 0 + type: number + required: + - max_retention_rate + type: object + RumRateLimitConfigAttributes: + description: The RUM rate limit configuration properties. + properties: + adaptive: + $ref: "#/components/schemas/RumRateLimitAdaptiveConfig" + custom: + $ref: "#/components/schemas/RumRateLimitCustomConfig" + mode: + $ref: "#/components/schemas/RumRateLimitMode" + org_id: + description: The ID of the organization the rate limit configuration belongs to. + example: 2 + format: int64 + type: integer + updated_at: + description: The date the rate limit configuration was last updated. + example: "2026-03-04T15:37:54.951447Z" + type: string + updated_by: + description: The handle of the user who last updated the rate limit configuration. + example: test@example.com + type: string + required: + - mode + - org_id + type: object + RumRateLimitConfigData: + description: The RUM rate limit configuration object. + properties: + attributes: + $ref: "#/components/schemas/RumRateLimitConfigAttributes" + id: + description: The identifier of the scope the rate limit configuration applies to. + example: cd73a516-a481-4af5-8352-9b577465c77b + type: string + type: + $ref: "#/components/schemas/RumRateLimitConfigType" + required: + - id + - type + - attributes + type: object + RumRateLimitConfigResponse: + description: The RUM rate limit configuration response. + properties: + data: + $ref: "#/components/schemas/RumRateLimitConfigData" + required: + - data + type: object + RumRateLimitConfigType: + default: rum_rate_limit_config + description: The type of the resource, always `rum_rate_limit_config`. + enum: + - rum_rate_limit_config + example: rum_rate_limit_config + type: string + x-enum-varnames: ["RUM_RATE_LIMIT_CONFIG"] + RumRateLimitConfigUpdateAttributes: + description: The RUM rate limit configuration properties to create or update. + properties: + adaptive: + $ref: "#/components/schemas/RumRateLimitAdaptiveConfig" + custom: + $ref: "#/components/schemas/RumRateLimitCustomConfig" + mode: + $ref: "#/components/schemas/RumRateLimitMode" + required: + - mode + type: object + RumRateLimitConfigUpdateData: + description: The RUM rate limit configuration to create or update. + properties: + attributes: + $ref: "#/components/schemas/RumRateLimitConfigUpdateAttributes" + id: + description: |- + The identifier of the scope the rate limit configuration applies to. + Must match `scope_id` in the path. + example: cd73a516-a481-4af5-8352-9b577465c77b + type: string + type: + $ref: "#/components/schemas/RumRateLimitConfigType" + required: + - id + - type + - attributes + type: object + RumRateLimitConfigUpdateRequest: + description: The body of a request to create or update a RUM rate limit configuration. + properties: + data: + $ref: "#/components/schemas/RumRateLimitConfigUpdateData" + required: + - data + type: object + RumRateLimitCustomConfig: + description: The configuration used when `mode` is `custom`. + properties: + daily_reset_time: + description: The time of day when the daily quota resets, in `HH:MM` 24-hour format. + example: "08:00" + pattern: "^([01]\\d|2[0-3]):[0-5]\\d$" + type: string + daily_reset_timezone: + description: The timezone offset used for the daily reset time, in `±HH:MM` format. + example: "+09:00" + pattern: "^[+-](0\\d|1[0-4]):[0-5]\\d$" + type: string + quota_reached_action: + $ref: "#/components/schemas/RumRateLimitQuotaReachedAction" + session_limit: + description: The maximum number of sessions allowed within the window. + example: 1000000 + format: int64 + minimum: 1 + type: integer + window_type: + $ref: "#/components/schemas/RumRateLimitWindowType" + required: + - window_type + - session_limit + - daily_reset_time + - daily_reset_timezone + - quota_reached_action + type: object + RumRateLimitMode: + description: |- + The rate limit mode. `custom` enforces a fixed session limit, while + `adaptive` dynamically adjusts retention. + enum: + - custom + - adaptive + example: custom + type: string + x-enum-varnames: ["CUSTOM", "ADAPTIVE"] + RumRateLimitQuotaReachedAction: + description: The action to take when the session quota is reached. + enum: + - stop + - slowdown + example: stop + type: string + x-enum-varnames: ["STOP", "SLOWDOWN"] + RumRateLimitScopeType: + default: application + description: The type of scope the rate limit configuration applies to. + enum: + - application + example: application + type: string + x-enum-varnames: ["APPLICATION"] + RumRateLimitWindowType: + description: The window type over which the session limit is enforced. + enum: + - daily + example: daily + type: string + x-enum-varnames: ["DAILY"] RumRetentionFilterAttributes: description: The object describing attributes of a RUM retention filter. properties: @@ -74710,6 +78800,27 @@ components: $ref: "#/components/schemas/RumRetentionFilterData" type: array type: object + RunDataObservabilityMonitorResponse: + description: The response returned when a data observability monitor run is triggered. + properties: + data: + $ref: "#/components/schemas/RunDataObservabilityMonitorResponseData" + required: + - data + type: object + RunDataObservabilityMonitorResponseData: + description: The data object returned when a data observability monitor run is triggered. + properties: + id: + description: The unique identifier of the monitor run. + example: "abc123def456" + type: string + type: + $ref: "#/components/schemas/DataObservabilityMonitorRunType" + required: + - id + - type + type: object RunHistoricalJobRequest: description: Run a historical job request. properties: @@ -85290,6 +89401,347 @@ components: required: - type type: object + SharedDashboardGlobalTime: + additionalProperties: {} + description: Default time range configuration for the shared dashboard. + example: + live_span: 1h + nullable: true + type: object + SharedDashboardIncluded: + description: Resource included with a shared dashboard. + oneOf: + - $ref: "#/components/schemas/SharedDashboardIncludedDashboard" + - $ref: "#/components/schemas/SharedDashboardIncludedUser" + SharedDashboardIncludedDashboard: + description: Included dashboard resource. + properties: + attributes: + $ref: "#/components/schemas/SharedDashboardIncludedDashboardAttributes" + id: + description: ID of the dashboard. + example: abc-def-ghi + type: string + type: + $ref: "#/components/schemas/SharedDashboardIncludedDashboardType" + required: + - id + - type + - attributes + type: object + SharedDashboardIncludedDashboardAttributes: + description: Attributes of the included dashboard. + properties: + title: + description: Dashboard title. + example: Q1 Metrics Dashboard + type: string + required: + - title + type: object + SharedDashboardIncludedDashboardType: + default: dashboard + description: Included dashboard resource type. + enum: + - dashboard + example: dashboard + type: string + x-enum-varnames: + - DASHBOARD + SharedDashboardIncludedUser: + description: Included user resource. + properties: + attributes: + $ref: "#/components/schemas/SharedDashboardIncludedUserAttributes" + id: + description: ID of the user. + example: 00000000-0000-0000-0000-000000000000 + type: string + type: + $ref: "#/components/schemas/UserResourceType" + required: + - id + - type + - attributes + type: object + SharedDashboardIncludedUserAttributes: + description: Attributes of the included user. + properties: + handle: + description: User handle. + example: jane.doe@example.com + type: string + name: + description: User display name. + example: Jane Doe + type: string + required: + - handle + - name + type: object + SharedDashboardInvitee: + description: Invitee that can access an invite-only shared dashboard. + properties: + access_expiration: + description: Time when the invitee's access expires. + example: "2026-01-15T09:30:00.000Z" + format: date-time + nullable: true + type: string + created_at: + description: Time when the invitee was added. + example: "2026-01-01T00:00:00.000Z" + format: date-time + type: string + email: + description: Email address of the invitee. + example: jane.doe@example.com + type: string + required: + - email + - access_expiration + - created_at + type: object + SharedDashboardRelationshipDashboard: + description: Dashboard associated with the shared dashboard. + properties: + data: + $ref: "#/components/schemas/SharedDashboardRelationshipDashboardData" + required: + - data + type: object + SharedDashboardRelationshipDashboardData: + description: Dashboard relationship data. + properties: + id: + description: ID of the dashboard. + example: abc-def-ghi + type: string + type: + $ref: "#/components/schemas/SharedDashboardIncludedDashboardType" + required: + - id + - type + type: object + SharedDashboardRelationshipSharer: + description: User who shared the dashboard. + properties: + data: + $ref: "#/components/schemas/UserRelationshipData" + required: + - data + type: object + SharedDashboardRelationships: + description: Relationships of a shared dashboard. + properties: + dashboard: + $ref: "#/components/schemas/SharedDashboardRelationshipDashboard" + sharer: + $ref: "#/components/schemas/SharedDashboardRelationshipSharer" + required: + - dashboard + - sharer + type: object + SharedDashboardResponse: + description: A shared dashboard response resource. + properties: + attributes: + $ref: "#/components/schemas/SharedDashboardResponseAttributes" + id: + description: ID of the shared dashboard. + example: "12345" + type: string + relationships: + $ref: "#/components/schemas/SharedDashboardRelationships" + type: + $ref: "#/components/schemas/SharedDashboardType" + required: + - id + - type + - attributes + - relationships + type: object + SharedDashboardResponseAttributes: + description: Attributes of a shared dashboard response. + properties: + created_at: + description: Time when the shared dashboard was created. + example: "2026-01-01T00:00:00.000Z" + format: date-time + type: string + embeddable_domains: + description: Domains where embed-type shared dashboards can be embedded. + example: ["https://example.com"] + items: + description: An embeddable domain. + type: string + type: array + expiration: + description: Time when the shared dashboard expires. + example: "2026-02-01T00:00:00.000Z" + format: date-time + nullable: true + type: string + global_time: + $ref: "#/components/schemas/SharedDashboardGlobalTime" + global_time_selectable: + description: Whether viewers can select a different global time setting. + example: false + type: boolean + invitees: + description: Invitees for invite-only shared dashboards. + items: + $ref: "#/components/schemas/SharedDashboardInvitee" + type: array + last_accessed: + description: Time when the shared dashboard was last accessed. + example: "2026-01-15T09:30:00.000Z" + format: date-time + nullable: true + type: string + selectable_template_vars: + description: Template variables that viewers can modify. + items: + $ref: "#/components/schemas/SharedDashboardSelectableTemplateVariable" + type: array + share_type: + $ref: "#/components/schemas/SharedDashboardShareType" + sharer_disabled: + description: Whether the user who shared the dashboard is disabled. + example: false + type: boolean + status: + $ref: "#/components/schemas/SharedDashboardStatus" + title: + description: Display title for the shared dashboard. + example: Q1 Metrics Dashboard + type: string + token: + description: Token assigned to the shared dashboard. + example: abc-123-token + type: string + url: + description: URL for the shared dashboard. + example: https://p.datadoghq.com/sb/abc-123-token + type: string + viewing_preferences: + $ref: "#/components/schemas/SharedDashboardViewingPreferences" + required: + - token + - title + - url + - viewing_preferences + - global_time_selectable + - global_time + - selectable_template_vars + - created_at + - last_accessed + - status + - share_type + - invitees + - embeddable_domains + - expiration + - sharer_disabled + type: object + SharedDashboardSelectableTemplateVariable: + description: A template variable that viewers can modify on the shared dashboard. + properties: + allow_any_value: + description: Whether viewers can see all tag values for the template variable and specify any value. + example: false + type: boolean + default_values: + description: Default selected values for the variable. + example: ["prod"] + items: + description: A default value for the template variable. + type: string + type: array + name: + description: Name of the template variable. + example: environment + type: string + prefix: + description: Tag prefix for the variable. + example: env + type: string + type: + description: Type of the template variable. + example: group + type: string + visible_tags: + description: Restricts which tag values are visible to the viewer. + example: ["prod"] + items: + description: A visible tag value for the template variable. + type: string + type: array + required: + - name + - prefix + - type + - allow_any_value + - default_values + - visible_tags + type: object + SharedDashboardShareType: + description: Type of dashboard sharing. + enum: + - open + - invite + - embed + - secure-embed + example: invite + type: string + x-enum-varnames: + - OPEN + - INVITE + - EMBED + - SECURE_EMBED + SharedDashboardStatus: + description: Status of the shared dashboard. + enum: + - active + - paused + example: active + type: string + x-enum-varnames: + - ACTIVE + - PAUSED + SharedDashboardType: + default: shared_dashboard + description: Shared dashboard resource type. + enum: + - shared_dashboard + example: shared_dashboard + type: string + x-enum-varnames: + - SHARED_DASHBOARD + SharedDashboardViewingPreferences: + description: Display settings for the shared dashboard. + properties: + high_density: + description: Whether widgets are displayed in high-density mode. + example: false + type: boolean + theme: + $ref: "#/components/schemas/SharedDashboardViewingPreferencesTheme" + required: + - high_density + - theme + type: object + SharedDashboardViewingPreferencesTheme: + description: The theme of the shared dashboard view. `system` follows the viewer's system default. + enum: + - system + - light + - dark + example: system + type: string + x-enum-varnames: + - SYSTEM + - LIGHT + - DARK Shift: description: An on-call shift with its associated data and relationships. example: @@ -85786,6 +90238,14 @@ components: type: string x-enum-varnames: - AGGREGATED_DNS + SingleEntityContextResponse: + description: Response from the single entity context endpoint, containing the matching entity. + properties: + data: + $ref: "#/components/schemas/EntityContextEntity" + required: + - data + type: object SlackIntegrationMetadata: description: Incident integration metadata for the Slack integration. properties: @@ -85833,6 +90293,37 @@ components: required: - slackTrigger type: object + SlackUserBindingData: + description: Slack team ID data from a response. + properties: + id: + description: The Slack team ID. + example: "T01234567" + type: string + type: + $ref: "#/components/schemas/SlackUserBindingType" + type: object + SlackUserBindingType: + default: team_id + description: Slack user binding resource type. + enum: + - team_id + example: team_id + type: string + x-enum-varnames: + - TEAM_ID + SlackUserBindingsResponse: + description: Response with a list of Slack user bindings. + properties: + data: + description: An array of Slack user bindings. + example: [{"id": "T01234567", "type": "team_id"}, {"id": "T09876543", "type": "team_id"}] + items: + $ref: "#/components/schemas/SlackUserBindingData" + type: array + required: + - data + type: object SloDataSource: default: slo description: A data source for SLO queries. @@ -86297,6 +90788,7 @@ components: - 50 - 30 items: + format: int64 type: integer type: array names: @@ -93162,6 +97654,822 @@ components: type: string x-enum-varnames: - TAG + TagIndexingRuleAttributes: + description: Attributes of a tag indexing rule. + properties: + created_at: + description: Timestamp when the rule was created. + example: "2024-01-15T12:00:00.000Z" + format: date-time + readOnly: true + type: string + created_by_handle: + description: Handle of the user who created the rule. + example: user@datadoghq.com + readOnly: true + type: string + exclude_tags_mode: + description: >- + When true, the rule excludes the listed tags and indexes all others. When false (default), the rule includes only the listed tags. + example: false + type: boolean + ignored_metric_name_matches: + description: Metric name prefixes excluded from the rule's scope. + example: + - "dd.test.excluded.*" + items: + type: string + type: array + metric_name_matches: + description: Metric name prefixes (glob patterns) this rule applies to. + example: + - "dd.test.*" + items: + type: string + type: array + modified_at: + description: Timestamp when the rule was last modified. + example: "2024-01-15T12:00:00.000Z" + format: date-time + readOnly: true + type: string + modified_by_handle: + description: Handle of the user who last modified the rule. + example: user@datadoghq.com + readOnly: true + type: string + name: + description: Human-readable name for the rule. + example: my-indexing-rule + type: string + options: + $ref: "#/components/schemas/TagIndexingRuleOptions" + rule_order: + description: >- + Evaluation order within the org. Lower values are evaluated first. Assigned server-side on create (max+1); pass on update to change the rule's position. + example: 1 + format: int64 + readOnly: true + type: integer + tags: + description: Tag keys managed by this rule. + example: + - env + - service + items: + type: string + type: array + type: object + TagIndexingRuleCreateAttributes: + description: Attributes for creating a tag indexing rule. + properties: + exclude_tags_mode: + description: >- + When true, the rule excludes the listed tags and indexes all others. When false (default), the rule includes only the listed tags. + example: false + type: boolean + ignored_metric_name_matches: + description: Metric name prefixes excluded from the rule's scope. + items: + type: string + type: array + metric_name_matches: + description: Metric name prefixes (glob patterns) this rule applies to. + example: + - "dd.test.*" + items: + type: string + type: array + name: + description: Human-readable name for the rule. + example: my-indexing-rule + type: string + options: + $ref: "#/components/schemas/TagIndexingRuleOptions" + tags: + description: Tag keys managed by this rule. + example: + - env + - service + items: + type: string + type: array + required: + - name + - metric_name_matches + type: object + TagIndexingRuleCreateData: + description: Data object for creating a tag indexing rule. + properties: + attributes: + $ref: "#/components/schemas/TagIndexingRuleCreateAttributes" + type: + $ref: "#/components/schemas/TagIndexingRuleType" + required: + - type + - attributes + type: object + TagIndexingRuleCreateRequest: + description: Request body for creating a tag indexing rule. + properties: + data: + $ref: "#/components/schemas/TagIndexingRuleCreateData" + required: + - data + type: object + TagIndexingRuleData: + description: A tag indexing rule resource object. + properties: + attributes: + $ref: "#/components/schemas/TagIndexingRuleAttributes" + id: + description: The unique identifier (UUID) of the tag indexing rule. + example: "00000000-0000-0000-0000-000000000001" + type: string + type: + $ref: "#/components/schemas/TagIndexingRuleType" + type: object + TagIndexingRuleDynamicTags: + description: Configuration for including dynamically queried tags. + properties: + queried_tags_window_seconds: + description: Window in seconds for evaluating queried tags. + example: 3600 + format: int64 + type: integer + related_asset_tags: + description: When true, tags from related assets are included. + example: false + type: boolean + type: object + TagIndexingRuleExemptionAttributes: + description: Attributes of a tag indexing rule exemption. + properties: + created_at: + description: Timestamp when the exemption was created. + example: "2024-01-15T12:00:00.000Z" + format: date-time + readOnly: true + type: string + created_by_handle: + description: Handle of the user who created the exemption. + example: user@datadoghq.com + readOnly: true + type: string + kind: + description: >- + Discriminates between an explicit exemption (`exemption`) and a pre-existing legacy tag configuration acting as an implicit exclusion (`legacy_tag_configuration`). + example: exemption + type: string + reason: + description: The reason the metric is exempt from tag indexing rules. + example: This metric has a pre-existing tag configuration. + type: string + type: object + TagIndexingRuleExemptionCreateAttributes: + description: Attributes for creating a tag indexing rule exemption. + properties: + reason: + description: The reason the metric is exempt from tag indexing rules. + example: This metric has a pre-existing tag configuration. + type: string + required: + - reason + type: object + TagIndexingRuleExemptionCreateData: + description: Data object for creating a tag indexing rule exemption. + properties: + attributes: + $ref: "#/components/schemas/TagIndexingRuleExemptionCreateAttributes" + type: + $ref: "#/components/schemas/TagIndexingRuleExemptionType" + required: + - type + - attributes + type: object + TagIndexingRuleExemptionCreateRequest: + description: Request body for creating a tag indexing rule exemption. + properties: + data: + $ref: "#/components/schemas/TagIndexingRuleExemptionCreateData" + required: + - data + type: object + TagIndexingRuleExemptionData: + description: A tag indexing rule exemption resource object. + properties: + attributes: + $ref: "#/components/schemas/TagIndexingRuleExemptionAttributes" + id: + description: The metric name, used as the resource ID. + example: dd.test.metric + type: string + type: + $ref: "#/components/schemas/TagIndexingRuleExemptionType" + type: object + TagIndexingRuleExemptionResponse: + description: Response containing a tag indexing rule exemption. + properties: + data: + $ref: "#/components/schemas/TagIndexingRuleExemptionData" + readOnly: true + type: object + TagIndexingRuleExemptionType: + default: tag_indexing_rule_exemptions + description: The tag indexing rule exemption resource type. + enum: + - tag_indexing_rule_exemptions + example: tag_indexing_rule_exemptions + type: string + x-enum-varnames: + - TAG_INDEXING_RULE_EXEMPTIONS + TagIndexingRuleMetricMatch: + description: Criteria for matching metrics based on query state. + properties: + is_queried: + description: Match metrics that are being queried. + type: boolean + not_queried: + description: Match metrics that are not being queried. + type: boolean + not_used_in_assets: + description: Match metrics not used in any dashboards or monitors. + type: boolean + queried_window_seconds: + description: Window in seconds for evaluating query state. + example: 3600 + format: int64 + type: integer + used_in_assets: + description: Match metrics used in dashboards or monitors. + type: boolean + type: object + TagIndexingRuleOptions: + description: Versioned configuration options for a tag indexing rule. + properties: + data: + $ref: "#/components/schemas/TagIndexingRuleOptionsData" + version: + description: Options schema version. Only `1` is supported. + example: 1 + format: int64 + type: integer + type: object + TagIndexingRuleOptionsData: + description: Data payload for tag indexing rule options. + properties: + dynamic_tags: + $ref: "#/components/schemas/TagIndexingRuleDynamicTags" + manage_preexisting_metrics: + description: >- + When true, the rule applies to metrics that were ingested before the rule was created. + example: true + type: boolean + metric_match: + $ref: "#/components/schemas/TagIndexingRuleMetricMatch" + override_previous_rules: + description: >- + When true, this rule's tag list overrides tags configured by earlier rules for the same metric. When false (default), tags from all matching rules are combined. + example: false + type: boolean + type: object + TagIndexingRuleOrderAttributes: + description: Attributes for the reorder operation. + properties: + rule_ids: + description: >- + Ordered list of tag indexing rule UUIDs. The server assigns rule_order 1, 2, … matching position in this list. + example: + - "00000000-0000-0000-0000-000000000001" + - "00000000-0000-0000-0000-000000000002" + items: + type: string + type: array + type: object + TagIndexingRuleOrderData: + description: Data object for the reorder operation. + properties: + attributes: + $ref: "#/components/schemas/TagIndexingRuleOrderAttributes" + type: + $ref: "#/components/schemas/TagIndexingRuleType" + required: + - type + - attributes + type: object + TagIndexingRuleOrderRequest: + description: Request body for reordering tag indexing rules. + properties: + data: + $ref: "#/components/schemas/TagIndexingRuleOrderData" + required: + - data + type: object + TagIndexingRuleResponse: + description: Response containing a single tag indexing rule. + properties: + data: + $ref: "#/components/schemas/TagIndexingRuleData" + readOnly: true + type: object + TagIndexingRuleType: + default: tag_indexing_rules + description: The tag indexing rule resource type. + enum: + - tag_indexing_rules + example: tag_indexing_rules + type: string + x-enum-varnames: + - TAG_INDEXING_RULES + TagIndexingRuleUpdateAttributes: + description: Attributes for updating a tag indexing rule. All fields are optional; omitted fields are unchanged. + properties: + exclude_tags_mode: + description: >- + When true, the rule excludes the listed tags and indexes all others. + type: boolean + ignored_metric_name_matches: + description: Metric name prefixes excluded from the rule's scope. + items: + type: string + type: array + metric_name_matches: + description: Metric name prefixes (glob patterns) this rule applies to. + example: + - "dd.test.*" + items: + type: string + type: array + name: + description: Human-readable name for the rule. + example: my-indexing-rule + type: string + options: + $ref: "#/components/schemas/TagIndexingRuleOptions" + rule_order: + description: >- + Desired evaluation order. Returns 409 if the value conflicts with another rule; use POST /api/v2/metrics/tag-indexing-rules/order for atomic re-sequencing. + example: 2 + format: int64 + type: integer + tags: + description: Tag keys managed by this rule. + example: + - env + - service + items: + type: string + type: array + type: object + TagIndexingRuleUpdateData: + description: Data object for updating a tag indexing rule. + properties: + attributes: + $ref: "#/components/schemas/TagIndexingRuleUpdateAttributes" + type: + $ref: "#/components/schemas/TagIndexingRuleType" + required: + - type + type: object + TagIndexingRuleUpdateRequest: + description: Request body for updating a tag indexing rule. + properties: + data: + $ref: "#/components/schemas/TagIndexingRuleUpdateData" + required: + - data + type: object + TagIndexingRulesResponse: + description: Response containing a page of tag indexing rules. + properties: + data: + description: Array of tag indexing rule objects. + items: + $ref: "#/components/schemas/TagIndexingRuleData" + type: array + links: + $ref: "#/components/schemas/MetricsListResponseLinks" + meta: + $ref: "#/components/schemas/TagIndexingRulesResponseMeta" + readOnly: true + type: object + TagIndexingRulesResponseMeta: + description: Pagination metadata for a list of tag indexing rules. + properties: + total: + description: Total number of tag indexing rules in the org. + example: 5 + format: int64 + type: integer + type: object + TagPoliciesListResponse: + description: A page of tag policies. + properties: + data: + $ref: "#/components/schemas/TagPolicyDataArray" + included: + $ref: "#/components/schemas/TagPolicyIncludedResources" + required: + - data + type: object + TagPolicyAttributes: + description: The attributes of a tag policy resource. + properties: + created_at: + description: The RFC 3339 timestamp at which the policy was created. + example: "2026-05-21T22:11:06.108696Z" + format: date-time + type: string + created_by: + description: The identifier of the user who created the policy. + example: "test-user" + type: string + deleted_at: + description: The RFC 3339 timestamp at which the policy was soft-deleted. `null` if the policy has not been deleted. Only present when `include_deleted=true` is requested. + format: date-time + nullable: true + type: string + deleted_by: + description: The identifier of the user who soft-deleted the policy. `null` if the policy has not been deleted. + nullable: true + type: string + enabled: + description: Whether the policy is currently enforced. + example: true + type: boolean + modified_at: + description: The RFC 3339 timestamp at which the policy was last modified. + example: "2026-05-21T22:11:06.108696Z" + format: date-time + type: string + modified_by: + description: The identifier of the user who last modified the policy. + example: "test-user" + type: string + negated: + description: When `true`, the policy matches tag values that do NOT match any of the supplied patterns. + example: false + type: boolean + policy_name: + description: Human-readable name for the tag policy. + example: "Service tag must be one of api or web" + type: string + policy_type: + $ref: "#/components/schemas/TagPolicyType" + required: + description: When `true`, telemetry without this tag is treated as a violation. + example: true + type: boolean + scope: + description: The scope the policy applies within. + example: "env" + type: string + source: + $ref: "#/components/schemas/TagPolicySource" + tag_key: + description: The tag key that the policy governs. + example: "service" + type: string + tag_value_patterns: + description: The patterns that valid values for the tag key must match. + example: + - "api" + - "web" + items: + description: A pattern that valid tag values must match. + type: string + type: array + version: + description: A monotonically increasing version counter that is incremented on each update. + example: 1 + format: int64 + type: integer + required: + - policy_name + - source + - scope + - tag_key + - tag_value_patterns + - negated + - required + - enabled + - policy_type + - version + - created_at + - created_by + - modified_at + - modified_by + type: object + TagPolicyCreateAttributes: + description: Attributes that can be supplied when creating a tag policy. + properties: + enabled: + description: Whether the policy is currently enforced. Defaults to `true` for newly created policies. + example: true + type: boolean + negated: + description: When `true`, the policy matches tag values that do NOT match any of the supplied patterns. Defaults to `false`. + example: false + type: boolean + policy_name: + description: Human-readable name for the tag policy. + example: "Service tag must be one of api or web" + type: string + policy_type: + $ref: "#/components/schemas/TagPolicyCreateType" + required: + description: When `true`, telemetry without this tag is treated as a violation. Defaults to `false`. + example: true + type: boolean + scope: + description: |- + The scope the policy applies within. Typically an environment, team, or + organization-level identifier used to limit where the policy is enforced. + example: "env" + type: string + source: + $ref: "#/components/schemas/TagPolicySource" + tag_key: + description: The tag key that the policy governs (for example, `service`). + example: "service" + type: string + tag_value_patterns: + description: |- + One or more patterns that valid values for the tag key must match. At least one + pattern is required. + example: + - "api" + - "web" + items: + description: A pattern that valid tag values must match. + type: string + minItems: 1 + type: array + required: + - policy_name + - source + - scope + - tag_key + - tag_value_patterns + - policy_type + type: object + TagPolicyCreateData: + description: Data object for creating a tag policy. + properties: + attributes: + $ref: "#/components/schemas/TagPolicyCreateAttributes" + type: + $ref: "#/components/schemas/TagPolicyResourceType" + required: + - type + - attributes + type: object + TagPolicyCreateRequest: + description: Payload for creating a new tag policy. + properties: + data: + $ref: "#/components/schemas/TagPolicyCreateData" + required: + - data + type: object + TagPolicyCreateType: + description: |- + The policy type allowed when creating a tag policy. Only `surfacing` is accepted at + creation time. + enum: + - surfacing + example: "surfacing" + type: string + x-enum-varnames: + - SURFACING + TagPolicyData: + description: A tag policy resource. + properties: + attributes: + $ref: "#/components/schemas/TagPolicyAttributes" + id: + description: The unique identifier of the tag policy. + example: "123" + type: string + relationships: + $ref: "#/components/schemas/TagPolicyRelationships" + type: + $ref: "#/components/schemas/TagPolicyResourceType" + required: + - type + - id + - attributes + type: object + TagPolicyDataArray: + description: An array of tag policy data objects. + items: + $ref: "#/components/schemas/TagPolicyData" + type: array + TagPolicyInclude: + description: A related resource to include alongside a tag policy in the response. Currently the only supported value is `score`. + enum: + - score + example: "score" + type: string + x-enum-varnames: + - SCORE + TagPolicyIncludedResources: + description: Related resources fetched alongside the primary tag policies. Populated when an `include` query parameter is supplied. + items: + $ref: "#/components/schemas/TagPolicyScoreData" + type: array + TagPolicyRelationships: + description: Related resources for a tag policy. Only present when the corresponding `include` query parameter is supplied. + properties: + score: + $ref: "#/components/schemas/TagPolicyScoreRelationship" + type: object + TagPolicyResourceType: + description: JSON:API resource type for a tag policy. + enum: + - tag_policy + example: "tag_policy" + type: string + x-enum-varnames: + - TAG_POLICY + TagPolicyResponse: + description: A single tag policy. + properties: + data: + $ref: "#/components/schemas/TagPolicyData" + included: + $ref: "#/components/schemas/TagPolicyIncludedResources" + required: + - data + type: object + TagPolicyScoreAttributes: + description: Attributes of a tag policy compliance score. + properties: + score: + description: |- + The compliance score for the policy over the requested time window, as a percentage + between 0 and 100. `null` indicates that no relevant telemetry was found. + example: 80 + format: double + nullable: true + type: number + ts_end: + description: End of the time window the score was computed over, as a Unix timestamp in milliseconds. + example: 1779401466097 + format: int64 + type: integer + ts_start: + description: Start of the time window the score was computed over, as a Unix timestamp in milliseconds. + example: 1779315066097 + format: int64 + type: integer + version: + description: The version of the tag policy that the score was computed against. + example: 1 + format: int64 + type: integer + required: + - score + - ts_start + - ts_end + - version + type: object + TagPolicyScoreData: + description: A compliance score resource for a tag policy. + properties: + attributes: + $ref: "#/components/schemas/TagPolicyScoreAttributes" + id: + description: The unique identifier of the compliance score resource. + example: "123-v1-1779315066097-1779401466097" + type: string + type: + $ref: "#/components/schemas/TagPolicyScoreResourceType" + required: + - type + - id + - attributes + type: object + TagPolicyScoreRelationship: + description: A relationship to the compliance score resource for this policy. + properties: + data: + $ref: "#/components/schemas/TagPolicyScoreRelationshipData" + required: + - data + type: object + TagPolicyScoreRelationshipData: + description: Identifier of the related compliance score resource. + properties: + id: + description: The unique identifier of the related compliance score resource. + example: "123-v1-1779315066097-1779401466097" + type: string + type: + $ref: "#/components/schemas/TagPolicyScoreResourceType" + required: + - type + - id + type: object + TagPolicyScoreResourceType: + description: JSON:API resource type for a tag policy compliance score. + enum: + - tag_policy_score + example: "tag_policy_score" + type: string + x-enum-varnames: + - TAG_POLICY_SCORE + TagPolicyScoreResponse: + description: A tag policy compliance score. + properties: + data: + $ref: "#/components/schemas/TagPolicyScoreData" + required: + - data + type: object + TagPolicySource: + description: The telemetry source that a tag policy applies to. + enum: + - logs + - spans + - metrics + - rum + - feed + example: "logs" + type: string + x-enum-varnames: + - LOGS + - SPANS + - METRICS + - RUM + - FEED + TagPolicyType: + description: |- + How the policy is enforced. `blocking` rejects telemetry that violates the policy. + `surfacing` only highlights non-compliant telemetry without blocking it. + enum: + - blocking + - surfacing + example: "surfacing" + type: string + x-enum-varnames: + - BLOCKING + - SURFACING + TagPolicyUpdateAttributes: + description: |- + Mutable attributes of a tag policy. Each field is optional; omitting a field leaves its + current value unchanged. The `source` of a policy cannot be changed. + properties: + enabled: + description: Whether the policy is currently enforced. + type: boolean + negated: + description: When `true`, the policy matches tag values that do NOT match any of the supplied patterns. + type: boolean + policy_name: + description: Human-readable name for the tag policy. + type: string + policy_type: + $ref: "#/components/schemas/TagPolicyType" + required: + description: When `true`, telemetry without this tag is treated as a violation. + type: boolean + scope: + description: The scope the policy applies within. + type: string + tag_key: + description: The tag key that the policy governs. + type: string + tag_value_patterns: + description: One or more patterns that valid values for the tag key must match. + items: + description: A pattern that valid tag values must match. + type: string + type: array + type: object + TagPolicyUpdateData: + description: Data object for updating a tag policy. + properties: + attributes: + $ref: "#/components/schemas/TagPolicyUpdateAttributes" + id: + description: The unique identifier of the tag policy being updated. + example: "123" + type: string + type: + $ref: "#/components/schemas/TagPolicyResourceType" + required: + - type + - id + type: object + TagPolicyUpdateRequest: + description: Payload for updating an existing tag policy. Only the supplied fields are modified. + properties: + data: + $ref: "#/components/schemas/TagPolicyUpdateData" + required: + - data + type: object TagsEventAttribute: description: Array of tags associated with your event. example: ["team:A"] @@ -97325,6 +102633,38 @@ components: - id - success type: object + UpdateFormData: + description: The data for updating a form. + properties: + attributes: + $ref: "#/components/schemas/UpdateFormDataAttributes" + id: + description: The ID of the form. + example: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + format: uuid + type: string + type: + $ref: "#/components/schemas/FormType" + required: + - type + - attributes + type: object + UpdateFormDataAttributes: + description: The attributes for updating a form. + properties: + form_update: + $ref: "#/components/schemas/FormUpdateAttributes" + required: + - form_update + type: object + UpdateFormRequest: + description: A request to update a form. + properties: + data: + $ref: "#/components/schemas/UpdateFormData" + required: + - data + type: object UpdateOnCallNotificationRuleRequest: description: A top-level wrapper for updating a notification rule for a user example: @@ -98037,6 +103377,49 @@ components: - key - type type: object + UpsertAndPublishFormVersionData: + description: The data for upserting and publishing a form version. + properties: + attributes: + $ref: "#/components/schemas/UpsertAndPublishFormVersionDataAttributes" + type: + $ref: "#/components/schemas/FormVersionType" + required: + - type + - attributes + type: object + UpsertAndPublishFormVersionDataAttributes: + description: The attributes for upserting and publishing a form version. + properties: + data_definition: + $ref: "#/components/schemas/FormDataDefinition" + ui_definition: + $ref: "#/components/schemas/FormUiDefinition" + upsert_params: + $ref: "#/components/schemas/UpsertAndPublishFormVersionUpsertParams" + required: + - data_definition + - ui_definition + - upsert_params + type: object + UpsertAndPublishFormVersionRequest: + description: A request to upsert and publish a form version in a single transaction. + properties: + data: + $ref: "#/components/schemas/UpsertAndPublishFormVersionData" + required: + - data + type: object + UpsertAndPublishFormVersionUpsertParams: + description: Concurrency control parameters for the upsert and publish operation. + properties: + etag: + description: The ETag of the latest version used for optimistic concurrency control. + example: b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d + type: string + required: + - etag + type: object UpsertCatalogEntityRequest: description: Create or update entity request. oneOf: @@ -98107,6 +103490,59 @@ components: - id - attributes type: object + UpsertFormVersionData: + description: The data for creating or updating a form version. + properties: + attributes: + $ref: "#/components/schemas/UpsertFormVersionDataAttributes" + type: + $ref: "#/components/schemas/FormVersionType" + required: + - type + - attributes + type: object + UpsertFormVersionDataAttributes: + description: The attributes for creating or updating a form version. + properties: + data_definition: + $ref: "#/components/schemas/FormDataDefinition" + state: + $ref: "#/components/schemas/FormVersionState" + ui_definition: + $ref: "#/components/schemas/FormUiDefinition" + upsert_params: + $ref: "#/components/schemas/UpsertFormVersionUpsertParams" + required: + - state + - data_definition + - ui_definition + - upsert_params + type: object + UpsertFormVersionRequest: + description: A request to create or update a form version. + properties: + data: + $ref: "#/components/schemas/UpsertFormVersionData" + required: + - data + type: object + UpsertFormVersionUpsertParams: + description: Concurrency control parameters for the form version upsert operation. + properties: + etag: + description: The ETag of the latest version. Required when `match_policy` is `if_etag_match`. + example: b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d + nullable: true + type: string + insert_only: + description: If true, only a new version may be inserted; updating the current draft is not allowed. + example: false + type: boolean + match_policy: + $ref: "#/components/schemas/LatestVersionMatchPolicy" + required: + - match_policy + type: object UpsertOAuthScopesRestrictionData: description: Data object of an upsert OAuth2 scopes restriction request. properties: @@ -101348,165 +106784,6 @@ paths: x-unstable: |- This endpoint is in Preview and may introduce breaking changes. If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). - /api/unstable/fleet/clusters: - get: - description: |- - Retrieve a paginated list of Kubernetes clusters in the fleet. - - This endpoint returns clusters with metadata including node counts, agent versions, - enabled products, and associated services. Use the `page_number` and `page_size` - query parameters to paginate through results. - operationId: ListFleetClusters - parameters: - - description: Page number for pagination (starts at 0). - in: query - name: page_number - required: false - schema: - default: 0 - format: int64 - minimum: 0 - type: integer - - description: Number of results per page (must be greater than 0 and less than or equal to 100). - in: query - name: page_size - required: false - schema: - default: 10 - format: int64 - maximum: 100 - minimum: 1 - type: integer - - description: Attribute to sort by. - in: query - name: sort_attribute - required: false - schema: - type: string - - description: Sort order (true for descending, false for ascending). - in: query - name: sort_descending - required: false - schema: - type: boolean - - description: Filter string for narrowing down cluster results. - example: "cluster_name:production" - in: query - name: filter - required: false - schema: - type: string - - description: Comma-separated list of tags to filter clusters. - in: query - name: tags - required: false - schema: - type: string - responses: - "200": - content: - application/json: - examples: - default: - value: - data: - attributes: - clusters: - - agent_versions: - - "7.50.0" - cluster_name: production-us-east-1 - enabled_products: - - apm - node_count: 25 - id: done - type: status - meta: - total_filtered_count: 1 - schema: - $ref: "#/components/schemas/FleetClustersResponse" - description: OK - "400": - $ref: "#/components/responses/BadRequestResponse" - "401": - $ref: "#/components/responses/UnauthorizedResponse" - "403": - $ref: "#/components/responses/ForbiddenResponse" - "404": - $ref: "#/components/responses/NotFoundResponse" - "429": - $ref: "#/components/responses/TooManyRequestsResponse" - security: - - apiKeyAuth: [] - appKeyAuth: [] - summary: List all fleet clusters - tags: - - Fleet Automation - "x-permission": - operator: AND - permissions: - - hosts_read - x-unstable: |- - This endpoint is in Preview and may introduce breaking changes. - If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). - /api/unstable/fleet/clusters/{cluster_name}/instrumented_pods: - get: - description: |- - Retrieve the list of pods targeted for Single Step Instrumentation (SSI) injection - in a specific Kubernetes cluster. - - This endpoint returns pod groups organized by owner reference (deployment, statefulset, etc.) - with their injection annotations and applied targets. Use the clusters list endpoint - to discover available cluster names. - operationId: ListFleetInstrumentedPods - parameters: - - description: The name of the Kubernetes cluster. - in: path - name: cluster_name - required: true - schema: - type: string - responses: - "200": - content: - application/json: - examples: - default: - value: - data: - attributes: - groups: - - kube_ownerref_kind: Deployment - kube_ownerref_name: inventory-service - namespace: default - pod_count: 3 - id: production-us-east-1 - type: cluster_name - schema: - $ref: "#/components/schemas/FleetInstrumentedPodsResponse" - description: OK - "400": - $ref: "#/components/responses/BadRequestResponse" - "401": - $ref: "#/components/responses/UnauthorizedResponse" - "403": - $ref: "#/components/responses/ForbiddenResponse" - "404": - $ref: "#/components/responses/NotFoundResponse" - "429": - $ref: "#/components/responses/TooManyRequestsResponse" - security: - - apiKeyAuth: [] - appKeyAuth: [] - summary: List instrumented pods for a cluster - tags: - - Fleet Automation - "x-permission": - operator: AND - permissions: - - hosts_read - x-unstable: |- - This endpoint is in Preview and may introduce breaking changes. - If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/unstable/fleet/deployments: get: description: |- @@ -107424,6 +112701,7 @@ paths: - $ref: "#/components/parameters/ApplicationKeyFilterParameter" - $ref: "#/components/parameters/ApplicationKeyFilterCreatedAtStartParameter" - $ref: "#/components/parameters/ApplicationKeyFilterCreatedAtEndParameter" + - $ref: "#/components/parameters/ApplicationKeyFilterOwnedByParameter" - $ref: "#/components/parameters/ApplicationKeyIncludeParameter" responses: "200": @@ -108539,6 +113817,7 @@ paths: name: limit required: false schema: + format: int64 type: integer responses: "200": @@ -111683,6 +116962,7 @@ paths: required: false schema: default: 100 + format: int64 type: integer - description: Zero-based page number for pagination. in: query @@ -111690,6 +116970,7 @@ paths: required: false schema: default: 0 + format: int64 type: integer - description: "If `true`, returns timeline cells in chronological order (oldest first). Defaults to `false` (newest first)." in: query @@ -114905,6 +120186,7 @@ paths: required: false schema: example: 200 + format: int64 type: integer - description: Pagination offset. Defaults to `0`. in: query @@ -114912,6 +120194,7 @@ paths: required: false schema: example: 0 + format: int64 type: integer - description: Optional repeated cloud or SaaS provider filters, such as `aws`, `gcp`, `azure`, `Oracle`, `datadog`, `OpenAI`, or `Anthropic`. explode: true @@ -118246,6 +123529,11 @@ paths: name: filter[provider] schema: type: string + - description: Filter results to tag keys that have data for a specific Cloud Cost Management metric (for example, `aws.cost.net.amortized`). When omitted, all tag keys for the requested period are returned. + in: query + name: filter[metric] + schema: + type: string responses: "200": content: @@ -118789,6 +124077,863 @@ paths: $ref: "#/components/responses/TooManyRequestsResponse" summary: Get all CSM Serverless Agents tags: ["CSM Agents"] + /api/v2/csm/ownership/{resource_id}: + get: + description: Get all current ownership inferences for a resource, one per owner type (`user`, `team`, `service`, `unknown`). + operationId: ListOwnershipInferences + parameters: + - description: The identifier of the resource to retrieve ownership inferences for. + in: path + name: resource_id + required: true + schema: + example: test-resource + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + items: + - checksum: abc123 + confidence: "0.9500" + created_at: "2026-01-15T10:00:00Z" + evidence_versions: + - pipeline_id: p1 + explanation: High confidence match + id: test-resource:team + owner_type: team + primary_contact_ref: ref:handle/team-a + sources: [] + status: suggested + updated_at: "2026-01-15T10:00:00Z" + id: test-resource + type: ownership_inferences + schema: + $ref: "#/components/schemas/OwnershipInferenceListResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List ownership inferences for a resource + tags: ["CSM Ownership"] + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/ownership/{resource_id}/history: + get: + description: List inference history entries for a resource across all owner types, ordered from most recent to oldest. Uses cursor-based pagination. + operationId: ListOwnershipHistory + parameters: + - description: The identifier of the resource to retrieve inference history for. + in: path + name: resource_id + required: true + schema: + example: res-1 + type: string + - description: An opaque, base64-encoded cursor token returned by a previous call in `pagination.next_cursor`. Omit to fetch the first page. + in: query + name: cursor + required: false + schema: + example: eyJpZCI6OTh9 + type: string + - description: The maximum number of history entries to return per page. + in: query + name: limit + required: false + schema: + default: 25 + example: 25 + format: int32 + maximum: 100 + minimum: 1 + type: integer + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + items: + - checksum: "" + confidence: "0.9000" + created_at: "2026-01-15T10:00:00Z" + evidence_versions: + explanation: "" + failed_at: + failure_reason: + id: 100 + owner_type: team + primary_contact_ref: ref:handle/team-a + resource_id: res-1 + retry_schedule: + sources: [] + status: suggested + pagination: + has_more: false + next_cursor: + id: res-1 + type: ownership_history + schema: + $ref: "#/components/schemas/OwnershipHistoryResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List ownership inference history for a resource + tags: ["CSM Ownership"] + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/ownership/{resource_id}/{owner_type}: + get: + description: |- + Get the current ownership inference for a resource for a specific owner type. + + This endpoint supports ETag-based caching. Pass the previously returned `ETag` value in the `If-None-Match` request header to receive a `304 Not Modified` response when the inference has not changed. + operationId: GetOwnershipInference + parameters: + - description: The identifier of the resource to retrieve the ownership inference for. + in: path + name: resource_id + required: true + schema: + example: test-resource + type: string + - description: The owner type of the inference to retrieve. + in: path + name: owner_type + required: true + schema: + $ref: "#/components/schemas/OwnershipOwnerType" + - description: A previously returned `ETag` value. When supplied and the resource has not changed, the endpoint returns `304 Not Modified`. + in: header + name: If-None-Match + required: false + schema: + example: '"abc123"' + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + checksum: abc123 + confidence: "0.9500" + created_at: "2026-01-15T10:00:00Z" + evidence_versions: + - pipeline_id: p1 + explanation: High confidence match + owner_type: team + primary_contact_ref: ref:handle/team-a + sources: [] + status: suggested + updated_at: "2026-01-15T10:00:00Z" + id: test-resource:team + type: ownership_inference + schema: + $ref: "#/components/schemas/OwnershipInferenceResponse" + description: OK + headers: + Cache-Control: + description: The cache control directives applied to the response. + schema: + example: private, max-age=60 + type: string + ETag: + description: A strong validator that identifies the current state of the inference. + schema: + example: '"abc123"' + type: string + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get an ownership inference by owner type + tags: ["CSM Ownership"] + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/ownership/{resource_id}/{owner_type}/evidence: + get: + description: |- + Get the evidence versions backing the current ownership inference for a resource and owner type. + + This endpoint supports weak ETag caching. Pass the previously returned `ETag` value in the `If-None-Match` request header to receive a `304 Not Modified` response when the evidence has not changed. + operationId: GetOwnershipEvidence + parameters: + - description: The identifier of the resource to retrieve evidence for. + in: path + name: resource_id + required: true + schema: + example: test-resource + type: string + - description: The owner type of the inference to retrieve evidence for. + in: path + name: owner_type + required: true + schema: + $ref: "#/components/schemas/OwnershipOwnerType" + - description: A previously returned weak `ETag` value. When supplied and the evidence has not changed, the endpoint returns `304 Not Modified`. + in: header + name: If-None-Match + required: false + schema: + example: W/"f2e126916327bda8" + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + evidence_versions: + - pipeline_id: p1 + version: v3 + id: test-resource + type: ownership_evidence + schema: + $ref: "#/components/schemas/OwnershipEvidenceResponse" + description: OK + headers: + ETag: + description: A weak validator that identifies the current state of the evidence. + schema: + example: W/"f2e126916327bda8" + type: string + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get the evidence for an ownership inference + tags: ["CSM Ownership"] + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/ownership/{resource_id}/{owner_type}/feedback: + post: + description: |- + Submit feedback on the current ownership inference for a resource and owner type. Valid actions are `confirm`, `reject`, `correct`, and `persist`. + + The request must include the current inference `checksum` in `inference_checksum`. If the checksum does not match the current inference state, the endpoint returns `409 Conflict`. + + When `action` is `correct`, `corrected_owner_handle` and `corrected_owner_type` are required. + operationId: CreateOwnershipFeedback + parameters: + - description: The identifier of the resource that the feedback applies to. + in: path + name: resource_id + required: true + schema: + example: res-1 + type: string + - description: The type of owner that the feedback applies to. + in: path + name: owner_type + required: true + schema: + $ref: "#/components/schemas/OwnershipOwnerType" + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + action: confirm + actor_handle: user@example.com + actor_type: user + inference_checksum: abc123 + type: ownership_feedback + schema: + $ref: "#/components/schemas/OwnershipFeedbackRequest" + required: true + responses: + "201": + content: + application/json: + examples: + default: + value: + data: + attributes: + action: confirm + checksum: abc123 + new_status: suggested + owner_type: team + previous_status: suggested + primary_contact_ref: ref:handle/team-a + updated_at: "2026-01-15T10:00:00Z" + id: res-1 + type: ownership_feedback_result + schema: + $ref: "#/components/schemas/OwnershipFeedbackResponse" + description: Created + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/OwnershipInferenceResponse" + description: Conflict + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Submit feedback on an ownership inference + tags: ["CSM Ownership"] + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/ownership/{resource_id}/{owner_type}/history: + get: + description: List inference history entries for a resource filtered by owner type, ordered from most recent to oldest. Uses cursor-based pagination. + operationId: ListOwnershipHistoryByOwnerType + parameters: + - description: The identifier of the resource to retrieve inference history for. + in: path + name: resource_id + required: true + schema: + example: res-1 + type: string + - description: The owner type to filter history by. + in: path + name: owner_type + required: true + schema: + $ref: "#/components/schemas/OwnershipOwnerType" + - description: An opaque, base64-encoded cursor token returned by a previous call in `pagination.next_cursor`. Omit to fetch the first page. + in: query + name: cursor + required: false + schema: + example: eyJpZCI6OTh9 + type: string + - description: The maximum number of history entries to return per page. + in: query + name: limit + required: false + schema: + default: 25 + example: 25 + format: int32 + maximum: 100 + minimum: 1 + type: integer + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + items: + - checksum: "" + confidence: "0.9000" + created_at: "2026-01-15T10:00:00Z" + evidence_versions: + explanation: "" + failed_at: + failure_reason: + id: 100 + owner_type: team + primary_contact_ref: ref:handle/team-a + resource_id: res-1 + retry_schedule: + sources: [] + status: suggested + pagination: + has_more: false + next_cursor: + id: res-1 + type: ownership_history + schema: + $ref: "#/components/schemas/OwnershipHistoryResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List ownership history by owner type + tags: ["CSM Ownership"] + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/settings/agentless_hosts: + get: + description: Get the list of agentless hosts for CSM, with optional pagination and filtering. + operationId: ListCSMAgentlessHosts + parameters: + - description: The page index for pagination (zero-based). + in: query + name: page + required: false + schema: + default: 0 + example: 0 + format: int32 + maximum: 1000000 + minimum: 0 + type: integer + - description: The number of agentless hosts to return per page. + in: query + name: size + required: false + schema: + default: 10 + example: 10 + format: int32 + maximum: 100 + minimum: 1 + type: integer + - description: A search query string to filter agentless hosts. + in: query + name: query + required: false + schema: + example: "cloud_provider:aws" + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + account_id: "123456789012" + cloud_provider: aws + has_posture_management: true + has_vulnerability_scanning: true + resource_type: aws_ec2_instance + id: i-0123456789abcdef0 + type: agentless_host + meta: + page_index: 0 + page_size: 10 + total_filtered: 1 + schema: + $ref: "#/components/schemas/CsmAgentlessHostsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List agentless hosts + tags: ["CSM Settings"] + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/settings/agentless_hosts/facet_info: + get: + description: Get the value distribution for a specific agentless host facet, with optional search and filtering. + operationId: GetCSMAgentlessHostFacetInfo + parameters: + - description: The facet identifier to retrieve value distribution for. Valid values are `resource_name`, `account_id`, `resource_type`, `cloud_provider`, `has_vulnerability_scanning`, and `has_posture_management`. + in: query + name: facet + required: true + schema: + example: cloud_provider + type: string + - description: A search string to filter the facet values. + in: query + name: search + required: false + schema: + example: aws + type: string + - description: A filter query to scope the facet value counts. + in: query + name: query + required: false + schema: + example: "cloud_provider:aws" + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + items: + - count: 100 + value: aws + - count: 50 + value: gcp + id: cloud_provider + meta: + total_count: 2 + type: facet_info + schema: + $ref: "#/components/schemas/CsmHostFacetInfoResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get agentless host facet info + tags: ["CSM Settings"] + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/settings/agentless_hosts/facets: + get: + description: Get the list of available facets for filtering agentless hosts. + operationId: ListCSMAgentlessHostFacets + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + bounded: true + bundled: true + bundledAndUsed: true + defaultValues: [] + description: The cloud provider of the resource. + editable: false + facetType: list + groups: + - agentless + name: Cloud Provider + path: cloud_provider + source: core + type: string + values: + - aws + - gcp + - azure + - oci + id: cloud_provider + type: agentless_host_facet + schema: + $ref: "#/components/schemas/CsmAgentlessHostFacetsResponse" + description: OK + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List agentless host facets + tags: ["CSM Settings"] + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/settings/hosts: + get: + description: Get the list of unified hosts for CSM, combining agent and agentless host data, with optional pagination and filtering. + operationId: ListCSMUnifiedHosts + parameters: + - description: The page index for pagination (zero-based). + in: query + name: page + required: false + schema: + default: 0 + example: 0 + format: int32 + maximum: 1000000 + minimum: 0 + type: integer + - description: The number of hosts to return per page. + in: query + name: size + required: false + schema: + default: 10 + example: 10 + format: int32 + maximum: 100 + minimum: 1 + type: integer + - description: A search query string to filter unified hosts. + in: query + name: query + required: false + schema: + example: "source:agent" + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + agent_cws_enabled: false + agent_posture_management: true + agent_version: 7.50.0 + datadog_agent_key: key123 + os: linux + source: agent + id: agent-host + type: unified_host + - attributes: + account_id: "123456789012" + agentless_posture_management: true + agentless_vulnerability_scanning: true + cloud_provider: aws + resource_type: aws_ec2_instance + source: agentless + id: i-0123456789abcdef0 + type: unified_host + meta: + page_index: 0 + page_size: 10 + total_filtered: 2 + total_pages: 1 + schema: + $ref: "#/components/schemas/CsmUnifiedHostsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List unified hosts + tags: ["CSM Settings"] + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/settings/hosts/facet_info: + get: + description: Get the value distribution for a specific unified host facet, with optional search and filtering. + operationId: GetCSMUnifiedHostFacetInfo + parameters: + - description: The facet identifier to retrieve value distribution for. Valid values include `resource_name`, `account_id`, `resource_type`, `cloud_provider`, `agentless_vulnerability_scanning`, `agentless_posture_management`, `hostname`, `agent_version`, `os`, `cluster_name`, `agent_posture_management`, `agent_cws_enabled`, `agent_csm_vm_hosts_enabled`, and `agent_csm_vm_containers_enabled`. + in: query + name: facet + required: true + schema: + example: cloud_provider + type: string + - description: A search string to filter the facet values. + in: query + name: search + required: false + schema: + example: aws + type: string + - description: A filter query to scope the facet value counts. + in: query + name: query + required: false + schema: + example: "cloud_provider:aws" + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + items: + - count: 100 + value: aws + - count: 50 + value: gcp + id: cloud_provider + meta: + total_count: 2 + type: facet_info + schema: + $ref: "#/components/schemas/CsmHostFacetInfoResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get unified host facet info + tags: ["CSM Settings"] + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/csm/settings/hosts/facets: + get: + description: Get the list of available facets for filtering unified hosts. + operationId: ListCSMUnifiedHostFacets + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + bounded: true + bundled: true + bundledAndUsed: true + defaultValues: [] + description: The cloud provider of the resource. + editable: false + facetType: list + groups: + - hosts + name: Cloud Provider + path: cloud_provider + source: core + type: string + values: + - aws + - gcp + - azure + - oci + id: cloud_provider + type: unified_host_facet + schema: + $ref: "#/components/schemas/CsmUnifiedHostFacetsResponse" + description: OK + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List unified host facets + tags: ["CSM Settings"] + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/current_user: get: description: |- @@ -119422,6 +125567,95 @@ paths: tags: - Dashboard Lists x-codegen-request-body-name: body + /api/v2/dashboard/{dashboard_id}/shared: + get: + description: Retrieve shared dashboards associated with the specified dashboard. + operationId: ListSharedDashboardsByDashboardId + parameters: + - $ref: "#/components/parameters/SharedDashboardDashboardIDPathParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + created_at: "2026-01-01T00:00:00.000Z" + embeddable_domains: [] + expiration: + global_time: + live_span: 1h + global_time_selectable: false + invitees: + - access_expiration: + created_at: "2026-01-01T00:00:00.000Z" + email: jane.doe@example.com + last_accessed: + selectable_template_vars: [] + share_type: invite + sharer_disabled: false + status: active + title: Q1 Metrics Dashboard + token: abc-123-token + url: https://p.datadoghq.com/sb/abc-123-token + viewing_preferences: + high_density: false + theme: system + id: "12345" + relationships: + dashboard: + data: + id: abc-def-ghi + type: dashboard + sharer: + data: + id: 00000000-0000-0000-0000-000000000000 + type: user + type: shared_dashboard + included: + - attributes: + title: Q1 Metrics Dashboard + id: abc-def-ghi + type: dashboard + - attributes: + handle: jane.doe@example.com + name: Jane Doe + id: 00000000-0000-0000-0000-000000000000 + type: user + schema: + $ref: "#/components/schemas/ListSharedDashboardsResponse" + description: OK + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Dashboard Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - dashboards_read + summary: List shared dashboards for a dashboard + tags: + - Dashboard Sharing + "x-permission": + operator: OR + permissions: + - dashboards_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/). /api/v2/dashboard/{dashboard_id}/shared/secure-embed: post: description: >- @@ -119874,6 +126108,105 @@ 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/data-observability/monitors/runs/{run_id}/status: + get: + description: Retrieves the current status of a data observability monitor run. Poll this endpoint after triggering a run to determine when evaluation is complete. + operationId: GetDataObservabilityMonitorRunStatus + parameters: + - description: The ID of the monitor run to retrieve status for. + example: "abc123def456" + in: path + name: run_id + required: true + schema: + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + status: ok + id: "abc123def456" + type: monitor_run + schema: + $ref: "#/components/schemas/GetDataObservabilityMonitorRunStatusResponse" + description: OK + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - data_observability_monitors_write + - monitors_write + summary: Get data observability monitor run status + tags: + - Data Observability + 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/data-observability/monitors/{monitor_id}/run: + post: + description: Manually triggers a run for a data observability monitor. Only monitors that are not scheduled (manually-runnable) can be triggered this way. + operationId: RunDataObservabilityMonitor + parameters: + - description: The ID of the data observability monitor to run. + example: 12345 + in: path + name: monitor_id + required: true + schema: + format: int64 + type: integer + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + id: "abc123def456" + type: monitor_run + schema: + $ref: "#/components/schemas/RunDataObservabilityMonitorResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - data_observability_monitors_write + - monitors_write + summary: Run a data observability monitor + tags: + - Data Observability + 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/datasets: get: description: Get all datasets that have been configured for an organization. @@ -122865,6 +129198,7 @@ paths: name: limit schema: default: 100 + format: int64 maximum: 1000 minimum: 1 type: integer @@ -122874,6 +129208,7 @@ paths: name: offset schema: default: 0 + format: int64 minimum: 0 type: integer responses: @@ -123017,6 +129352,7 @@ paths: name: limit schema: default: 100 + format: int64 maximum: 1000 minimum: 1 type: integer @@ -123026,6 +129362,7 @@ paths: name: offset schema: default: 0 + format: int64 minimum: 0 type: integer responses: @@ -124130,6 +130467,829 @@ paths: permissions: - feature_flag_config_write - feature_flag_environment_config_read + /api/v2/forms: + get: + description: Get all forms for the authenticated user's organization. + operationId: ListForms + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + active: true + anonymous: false + created_at: "2026-05-29T20:06:14.895284Z" + datastore_config: + datastore_id: 00000000-0000-0000-0000-000000000000 + primary_column_name: "" + primary_key_generation_strategy: "" + description: A form to collect user feedback. + end_date: + idp_survey: false + modified_at: "2026-05-29T20:06:14.895285Z" + name: User Feedback Form + org_id: 2 + self_service: false + single_response: false + user_id: 10001 + user_uuid: 1fc709aa-be19-4539-a47d-52a30d78a978 + id: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + type: forms + schema: + $ref: "#/components/schemas/FormsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List forms + tags: + - Forms + 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 a new form. The form is created in draft mode and must be published before it can be used. This also creates a new datastore for form responses and links it to the form. + operationId: CreateForm + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + anonymous: false + data_definition: {} + description: A form to collect user feedback. + idp_survey: false + name: User Feedback Form + single_response: false + ui_definition: {} + type: forms + schema: + $ref: "#/components/schemas/CreateFormRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + active: true + anonymous: false + created_at: "2026-05-29T20:06:14.895284Z" + datastore_config: + datastore_id: 5108ea24-dd83-4696-9caa-f069f73d0fad + primary_column_name: id + primary_key_generation_strategy: none + description: A form to collect user feedback. + end_date: + idp_survey: false + modified_at: "2026-05-29T20:06:14.895285Z" + name: User Feedback Form + org_id: 2 + self_service: false + single_response: false + user_id: 10001 + user_uuid: 1fc709aa-be19-4539-a47d-52a30d78a978 + id: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + type: forms + schema: + $ref: "#/components/schemas/FormResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Create a form + tags: + - Forms + 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/forms/create_and_publish: + post: + description: Creates a new form and immediately publishes its initial version. This also creates a new datastore for form responses and links it to the form. + operationId: CreateAndPublishForm + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + anonymous: false + data_definition: {} + description: A form to collect user feedback. + idp_survey: false + name: User Feedback Form + single_response: false + ui_definition: {} + type: forms + schema: + $ref: "#/components/schemas/CreateFormRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + active: true + anonymous: false + created_at: "2026-05-29T20:06:14.895284Z" + datastore_config: + datastore_id: 5108ea24-dd83-4696-9caa-f069f73d0fad + primary_column_name: id + primary_key_generation_strategy: none + description: A form to collect user feedback. + end_date: + idp_survey: false + modified_at: "2026-05-29T20:06:14.895285Z" + name: User Feedback Form + org_id: 2 + self_service: false + single_response: false + user_id: 10001 + user_uuid: 1fc709aa-be19-4539-a47d-52a30d78a978 + id: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + type: forms + schema: + $ref: "#/components/schemas/FormResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Create and publish a form + tags: + - Forms + 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/forms/{form_id}: + delete: + description: Delete a form by its ID. This will also try to delete the associated datastore. + operationId: DeleteForm + parameters: + - description: The ID of the form. + example: 844dfd88-aa84-4db4-8979-e7bdbb9c1dc3 + in: path + name: form_id + required: true + schema: + format: uuid + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + id: 844dfd88-aa84-4db4-8979-e7bdbb9c1dc3 + type: forms + schema: + $ref: "#/components/schemas/DeleteFormResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Delete a form + tags: + - Forms + 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 a form definition by its ID. + operationId: GetForm + parameters: + - description: The ID of the form. + example: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + in: path + name: form_id + required: true + schema: + format: uuid + type: string + - description: The version of the form to retrieve. Use 'latest' for the most recent draft, 'published' for the last published version, or a specific version number. + in: query + name: version + required: false + schema: + default: latest + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + active: true + anonymous: false + created_at: "2026-05-29T20:06:14.895284Z" + datastore_config: + datastore_id: 5108ea24-dd83-4696-9caa-f069f73d0fad + primary_column_name: id + primary_key_generation_strategy: none + description: A form to collect user feedback. + end_date: + idp_survey: false + modified_at: "2026-05-29T20:06:14.895285Z" + name: User Feedback Form + org_id: 2 + self_service: false + single_response: false + user_id: 10001 + user_uuid: 1fc709aa-be19-4539-a47d-52a30d78a978 + id: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + type: forms + schema: + $ref: "#/components/schemas/FormResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get a form + tags: + - Forms + 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 a form's properties such as its name, description, or datastore configuration. + operationId: UpdateForm + parameters: + - description: The ID of the form. + example: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + in: path + name: form_id + required: true + schema: + format: uuid + type: string + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + form_update: + description: An updated description. + name: Updated Form Name + type: forms + schema: + $ref: "#/components/schemas/UpdateFormRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + active: true + anonymous: false + created_at: "2026-05-29T20:06:14.895284Z" + datastore_config: + datastore_id: 5108ea24-dd83-4696-9caa-f069f73d0fad + primary_column_name: id + primary_key_generation_strategy: none + description: An updated description. + end_date: + idp_survey: false + modified_at: "2026-05-29T20:06:15.000000Z" + name: Updated Form Name + org_id: 2 + self_service: false + single_response: false + user_id: 10001 + user_uuid: 1fc709aa-be19-4539-a47d-52a30d78a978 + id: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + type: forms + schema: + $ref: "#/components/schemas/FormResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Update a form + tags: + - Forms + 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/forms/{form_id}/clone: + post: + description: Clone an existing form. The clone is created in draft mode using the source form's latest version. + operationId: CloneForm + parameters: + - description: The ID of the form to clone. + example: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + in: path + name: form_id + required: true + schema: + format: uuid + type: string + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + name: Copy of My Form + type: forms + schema: + $ref: "#/components/schemas/CloneFormRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + active: true + anonymous: false + created_at: "2026-05-30T10:00:00.000000Z" + datastore_config: + datastore_id: a2b3c4d5-e6f7-8901-2345-6789abcdef01 + primary_column_name: id + primary_key_generation_strategy: none + description: A form to collect user feedback. + end_date: + idp_survey: false + modified_at: "2026-05-30T10:00:00.000000Z" + name: Copy of My Form + org_id: 2 + self_service: false + single_response: false + user_id: 10001 + user_uuid: 1fc709aa-be19-4539-a47d-52a30d78a978 + id: 7a1e9054-5f6a-4b08-9e3d-c2f189a3bce0 + type: forms + schema: + $ref: "#/components/schemas/FormResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Clone a form + tags: + - Forms + 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/forms/{form_id}/publish: + post: + description: Publish a specific version of a form, making it available for submissions. + operationId: PublishForm + parameters: + - description: The ID of the form. + example: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + in: path + name: form_id + required: true + schema: + format: uuid + type: string + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + version: 1 + type: form_publications + schema: + $ref: "#/components/schemas/PublishFormRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2026-05-29T20:06:13.677353Z" + form_id: afc67600-0511-43b1-9b18-578fb4979bd3 + form_version: 1 + id: "42" + modified_at: "2026-05-29T20:06:13.677353Z" + org_id: 2 + publish_seq: 1 + user_id: 10001 + user_uuid: 1fc709aa-be19-4539-a47d-52a30d78a978 + id: "42" + type: form_publications + schema: + $ref: "#/components/schemas/FormPublicationResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Publish a form version + tags: + - Forms + 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/forms/{form_id}/versions: + post: + description: |- + Create or update the latest draft version of a form. The `upsert_params` field controls + optimistic concurrency behavior. + operationId: UpsertFormVersion + parameters: + - description: The ID of the form. + example: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + in: path + name: form_id + required: true + schema: + format: uuid + type: string + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + data_definition: {} + state: draft + ui_definition: {} + upsert_params: + match_policy: none + type: form_versions + schema: + $ref: "#/components/schemas/UpsertFormVersionRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2026-05-29T20:06:14.895921Z" + data_definition: + $ref: "#/components/schemas/FormDataDefinition" + definition_signature: '{"signature":"b7f312957a80cea2c8c9950532b205a90a3f8a7ebb7e52fc25437a25d903d545","version":1}' + etag: b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d + modified_at: "2026-05-29T20:06:14.949163Z" + state: draft + ui_definition: {} + user_id: 10001 + user_uuid: 1fc709aa-be19-4539-a47d-52a30d78a978 + version: 2 + id: "126" + type: form_versions + schema: + $ref: "#/components/schemas/FormVersionResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Create or update a form version + tags: + - Forms + 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/forms/{form_id}/versions/upsert_and_publish: + post: + description: Upsert the latest form version and publish it in a single atomic transaction. + operationId: UpsertAndPublishFormVersion + parameters: + - description: The ID of the form. + example: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + in: path + name: form_id + required: true + schema: + format: uuid + type: string + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + data_definition: {} + ui_definition: {} + upsert_params: + etag: b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d + type: form_versions + schema: + $ref: "#/components/schemas/UpsertAndPublishFormVersionRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + active: true + anonymous: false + created_at: "2026-05-29T20:06:14.895284Z" + datastore_config: + datastore_id: 5108ea24-dd83-4696-9caa-f069f73d0fad + primary_column_name: id + primary_key_generation_strategy: none + description: A form to collect user feedback. + end_date: + idp_survey: false + modified_at: "2026-05-29T20:06:15.000000Z" + name: User Feedback Form + org_id: 2 + self_service: false + single_response: false + user_id: 10001 + user_uuid: 1fc709aa-be19-4539-a47d-52a30d78a978 + id: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + type: forms + schema: + $ref: "#/components/schemas/FormResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Upsert and publish a form version + tags: + - Forms + 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/global_orgs: + get: + description: |- + Returns organizations across regions for the authenticated user. The `user_handle` query parameter must match the authenticated user's handle. + operationId: ListGlobalOrgs + parameters: + - description: The handle of the authenticated user. + in: query + name: user_handle + required: true + schema: + example: user@example.com + type: string + - description: Maximum number of results returned. + in: query + name: page[limit] + required: false + schema: + default: 100 + format: int32 + maximum: 1000 + minimum: 1 + type: integer + - description: |- + String to query the next page of results. + This key is provided with each valid response from the API in `meta.page.next_cursor`. + in: query + name: page[cursor] + required: false + schema: + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + org: + name: Example Org + public_id: abcdef12345 + subdomain: example + uuid: "13d10a96-6ff2-49be-be7b-4f56ebb13335" + redirect_url: "https://app.datadoghq.com/account/login/password?dd_oid=13d10a96-6ff2-49be-be7b-4f56ebb13335&login_hint=user%40example.com" + source_region: us1.prod.dog + user: + handle: user@example.com + uuid: "cfab5cf9-5472-48ea-a79c-a64045f4f745" + type: global_user_orgs + links: + next: "https://app.datadoghq.com/api/v2/global_orgs?user_handle=user@example.com&page[limit]=100&page[cursor]=next-page" + self: "https://app.datadoghq.com/api/v2/global_orgs?user_handle=user@example.com&page[limit]=100" + meta: + page: + cursor: "" + limit: 100 + next_cursor: next-page + type: cursor + schema: + $ref: "#/components/schemas/GlobalOrgsResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "401": + $ref: "#/components/responses/UnauthorizedResponse" + "403": + $ref: "#/components/responses/ForbiddenResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - user_access_read + summary: List global orgs + tags: + - Organizations + x-pagination: + cursorParam: page[cursor] + cursorPath: meta.page.next_cursor + limitParam: page[limit] + resultsPath: data + "x-permission": + operator: OR + permissions: + - user_access_read /api/v2/hamr: get: description: |- @@ -128515,6 +135675,76 @@ paths: operator: OR permissions: - aws_configuration_read + /api/v2/integration/aws/validate_ccm_config: + post: + description: |- + Validate a Cloud Cost Management config for an AWS account using Cost and Usage Report + (CUR) 2.0 against Datadog's ingest requirements without persisting it. + operationId: ValidateAWSCCMConfig + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + account_id: "123456789012" + bucket_name: billing + bucket_region: us-east-1 + report_name: cost-and-usage-report + report_prefix: reports + type: ccm_config_validation + schema: + $ref: "#/components/schemas/AWSCcmConfigValidationRequest" + description: Validate a Cloud Cost Management config for an AWS account integration config. + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + account_id: "123456789012" + issues: + - code: EXPORT_NOT_FOUND + description: 'no CUR 2.0 export named "cost-and-usage-report" found' + id: ccm_config_validation + type: ccm_config_validation + schema: + $ref: "#/components/schemas/AWSCcmConfigValidationResponse" + description: AWS CCM Config validation result + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + $ref: "#/components/responses/ForbiddenResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "503": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Service Unavailable + summary: Validate AWS CCM config + tags: + - AWS Integration + x-codegen-request-body-name: body + "x-permission": + operator: OR + permissions: + - cloud_cost_management_read + - cloud_cost_management_write + x-unstable: |- + **Note**: This endpoint is in Preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/integration/gcp/accounts: get: description: List all GCP STS-enabled service accounts configured in your Datadog account. @@ -128796,6 +136026,43 @@ paths: operator: OR permissions: - gcp_configuration_edit + /api/v2/integration/google-chat/organizations: + get: + description: Get a list of all Google Chat organization bindings in the Datadog Google Chat integration. + operationId: ListGoogleChatOrganizations + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + domain_id: fake-domain-id + domain_name: example.com + id: 00000000-0000-0000-0000-000000000001 + relationships: + delegated_user: + data: + id: 00000000-0000-0000-0000-000000000002 + type: google-chat-delegated-user + type: google-chat-organization + - attributes: + domain_id: fake-domain-id-2 + domain_name: example2.com + id: 00000000-0000-0000-0000-000000000003 + type: google-chat-organization + schema: + $ref: "#/components/schemas/GoogleChatOrganizationsResponse" + description: OK + "403": + $ref: "#/components/responses/ForbiddenResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get all Google Chat organization bindings + tags: + - Google Chat Integration /api/v2/integration/google-chat/organizations/app/named-spaces/{domain_name}/{space_display_name}: get: description: Get the resource name and organization binding ID of a space in the Datadog Google Chat integration. @@ -128832,6 +136099,110 @@ paths: summary: Get space information by display name tags: - Google Chat Integration + /api/v2/integration/google-chat/organizations/{organization_binding_id}: + delete: + description: Delete a Google Chat organization binding from the Datadog Google Chat integration. + operationId: DeleteGoogleChatOrganization + parameters: + - $ref: "#/components/parameters/GoogleChatOrganizationBindingIdPathParameter" + responses: + "204": + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/ForbiddenResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Delete a Google Chat organization binding + tags: + - Google Chat Integration + get: + description: Get a Google Chat organization binding from the Datadog Google Chat integration. + operationId: GetGoogleChatOrganization + parameters: + - $ref: "#/components/parameters/GoogleChatOrganizationBindingIdPathParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + domain_id: fake-domain-id + domain_name: example.com + id: 00000000-0000-0000-0000-000000000001 + relationships: + delegated_user: + data: + id: 00000000-0000-0000-0000-000000000002 + type: google-chat-delegated-user + type: google-chat-organization + schema: + $ref: "#/components/schemas/GoogleChatOrganizationResponse" + description: OK + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get a Google Chat organization binding + tags: + - Google Chat Integration + /api/v2/integration/google-chat/organizations/{organization_binding_id}/delegated-user: + delete: + description: Delete the delegated user for a Google Chat organization binding from the Datadog Google Chat integration. + operationId: DeleteGoogleChatDelegatedUser + parameters: + - $ref: "#/components/parameters/GoogleChatOrganizationBindingIdPathParameter" + responses: + "204": + description: OK + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Delete the delegated user + tags: + - Google Chat Integration + get: + description: Get the delegated user for a Google Chat organization binding in the Datadog Google Chat integration. + operationId: GetGoogleChatDelegatedUser + parameters: + - $ref: "#/components/parameters/GoogleChatOrganizationBindingIdPathParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + display_name: fake-display-name + email: user@example.com + features: + - incident-automatic-space-creation + - workflow-space-creation + id: 00000000-0000-0000-0000-000000000002 + type: google-chat-delegated-user + schema: + $ref: "#/components/schemas/GoogleChatDelegatedUserResponse" + description: OK + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get the delegated user + tags: + - Google Chat Integration /api/v2/integration/google-chat/organizations/{organization_binding_id}/organization-handles: get: description: Get a list of all organization handles from the Datadog Google Chat integration. @@ -129032,6 +136403,191 @@ paths: tags: - Google Chat Integration x-codegen-request-body-name: body + /api/v2/integration/google-chat/organizations/{organization_binding_id}/target-audiences: + get: + description: Get a list of all target audiences for a Google Chat organization binding in the Datadog Google Chat integration. + operationId: ListGoogleChatTargetAudiences + parameters: + - $ref: "#/components/parameters/GoogleChatOrganizationBindingIdPathParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + audience_id: fake-audience-id-1 + audience_name: fake audience name 1 + id: 00000000-0000-0000-0000-000000000004 + type: google-chat-target-audience + - attributes: + audience_id: fake-audience-id-2 + audience_name: fake-audience-name-2 + id: 00000000-0000-0000-0000-000000000005 + type: google-chat-target-audience + schema: + $ref: "#/components/schemas/GoogleChatTargetAudiencesResponse" + description: OK + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get all target audiences + tags: + - Google Chat Integration + post: + description: Create a target audience for a Google Chat organization binding in the Datadog Google Chat integration. + operationId: CreateGoogleChatTargetAudience + parameters: + - $ref: "#/components/parameters/GoogleChatOrganizationBindingIdPathParameter" + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + audience_id: fake-audience-id-1 + audience_name: fake audience name 1 + type: google-chat-target-audience + schema: + $ref: "#/components/schemas/GoogleChatTargetAudienceCreateRequest" + description: Target audience payload. + required: true + responses: + "201": + content: + application/json: + examples: + default: + value: + data: + attributes: + audience_id: fake-audience-id-1 + audience_name: fake audience name 1 + id: 00000000-0000-0000-0000-000000000004 + type: google-chat-target-audience + schema: + $ref: "#/components/schemas/GoogleChatTargetAudienceResponse" + description: CREATED + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "409": + $ref: "#/components/responses/ConflictResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Create a target audience + tags: + - Google Chat Integration + x-codegen-request-body-name: body + /api/v2/integration/google-chat/organizations/{organization_binding_id}/target-audiences/{target_audience_id}: + delete: + description: Delete a target audience from a Google Chat organization binding in the Datadog Google Chat integration. + operationId: DeleteGoogleChatTargetAudience + parameters: + - $ref: "#/components/parameters/GoogleChatOrganizationBindingIdPathParameter" + - $ref: "#/components/parameters/GoogleChatTargetAudienceIdPathParameter" + responses: + "204": + description: OK + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Delete a target audience + tags: + - Google Chat Integration + get: + description: Get a target audience for a Google Chat organization binding in the Datadog Google Chat integration. + operationId: GetGoogleChatTargetAudience + parameters: + - $ref: "#/components/parameters/GoogleChatOrganizationBindingIdPathParameter" + - $ref: "#/components/parameters/GoogleChatTargetAudienceIdPathParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + audience_id: fake-audience-id-1 + audience_name: fake audience name 1 + id: 00000000-0000-0000-0000-000000000004 + type: google-chat-target-audience + schema: + $ref: "#/components/schemas/GoogleChatTargetAudienceResponse" + description: OK + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get a target audience + tags: + - Google Chat Integration + patch: + description: Update a target audience for a Google Chat organization binding in the Datadog Google Chat integration. + operationId: UpdateGoogleChatTargetAudience + parameters: + - $ref: "#/components/parameters/GoogleChatOrganizationBindingIdPathParameter" + - $ref: "#/components/parameters/GoogleChatTargetAudienceIdPathParameter" + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + audience_id: updated-audience-id + audience_name: updated-audience-name + type: google-chat-target-audience + schema: + $ref: "#/components/schemas/GoogleChatTargetAudienceUpdateRequest" + description: Target audience payload. + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + audience_id: updated-audience-id + audience_name: updated-audience-name + id: 00000000-0000-0000-0000-000000000004 + type: google-chat-target-audience + schema: + $ref: "#/components/schemas/GoogleChatTargetAudienceResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/ForbiddenResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Update a target audience + tags: + - Google Chat Integration + x-codegen-request-body-name: body /api/v2/integration/jira/accounts: get: description: |- @@ -129572,6 +137128,26 @@ paths: tags: - Microsoft Teams Integration x-codegen-request-body-name: body + /api/v2/integration/ms-teams/configuration/user-binding/{tenant_id}: + delete: + description: Delete the user binding for a given tenant from the Datadog Microsoft Teams integration. + operationId: DeleteMSTeamsUserBinding + parameters: + - $ref: "#/components/parameters/MicrosoftTeamsTenantIDPathParameter" + responses: + "204": + description: No Content + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/ForbiddenResponse" + "412": + $ref: "#/components/responses/PreconditionFailedResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Delete user binding + tags: + - Microsoft Teams Integration /api/v2/integration/ms-teams/configuration/workflows-webhook-handles: get: description: Get a list of all Workflows webhook handles from the Datadog Microsoft Teams integration. @@ -131056,6 +138632,36 @@ paths: summary: List ServiceNow users tags: - ServiceNow Integration + /api/v2/integration/slack/user-bindings: + get: + description: List all Slack user bindings for a given Datadog user from the Datadog Slack integration. + operationId: ListSlackUserBindings + parameters: + - $ref: "#/components/parameters/SlackUserUuidQueryParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - id: T01234567 + type: team_id + - id: T09876543 + type: team_id + schema: + $ref: "#/components/schemas/SlackUserBindingsResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/ForbiddenResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List Slack user bindings + tags: + - Slack Integration /api/v2/integration/statuspage/account: delete: description: Delete the Statuspage account configured for your organization. @@ -133102,7 +140708,9 @@ paths: If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/llm-obs/v1/annotated-interactions: get: - description: Returns annotated interactions across all annotation queues for the given content IDs. Results include queue metadata (ID and name) for each interaction. + description: |- + Returns annotated interactions across all annotation queues for the given content IDs. + Results include queue metadata (ID and name) for each interaction. operationId: GetLLMObsAnnotatedInteractionsByTraceIDs parameters: - description: One or more content IDs to retrieve annotated interactions for. At least one is required. @@ -133147,7 +140755,8 @@ paths: id: annotation-789 interaction_id: interaction-456 label_values: - quality: good + - label_schema_id: abc-123 + value: good modified_at: "0001-01-01T00:00:00Z" modified_by: "00000000-0000-0000-0000-000000000002" content_id: trace-abc-123 @@ -133210,7 +140819,8 @@ paths: name: projectId schema: type: string - - description: Filter annotation queues by queue IDs (comma-separated). Cannot be used together with `projectId`. + - description: >- + Filter annotation queues by queue IDs (comma-separated). Cannot be used together with `projectId`. in: query name: queueIds schema: @@ -133540,20 +141150,14 @@ 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/llm-obs/v1/annotation-queues/{queue_id}/interactions: + /api/v2/llm-obs/v1/annotation-queues/{queue_id}/annotations: post: description: |- - Add one or more interactions to an annotation queue. At least one - interaction must be provided. Each interaction has a `type`: - - - `trace`, `experiment_trace`, `session`: `content_id` references the - upstream entity; the server fetches the actual content. - - `display_block`: omit `content_id` and provide the rendered content - in `display_block`. The server generates `content_id` as a - deterministic hash of the block list. - - Items of different types can be mixed in a single request. - operationId: CreateLLMObsAnnotationQueueInteractions + Create or update annotations on interactions in a queue. Each annotation is matched + by `interaction_id` and the requesting user's identity. + Results and errors in the response are linked to request items by `interaction_id`. + Errors for individual items are returned in the `errors` field without blocking the rest of the batch. + operationId: UpsertLLMObsAnnotations parameters: - $ref: "#/components/parameters/LLMObsAnnotationQueueIDPathParameter" requestBody: @@ -133564,34 +141168,20 @@ paths: value: data: attributes: - interactions: - - content_id: trace-abc-123 - type: trace - type: interactions - display_block: - summary: Add a display_block interaction - value: - data: - attributes: - interactions: - - display_block: - - content: "## Triage Instructions" - type: markdown - - content: "Inputs" - level: md - type: header - - content: - experiment_id: abc-123 - label: "Experiments" - type: json - type: display_block - type: interactions + annotations: + - interaction_id: 00000000-0000-0000-0000-000000000001 + label_values: + - label_schema_id: abc-123 + value: good + - label_schema_id: ef56gh78 + value: positive + type: annotations schema: - $ref: "#/components/schemas/LLMObsAnnotationQueueInteractionsRequest" - description: Add interactions payload. + $ref: "#/components/schemas/LLMObsAnnotationsRequest" + description: Payload for creating or updating annotations. required: true responses: - "201": + "200": content: application/json: examples: @@ -133599,31 +141189,21 @@ paths: value: data: attributes: - interactions: - - already_existed: false - content_id: trace-abc-123 - id: 00000000-0000-0000-0000-000000000000 - type: trace - id: 00000000-0000-0000-0000-000000000001 - type: interactions - display_block: - summary: display_block response - value: - data: - attributes: - interactions: - - already_existed: false - content_id: 9a87f3e2b1d4c5a6f8b3e2d1c4a7b5f6e3d2a1c4b7e5f8a3d6c2e1b4a7d5f8c2 - display_block: - - content: "## Triage Instructions" - type: markdown + annotations: + - created_at: "2024-01-15T10:30:00Z" + created_by: 00000000-0000-0000-0000-000000000002 id: 00000000-0000-0000-0000-000000000000 - type: display_block + interaction_id: 00000000-0000-0000-0000-000000000001 + label_values: + - label_schema_id: abc-123 + value: good + modified_at: "2024-01-15T10:30:00Z" + modified_by: 00000000-0000-0000-0000-000000000002 id: 00000000-0000-0000-0000-000000000001 - type: interactions + type: annotations schema: - $ref: "#/components/schemas/LLMObsAnnotationQueueInteractionsResponse" - description: Created + $ref: "#/components/schemas/LLMObsAnnotationsResponse" + description: OK — annotations created or updated. Per-item errors are listed in `errors`. "400": content: application/json: @@ -133647,22 +141227,22 @@ paths: application/json: schema: $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Not Found + description: Not Found — the queue does not exist. "429": $ref: "#/components/responses/TooManyRequestsResponse" security: - apiKeyAuth: [] appKeyAuth: [] - summary: Add annotation queue interactions + summary: Create or update annotations tags: - LLM Observability 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/llm-obs/v1/annotation-queues/{queue_id}/interactions/delete: + /api/v2/llm-obs/v1/annotation-queues/{queue_id}/annotations/delete: post: - description: Delete one or more interactions from an annotation queue. - operationId: DeleteLLMObsAnnotationQueueInteractions + description: Delete one or more annotations from an annotation queue. + operationId: DeleteLLMObsAnnotations parameters: - $ref: "#/components/parameters/LLMObsAnnotationQueueIDPathParameter" requestBody: @@ -133673,58 +141253,13 @@ paths: value: data: attributes: - interaction_ids: + annotation_ids: - 00000000-0000-0000-0000-000000000000 - - 00000000-0000-0000-0000-000000000001 - type: interactions + type: annotations schema: - $ref: "#/components/schemas/LLMObsDeleteAnnotationQueueInteractionsRequest" - description: Delete interactions payload. + $ref: "#/components/schemas/LLMObsDeleteAnnotationsRequest" + description: Delete annotations payload. required: true - responses: - "204": - description: No Content - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Bad Request - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Unauthorized - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Forbidden - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Not Found - "429": - $ref: "#/components/responses/TooManyRequestsResponse" - security: - - apiKeyAuth: [] - appKeyAuth: [] - summary: Delete annotation queue interactions - tags: - - LLM Observability - 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/llm-obs/v1/annotation-queues/{queue_id}/label-schema: - get: - description: Retrieve the label schema for a given annotation queue. - operationId: GetLLMObsAnnotationQueueLabelSchema - parameters: - - $ref: "#/components/parameters/LLMObsAnnotationQueueIDPathParameter" responses: "200": content: @@ -133734,165 +141269,415 @@ paths: value: data: attributes: - annotation_schema: - label_schemas: - - id: "abc-123" - is_required: true - max: 5.0 - min: 0.0 - name: quality - type: score - - id: "ef56gh78" - name: sentiment - type: categorical - values: - - positive - - negative - - neutral - id: "00000000-0000-0000-0000-000000000001" - type: queues - schema: - $ref: "#/components/schemas/LLMObsAnnotationQueueLabelSchemaResponse" - description: OK - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Unauthorized - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Forbidden - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Not Found - "429": - $ref: "#/components/responses/TooManyRequestsResponse" - "500": - content: - application/json: - schema: - $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Internal Server Error - security: - - apiKeyAuth: [] - appKeyAuth: [] - summary: Get annotation queue label schema - tags: - - LLM Observability - 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/). - put: - description: |- - Create or replace the label schema for a given annotation queue. - The label schema defines the labels annotators can apply to interactions in the queue. - Label names must be unique within the queue and match the pattern `^[a-zA-Z0-9_-]+$`. - Each label must have a valid type: score, categorical, boolean, or text. - operationId: UpdateLLMObsAnnotationQueueLabelSchema - parameters: - - $ref: "#/components/parameters/LLMObsAnnotationQueueIDPathParameter" - requestBody: - content: - application/json: - examples: - boolean_label: - summary: Boolean label schema - value: - data: - attributes: - annotation_schema: - label_schemas: - - has_assessment: true - is_assessment: true - is_required: true - name: is_correct - type: boolean - type: queues - categorical_label: - summary: Categorical label schema - value: - data: - attributes: - annotation_schema: - label_schemas: - - is_required: true - name: sentiment - type: categorical - values: - - positive - - negative - - neutral - type: queues - default: - value: - data: - attributes: - annotation_schema: - label_schemas: - - is_required: true - max: 5.0 - min: 0.0 - name: quality - type: score - type: queues - score_label: - summary: Score label schema - value: - data: - attributes: - annotation_schema: - label_schemas: - - has_reasoning: true - is_required: true - max: 5.0 - min: 0.0 - name: quality - type: score - type: queues - text_label: - summary: Text label schema - value: - data: - attributes: - annotation_schema: - label_schemas: - - is_required: false - name: feedback - type: text - type: queues - schema: - $ref: "#/components/schemas/LLMObsAnnotationQueueLabelSchemaUpdateRequest" - description: Update label schema payload. - required: true - responses: - "200": - content: - application/json: - examples: - default: + annotation_ids: + - 00000000-0000-0000-0000-000000000000 + errors: [] + id: 00000000-0000-0000-0000-000000000001 + type: annotations + partial_failure: + summary: Some annotation IDs were not found value: data: attributes: - annotation_schema: - label_schemas: - - id: abc-123 - is_required: true - max: 5.0 - min: 0.0 - name: quality - type: score + annotation_ids: + - 00000000-0000-0000-0000-000000000000 + errors: + - annotation_id: 00000000-0000-0000-0000-000000000001 + error: annotation not found id: 00000000-0000-0000-0000-000000000001 - type: queues + type: annotations schema: - $ref: "#/components/schemas/LLMObsAnnotationQueueLabelSchemaResponse" - description: OK + $ref: "#/components/schemas/LLMObsDeleteAnnotationsResponse" + description: >- + OK — annotations deleted. Errors for annotations that could not be deleted are listed in `errors`. + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found — the queue does not exist. + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Delete annotations + tags: + - LLM Observability + 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/llm-obs/v1/annotation-queues/{queue_id}/interactions: + post: + description: |- + Add one or more interactions to an annotation queue. At least one + interaction must be provided. Each interaction has a `type`: + + - `trace`, `experiment_trace`, `session`: `content_id` references the + upstream entity; the server fetches the actual content. + - `display_block`: omit `content_id` and provide the rendered content + in `display_block`. The server generates `content_id` as a + deterministic hash of the block list. + + Items of different types can be mixed in a single request. + operationId: CreateLLMObsAnnotationQueueInteractions + parameters: + - $ref: "#/components/parameters/LLMObsAnnotationQueueIDPathParameter" + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + interactions: + - content_id: trace-abc-123 + type: trace + type: interactions + display_block: + summary: Add a display_block interaction + value: + data: + attributes: + interactions: + - display_block: + - content: "## Triage Instructions" + type: markdown + - content: "Inputs" + level: md + type: header + - content: + experiment_id: abc-123 + label: "Experiments" + type: json + type: display_block + type: interactions + schema: + $ref: "#/components/schemas/LLMObsAnnotationQueueInteractionsRequest" + description: Add interactions payload. + required: true + responses: + "201": + content: + application/json: + examples: + default: + value: + data: + attributes: + interactions: + - already_existed: false + content_id: trace-abc-123 + id: 00000000-0000-0000-0000-000000000000 + type: trace + id: 00000000-0000-0000-0000-000000000001 + type: interactions + display_block: + summary: display_block response + value: + data: + attributes: + interactions: + - already_existed: false + content_id: 9a87f3e2b1d4c5a6f8b3e2d1c4a7b5f6e3d2a1c4b7e5f8a3d6c2e1b4a7d5f8c2 + display_block: + - content: "## Triage Instructions" + type: markdown + id: 00000000-0000-0000-0000-000000000000 + type: display_block + id: 00000000-0000-0000-0000-000000000001 + type: interactions + schema: + $ref: "#/components/schemas/LLMObsAnnotationQueueInteractionsResponse" + description: Created + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Add annotation queue interactions + tags: + - LLM Observability + 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/llm-obs/v1/annotation-queues/{queue_id}/interactions/delete: + post: + description: Delete one or more interactions from an annotation queue. + operationId: DeleteLLMObsAnnotationQueueInteractions + parameters: + - $ref: "#/components/parameters/LLMObsAnnotationQueueIDPathParameter" + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + interaction_ids: + - 00000000-0000-0000-0000-000000000000 + - 00000000-0000-0000-0000-000000000001 + type: interactions + schema: + $ref: "#/components/schemas/LLMObsDeleteAnnotationQueueInteractionsRequest" + description: Delete interactions payload. + required: true + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Delete annotation queue interactions + tags: + - LLM Observability + 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/llm-obs/v1/annotation-queues/{queue_id}/label-schema: + get: + description: Retrieve the label schema for a given annotation queue. + operationId: GetLLMObsAnnotationQueueLabelSchema + parameters: + - $ref: "#/components/parameters/LLMObsAnnotationQueueIDPathParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + annotation_schema: + label_schemas: + - id: "abc-123" + is_required: true + max: 5.0 + min: 0.0 + name: quality + type: score + - id: "ef56gh78" + name: sentiment + type: categorical + values: + - positive + - negative + - neutral + id: "00000000-0000-0000-0000-000000000001" + type: queues + schema: + $ref: "#/components/schemas/LLMObsAnnotationQueueLabelSchemaResponse" + description: OK + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Get annotation queue label schema + tags: + - LLM Observability + 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/). + put: + description: |- + Create or replace the label schema for a given annotation queue. + The label schema defines the labels annotators can apply to interactions in the queue. + Label names must be unique within the queue and match the pattern `^[a-zA-Z0-9_-]+$`. + Each label must have a valid type: score, categorical, boolean, or text. + operationId: UpdateLLMObsAnnotationQueueLabelSchema + parameters: + - $ref: "#/components/parameters/LLMObsAnnotationQueueIDPathParameter" + requestBody: + content: + application/json: + examples: + boolean_label: + summary: Boolean label schema + value: + data: + attributes: + annotation_schema: + label_schemas: + - has_assessment: true + is_assessment: true + is_required: true + name: is_correct + type: boolean + type: queues + categorical_label: + summary: Categorical label schema + value: + data: + attributes: + annotation_schema: + label_schemas: + - is_required: true + name: sentiment + type: categorical + values: + - positive + - negative + - neutral + type: queues + default: + value: + data: + attributes: + annotation_schema: + label_schemas: + - is_required: true + max: 5.0 + min: 0.0 + name: quality + type: score + type: queues + score_label: + summary: Score label schema + value: + data: + attributes: + annotation_schema: + label_schemas: + - has_reasoning: true + is_required: true + max: 5.0 + min: 0.0 + name: quality + type: score + type: queues + text_label: + summary: Text label schema + value: + data: + attributes: + annotation_schema: + label_schemas: + - is_required: false + name: feedback + type: text + type: queues + schema: + $ref: "#/components/schemas/LLMObsAnnotationQueueLabelSchemaUpdateRequest" + description: Update label schema payload. + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + annotation_schema: + label_schemas: + - id: abc-123 + is_required: true + max: 5.0 + min: 0.0 + name: quality + type: score + id: 00000000-0000-0000-0000-000000000001 + type: queues + schema: + $ref: "#/components/schemas/LLMObsAnnotationQueueLabelSchemaResponse" + description: OK "400": content: application/json: @@ -135168,260 +142953,986 @@ paths: description: Not Found "429": $ref: "#/components/responses/TooManyRequestsResponse" - security: - - apiKeyAuth: [] - appKeyAuth: [] - summary: Update an LLM Observability project - tags: - - LLM Observability - 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/llm-obs/v1/spans/events: - get: - description: List LLM Observability spans matching the specified filters. - operationId: ListLLMObsSpans - parameters: - - description: Start of the time range. Accepts ISO 8601 or relative format (e.g., `now-15m`). Defaults to `now-15m`. - in: query - name: filter[from] - schema: - example: "now-900s" - type: string - - description: End of the time range. Accepts ISO 8601 or relative format. Defaults to `now`. - in: query - name: filter[to] - schema: - example: "now" - type: string - - description: >- - Search query using LLM Observability query syntax. Supports attribute filters using the field:value syntax (e.g. session_id, trace_id, ml_app, meta.span.kind). When provided, structured field filters (`filter[span_id]`, `filter[trace_id]`, etc.) are ignored. - in: query - name: filter[query] - schema: - example: "@session_id:abc123def456" - type: string - - description: Filter by exact span ID. - in: query - name: filter[span_id] - schema: - type: string - - description: Filter by exact trace ID. - in: query - name: filter[trace_id] - schema: - type: string - - description: Filter by span kind (e.g., llm, agent, tool, task, workflow). - in: query - name: filter[span_kind] - schema: - type: string - - description: Filter by span name. - in: query - name: filter[span_name] - schema: - type: string - - description: Filter by ML application name. - in: query - name: filter[ml_app] - schema: - type: string - - description: Maximum number of spans to return. Defaults to `10`. - in: query - name: page[limit] - schema: - format: int64 - type: integer - - description: Cursor from the previous response to retrieve the next page. - in: query - name: page[cursor] - schema: - type: string - - description: Sort order for the results. - in: query - name: sort - schema: - type: string - - description: Whether to include attachment data in the response. Defaults to `true`. - in: query - name: include_attachments - schema: - type: boolean - responses: - "200": - content: - application/json: - examples: - default: - summary: List spans for an ML app - value: - data: - - attributes: - duration: 1500000000.0 - ml_app: my-llm-app - model_name: gpt-4o - model_provider: openai - name: llm_call - span_id: "abc123def456" - span_kind: llm - start_ns: 1705314600000000000 - status: ok - trace_id: "trace-9a8b7c6d5e4f" - id: "abc123def456" - type: span - meta: - elapsed: 132 - page: {} - request_id: req-abc123 - status: done - session_id: - summary: List spans filtered by session ID - value: - data: - - attributes: - duration: 1500000000.0 - ml_app: my-llm-app - name: llm_call - span_id: "abc123def456" - span_kind: llm - start_ns: 1705314600000000000 - status: ok - tags: - - "session_id:abc123def456" - trace_id: "trace-9a8b7c6d5e4f" - id: "abc123def456" - type: span - meta: - elapsed: 87 - page: {} - request_id: req-def456 - status: done - schema: - $ref: "#/components/schemas/LLMObsSpansResponse" - description: OK - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Bad Request - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Unauthorized - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Forbidden - "429": - $ref: "#/components/responses/TooManyRequestsResponse" - security: - - apiKeyAuth: [] - appKeyAuth: [] - summary: List LLM Observability spans - tags: - - LLM Observability - 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/llm-obs/v1/spans/events/search: - post: - description: Search LLM Observability spans using structured filters in the request body. - operationId: SearchLLMObsSpans - requestBody: - content: - application/json: - examples: - default: - summary: Search spans for an ML app - value: - data: - attributes: - filter: - from: "now-900s" - ml_app: "my-llm-app" - span_kind: "llm" - to: "now" - options: - include_attachments: true - page: - limit: 10 - type: spans - session_id: - summary: Search all spans in a session - value: - data: - attributes: - filter: - from: "now-900s" - query: "@session_id:abc123def456" - to: "now" - options: - include_attachments: true - page: - limit: 50 - type: spans - schema: - $ref: "#/components/schemas/LLMObsSearchSpansRequest" - description: Search spans payload. - required: true - responses: - "200": - content: - application/json: - examples: - default: - value: - data: - - attributes: - duration: 1500000000.0 - ml_app: my-llm-app - model_name: gpt-4o - model_provider: openai - name: llm_call - span_id: "abc123def456" - span_kind: llm - start_ns: 1705314600000000000 - status: ok - trace_id: "trace-9a8b7c6d5e4f" - id: "abc123def456" - type: span - meta: - elapsed: 132 - page: {} - request_id: req-abc123 - status: done - schema: - $ref: "#/components/schemas/LLMObsSpansResponse" - description: OK - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Bad Request - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Unauthorized - "403": + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Update an LLM Observability project + tags: + - LLM Observability + 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/llm-obs/v1/spans/events: + get: + description: List LLM Observability spans matching the specified filters. + operationId: ListLLMObsSpans + parameters: + - description: Start of the time range. Accepts ISO 8601 or relative format (e.g., `now-15m`). Defaults to `now-15m`. + in: query + name: filter[from] + schema: + example: "now-900s" + type: string + - description: End of the time range. Accepts ISO 8601 or relative format. Defaults to `now`. + in: query + name: filter[to] + schema: + example: "now" + type: string + - description: >- + Search query using LLM Observability query syntax. Supports attribute filters using the field:value syntax (e.g. session_id, trace_id, ml_app, meta.span.kind). When provided, structured field filters (`filter[span_id]`, `filter[trace_id]`, etc.) are ignored. + in: query + name: filter[query] + schema: + example: "@session_id:abc123def456" + type: string + - description: Filter by exact span ID. + in: query + name: filter[span_id] + schema: + type: string + - description: Filter by exact trace ID. + in: query + name: filter[trace_id] + schema: + type: string + - description: Filter by span kind (e.g., llm, agent, tool, task, workflow). + in: query + name: filter[span_kind] + schema: + type: string + - description: Filter by span name. + in: query + name: filter[span_name] + schema: + type: string + - description: Filter by ML application name. + in: query + name: filter[ml_app] + schema: + type: string + - description: Maximum number of spans to return. Defaults to `10`. + in: query + name: page[limit] + schema: + format: int64 + type: integer + - description: Cursor from the previous response to retrieve the next page. + in: query + name: page[cursor] + schema: + type: string + - description: Sort order for the results. + in: query + name: sort + schema: + type: string + - description: Whether to include attachment data in the response. Defaults to `true`. + in: query + name: include_attachments + schema: + type: boolean + responses: + "200": + content: + application/json: + examples: + default: + summary: List spans for an ML app + value: + data: + - attributes: + duration: 1500000000.0 + ml_app: my-llm-app + model_name: gpt-4o + model_provider: openai + name: llm_call + span_id: "abc123def456" + span_kind: llm + start_ns: 1705314600000000000 + status: ok + trace_id: "trace-9a8b7c6d5e4f" + id: "abc123def456" + type: span + meta: + elapsed: 132 + page: {} + request_id: req-abc123 + status: done + session_id: + summary: List spans filtered by session ID + value: + data: + - attributes: + duration: 1500000000.0 + ml_app: my-llm-app + name: llm_call + span_id: "abc123def456" + span_kind: llm + start_ns: 1705314600000000000 + status: ok + tags: + - "session_id:abc123def456" + trace_id: "trace-9a8b7c6d5e4f" + id: "abc123def456" + type: span + meta: + elapsed: 87 + page: {} + request_id: req-def456 + status: done + schema: + $ref: "#/components/schemas/LLMObsSpansResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: List LLM Observability spans + tags: + - LLM Observability + 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/llm-obs/v1/spans/events/search: + post: + description: Search LLM Observability spans using structured filters in the request body. + operationId: SearchLLMObsSpans + requestBody: + content: + application/json: + examples: + default: + summary: Search spans for an ML app + value: + data: + attributes: + filter: + from: "now-900s" + ml_app: "my-llm-app" + span_kind: "llm" + to: "now" + options: + include_attachments: true + page: + limit: 10 + type: spans + session_id: + summary: Search all spans in a session + value: + data: + attributes: + filter: + from: "now-900s" + query: "@session_id:abc123def456" + to: "now" + options: + include_attachments: true + page: + limit: 50 + type: spans + schema: + $ref: "#/components/schemas/LLMObsSearchSpansRequest" + description: Search spans payload. + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + duration: 1500000000.0 + ml_app: my-llm-app + model_name: gpt-4o + model_provider: openai + name: llm_call + span_id: "abc123def456" + span_kind: llm + start_ns: 1705314600000000000 + status: ok + trace_id: "trace-9a8b7c6d5e4f" + id: "abc123def456" + type: span + meta: + elapsed: 132 + page: {} + request_id: req-abc123 + status: done + schema: + $ref: "#/components/schemas/LLMObsSpansResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Search LLM Observability spans + tags: + - LLM Observability + 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/llm-obs/v1/topic-discovery-clustered-points: + get: + description: |- + List the data points grouped into a topic. For a parent topic, points from all + of its leaf topics are returned. + operationId: ListLLMObsPatternsClusteredPoints + parameters: + - $ref: "#/components/parameters/LLMObsPatternsTopicIDQueryParameter" + - $ref: "#/components/parameters/LLMObsPatternsPageSizeQueryParameter" + - $ref: "#/components/parameters/LLMObsPatternsPageTokenQueryParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + next_page_token: "eyJvZmZzZXQiOjUwfQ==" + points: + - event_id: AAAAAYabc123 + id: 9b0c1d2e-3f40-5a61-b728-c9d0e1f2a3b4 + input: "How do I get a refund?" + is_included: false + is_suggested: true + session_id: session-7c3f5a1b + span_id: "1234567890123456789" + topic_id: 5c1fae90-2b6d-4e3a-9f12-7a0c4d8e6b21 + topic_id: 5c1fae90-2b6d-4e3a-9f12-7a0c4d8e6b21 + id: 5c1fae90-2b6d-4e3a-9f12-7a0c4d8e6b21 + type: clustered_points_response + schema: + $ref: "#/components/schemas/LLMObsPatternsClusteredPointsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: List patterns clustered points + tags: + - LLM Observability + 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/llm-obs/v1/topic-discovery-configs: + get: + description: List all patterns configurations for the organization. + operationId: ListLLMObsPatternsConfigs + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + configs: + - created_at: "2024-01-15T10:30:00Z" + evp_query: "@ml_app:support-bot" + hierarchy_depth: 2 + id: a7c8d9e0-1234-5678-9abc-def012345678 + name: Support chatbot topics + num_records: 1000 + sampling_ratio: 0.1 + scope: "" + updated_at: "2024-01-15T10:30:00Z" + id: "1000000001" + type: list_topic_discovery_configs_response + schema: + $ref: "#/components/schemas/LLMObsPatternsConfigsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: List patterns configurations + tags: + - LLM Observability + 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/). + put: + description: Create a new patterns configuration, or update an existing one when a configuration ID is provided. + operationId: UpsertLLMObsPatternsConfig + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + evp_query: "@ml_app:support-bot" + hierarchy_depth: 2 + name: Support chatbot topics + num_records: 1000 + sampling_ratio: 0.1 + type: topic_discovery_configs + schema: + $ref: "#/components/schemas/LLMObsPatternsConfigUpsertRequest" + description: Patterns configuration payload. + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2024-01-15T10:30:00Z" + evp_query: "@ml_app:support-bot" + hierarchy_depth: 2 + name: Support chatbot topics + num_records: 1000 + sampling_ratio: 0.1 + scope: "" + updated_at: "2024-01-15T10:30:00Z" + id: a7c8d9e0-1234-5678-9abc-def012345678 + type: topic_discovery_configs + schema: + $ref: "#/components/schemas/LLMObsPatternsConfigResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Create or update a patterns configuration + tags: + - LLM Observability + 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/llm-obs/v1/topic-discovery-configs/latest: + get: + description: Retrieve the patterns configuration for the organization. + operationId: GetLLMObsPatternsConfig + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2024-01-15T10:30:00Z" + evp_query: "@ml_app:support-bot" + hierarchy_depth: 2 + name: Support chatbot topics + num_records: 1000 + sampling_ratio: 0.1 + scope: "" + updated_at: "2024-01-15T10:30:00Z" + id: a7c8d9e0-1234-5678-9abc-def012345678 + type: topic_discovery_configs + schema: + $ref: "#/components/schemas/LLMObsPatternsConfigResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Get a patterns configuration + tags: + - LLM Observability + 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/llm-obs/v1/topic-discovery-configs/{config_id}: + delete: + description: Delete a patterns configuration by its ID. + operationId: DeleteLLMObsPatternsConfig + parameters: + - $ref: "#/components/parameters/LLMObsPatternsConfigIDPathParameter" + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Delete a patterns configuration + tags: + - LLM Observability + 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/llm-obs/v1/topic-discovery-runs: + get: + description: List the completed patterns runs for a configuration. + operationId: ListLLMObsPatternsRuns + parameters: + - $ref: "#/components/parameters/LLMObsPatternsConfigIDQueryParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + runs: + - completed_at: "2024-01-15T10:45:00Z" + created_at: "2024-01-15T10:30:00Z" + id: 3fd6b5e0-8910-4b1c-a7d0-5b84de329012 + status: completed + id: a7c8d9e0-1234-5678-9abc-def012345678 + type: list_topic_discovery_runs_response + schema: + $ref: "#/components/schemas/LLMObsPatternsRunsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: List patterns runs + tags: + - LLM Observability + 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: Start a patterns run for a given configuration. The run executes asynchronously. + operationId: TriggerLLMObsPatterns + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + config_id: a7c8d9e0-1234-5678-9abc-def012345678 + type: topic_discovery + schema: + $ref: "#/components/schemas/LLMObsPatternsTriggerRequest" + description: Trigger patterns payload. + required: true + responses: + "202": + content: + application/json: + examples: + default: + value: + data: + attributes: + config_id: a7c8d9e0-1234-5678-9abc-def012345678 + run_id: 3fd6b5e0-8910-4b1c-a7d0-5b84de329012 + status: started + id: a7c8d9e0-1234-5678-9abc-def012345678 + type: topic_discovery_run + schema: + $ref: "#/components/schemas/LLMObsPatternsTriggerResponse" + description: Accepted + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Trigger a patterns run + tags: + - LLM Observability + 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/llm-obs/v1/topic-discovery-runs/status: + get: + description: |- + Retrieve the status and step-by-step progress of the current or most recent + patterns run for a configuration. + operationId: GetLLMObsPatternsRunStatus + parameters: + - $ref: "#/components/parameters/LLMObsPatternsConfigIDQueryParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2024-01-15T10:30:00Z" + progress: + - name: query_evp + started_at: "2024-01-15T10:30:05Z" + status: completed + - name: generate_topics + started_at: "2024-01-15T10:32:00Z" + status: running + status: running + step: generate_topics + id: 3fd6b5e0-8910-4b1c-a7d0-5b84de329012 + type: topic_discovery_run_status + schema: + $ref: "#/components/schemas/LLMObsPatternsRunStatusResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Get patterns run status + tags: + - LLM Observability + 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/llm-obs/v1/topic-discovery-topics: + get: + description: |- + List the topics discovered by a patterns run. When no run is specified, + the most recent completed run is used. + operationId: ListLLMObsPatternsTopics + parameters: + - $ref: "#/components/parameters/LLMObsPatternsConfigIDQueryParameter" + - $ref: "#/components/parameters/LLMObsPatternsRunIDQueryParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + completed_at: "2024-01-15T10:45:00Z" + config_id: a7c8d9e0-1234-5678-9abc-def012345678 + created_at: "2024-01-15T10:30:00Z" + previous_run_id: "" + run_id: 3fd6b5e0-8910-4b1c-a7d0-5b84de329012 + topics: + - created_at: "2024-01-15T10:44:00Z" + description: "Questions about invoices, charges, and refunds." + first_seen_at: "2024-01-15T10:44:00Z" + hierarchy_level: 0 + id: 5c1fae90-2b6d-4e3a-9f12-7a0c4d8e6b21 + is_validated: true + name: Billing questions + parent_topic_id: "" + point_count: 125 + run_id: 3fd6b5e0-8910-4b1c-a7d0-5b84de329012 + id: 3fd6b5e0-8910-4b1c-a7d0-5b84de329012 + type: get_topics_response + schema: + $ref: "#/components/schemas/LLMObsPatternsTopicsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: List patterns topics + tags: + - LLM Observability + 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/llm-obs/v1/topic-discovery-topics/with-cluster-points: + get: + description: |- + List the topics discovered by a patterns run, with the clustered points attached + inline to each leaf topic. When no run is specified, the most recent completed + run is used. + operationId: ListLLMObsPatternsTopicsWithClusteredPoints + parameters: + - $ref: "#/components/parameters/LLMObsPatternsConfigIDQueryParameter" + - $ref: "#/components/parameters/LLMObsPatternsRunIDQueryParameter" + - $ref: "#/components/parameters/LLMObsPatternsIncludeMetricsQueryParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + completed_at: "2024-01-15T10:45:00Z" + config_id: a7c8d9e0-1234-5678-9abc-def012345678 + created_at: "2024-01-15T10:30:00Z" + previous_run_id: "" + run_id: 3fd6b5e0-8910-4b1c-a7d0-5b84de329012 + topics: + - cluster_points: + - duration: 1500000 + estimated_total_cost: 0.0021 + evaluation: + sentiment: positive + input_tokens: 128 + output_tokens: 64 + span_id: "1234567890123456789" + status: ok + total_tokens: 192 + created_at: "2024-01-15T10:44:00Z" + description: "Questions about invoices, charges, and refunds." + first_seen_at: "2024-01-15T10:44:00Z" + hierarchy_level: 0 + id: 5c1fae90-2b6d-4e3a-9f12-7a0c4d8e6b21 + is_validated: true + name: Billing questions + parent_topic_id: "" + point_count: 125 + run_id: 3fd6b5e0-8910-4b1c-a7d0-5b84de329012 + id: 3fd6b5e0-8910-4b1c-a7d0-5b84de329012 + type: get_topics_with_cluster_points_response + schema: + $ref: "#/components/schemas/LLMObsPatternsTopicsWithClusteredPointsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": content: application/json: schema: $ref: "#/components/schemas/JSONAPIErrorResponse" - description: Forbidden - "429": - $ref: "#/components/responses/TooManyRequestsResponse" + description: Internal Server Error security: - apiKeyAuth: [] appKeyAuth: [] - summary: Search LLM Observability spans + summary: List patterns topics with clustered points tags: - LLM Observability x-unstable: |- @@ -136987,6 +145498,47 @@ 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/login/org_configs/max_session_duration: + put: + description: |- + Update the maximum session duration for the current organization. + The duration is specified in seconds. + operationId: UpdateLoginOrgConfigsMaxSessionDuration + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + max_session_duration: 604800 + type: max_session_duration + schema: + $ref: "#/components/schemas/MaxSessionDurationUpdateRequest" + required: true + responses: + "204": + description: No Content + "400": + $ref: "#/components/responses/BadRequestResponse" + "401": + $ref: "#/components/responses/UnauthorizedResponse" + "403": + $ref: "#/components/responses/ForbiddenResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - org_management + summary: Update the maximum session duration + tags: [Organizations] + "x-permission": + operator: OR + permissions: + - org_management /api/v2/logs: post: description: |- @@ -139466,7 +148018,10 @@ paths: - metrics_read /api/v2/metrics/config/bulk-tags: delete: + deprecated: true description: |- + **Note**: This endpoint is deprecated. Use [Tag Indexing Rules](/api/latest/metrics/#create-a-tag-indexing-rule) (`POST /api/v2/metrics/tag-indexing-rules`) instead. + Delete all custom lists of queryable tag keys for a set of existing count, gauge, rate, and distribution metrics. Metrics are selected by passing a metric name prefix. Results can be sent to a set of account email addresses, just like the same operation in the Datadog web app. @@ -139537,8 +148092,12 @@ paths: operator: OR permissions: - metric_tags_write + x-sunset: "2027-01-01" post: + deprecated: true description: |- + **Note**: This endpoint is deprecated. Use [Tag Indexing Rules](/api/latest/metrics/#create-a-tag-indexing-rule) (`POST /api/v2/metrics/tag-indexing-rules`) instead. + Create and define a list of queryable tag keys for a set of existing count, gauge, rate, and distribution metrics. Metrics are selected by passing a metric name prefix. Use the Delete method of this API path to remove tag configurations. Results can be sent to a set of account email addresses, just like the same operation in the Datadog web app. @@ -139617,6 +148176,420 @@ paths: operator: OR permissions: - metric_tags_write + x-sunset: "2027-01-01" + /api/v2/metrics/tag-indexing-rules: + get: + description: List tag indexing rules for an org, sorted by `rule_order`, with offset/limit pagination. + operationId: ListTagIndexingRules + parameters: + - description: Page size (1–1000, default 100). + in: query + name: page[limit] + schema: + format: int64 + type: integer + - description: Page offset from the start of the list (default 0). + in: query + name: page[offset] + schema: + format: int64 + type: integer + - description: Substring filter on rule name. + in: query + name: search + schema: + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + exclude_tags_mode: false + metric_name_matches: + - "dd.test.*" + name: my-indexing-rule + rule_order: 1 + tags: + - env + - service + id: "00000000-0000-0000-0000-000000000001" + type: tag_indexing_rules + meta: + total: 1 + schema: + $ref: "#/components/schemas/TagIndexingRulesResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Too Many Requests + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - metrics_read + summary: List tag indexing rules + tags: + - Metrics + "x-permission": + operator: OR + permissions: + - metrics_read + post: + description: |- + Create a tag indexing rule for the org. `rule_order` is assigned server-side as max+1 + among existing rules; use the reorder endpoint to change the evaluation order. + Requires the `Manage Tags for Metrics` permission. + operationId: CreateTagIndexingRule + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + metric_name_matches: + - "dd.test.*" + name: my-indexing-rule + tags: + - env + - service + type: tag_indexing_rules + schema: + $ref: "#/components/schemas/TagIndexingRuleCreateRequest" + required: true + responses: + "201": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2024-01-15T12:00:00.000Z" + exclude_tags_mode: false + metric_name_matches: + - "dd.test.*" + name: my-indexing-rule + rule_order: 1 + tags: + - env + - service + id: "00000000-0000-0000-0000-000000000001" + type: tag_indexing_rules + schema: + $ref: "#/components/schemas/TagIndexingRuleResponse" + description: Created + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Too Many Requests + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - metric_tags_write + summary: Create a tag indexing rule + tags: + - Metrics + x-codegen-request-body-name: body + "x-permission": + operator: OR + permissions: + - metric_tags_write + /api/v2/metrics/tag-indexing-rules/order: + post: + description: |- + Atomically re-sequence the tag indexing rules for an org to match the supplied list of rule UUIDs. + The server assigns `rule_order` 1, 2, … matching each rule UUID by position in the list. + Requires the `Manage Tags for Metrics` permission. + operationId: ReorderTagIndexingRules + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + rule_ids: + - "00000000-0000-0000-0000-000000000001" + - "00000000-0000-0000-0000-000000000002" + type: tag_indexing_rules + schema: + $ref: "#/components/schemas/TagIndexingRuleOrderRequest" + required: true + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Too Many Requests + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - metric_tags_write + summary: Reorder tag indexing rules + tags: + - Metrics + x-codegen-request-body-name: body + "x-permission": + operator: OR + permissions: + - metric_tags_write + /api/v2/metrics/tag-indexing-rules/{id}: + delete: + description: |- + Soft-delete a tag indexing rule. Idempotent: returns 204 whether the rule existed or was already deleted. + Remaining rules in the org are automatically re-sequenced to keep `rule_order` dense and 1-based. + Requires the `Manage Tags for Metrics` permission. + operationId: DeleteTagIndexingRule + parameters: + - $ref: "#/components/parameters/TagIndexingRuleId" + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Too Many Requests + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - metric_tags_write + summary: Delete a tag indexing rule + tags: + - Metrics + "x-permission": + operator: OR + permissions: + - metric_tags_write + get: + description: Get a single tag indexing rule by its UUID. + operationId: GetTagIndexingRule + parameters: + - $ref: "#/components/parameters/TagIndexingRuleId" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2024-01-15T12:00:00.000Z" + exclude_tags_mode: false + metric_name_matches: + - "dd.test.*" + name: my-indexing-rule + rule_order: 1 + tags: + - env + - service + id: "00000000-0000-0000-0000-000000000001" + type: tag_indexing_rules + schema: + $ref: "#/components/schemas/TagIndexingRuleResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Too Many Requests + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - metrics_read + summary: Get a tag indexing rule + tags: + - Metrics + "x-permission": + operator: OR + permissions: + - metrics_read + put: + description: |- + Partially update a tag indexing rule. Fields omitted from the request body are left unchanged. + Setting `rule_order` to a value already used by another rule returns 409; use the + reorder endpoint for atomic re-sequencing. Requires the `Manage Tags for Metrics` permission. + operationId: UpdateTagIndexingRule + parameters: + - $ref: "#/components/parameters/TagIndexingRuleId" + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + name: my-updated-rule + tags: + - env + - service + - version + type: tag_indexing_rules + schema: + $ref: "#/components/schemas/TagIndexingRuleUpdateRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + exclude_tags_mode: false + metric_name_matches: + - "dd.test.*" + name: my-updated-rule + rule_order: 1 + tags: + - env + - service + - version + id: "00000000-0000-0000-0000-000000000001" + type: tag_indexing_rules + schema: + $ref: "#/components/schemas/TagIndexingRuleResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Conflict + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Too Many Requests + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - metric_tags_write + summary: Update a tag indexing rule + tags: + - Metrics + x-codegen-request-body-name: body + "x-permission": + operator: OR + permissions: + - metric_tags_write /api/v2/metrics/{metric_name}/active-configurations: get: description: |- @@ -140004,6 +148977,231 @@ paths: operator: OR permissions: - metrics_read + /api/v2/metrics/{metric_name}/tag-indexing-rule-exemptions: + delete: + description: |- + Remove a metric's exemption from tag indexing rules. Idempotent: returns 204 whether or not + an exemption existed. Any associated legacy tag configuration record is also removed. + Requires the `Manage Tags for Metrics` permission. + operationId: DeleteTagIndexingRuleExemption + parameters: + - $ref: "#/components/parameters/MetricName" + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Too Many Requests + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - metric_tags_write + summary: Delete a tag indexing rule exemption + tags: + - Metrics + "x-permission": + operator: OR + permissions: + - metric_tags_write + get: + description: |- + Returns why a metric is excluded from tag indexing rules. + Returns 200 with `kind=exemption` when an explicit exemption exists, 200 with + `kind=legacy_tag_configuration` when the metric has a legacy tag configuration acting as an + implicit exclusion, or 404 when neither applies. + operationId: GetTagIndexingRuleExemption + parameters: + - $ref: "#/components/parameters/MetricName" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2024-01-15T12:00:00.000Z" + created_by_handle: user@datadoghq.com + kind: exemption + reason: This metric has a pre-existing tag configuration. + id: dd.test.metric + type: tag_indexing_rule_exemptions + schema: + $ref: "#/components/schemas/TagIndexingRuleExemptionResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Too Many Requests + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - metrics_read + summary: Get a tag indexing rule exemption + tags: + - Metrics + "x-permission": + operator: OR + permissions: + - metrics_read + post: + description: |- + Exempt a metric from all tag indexing rules. The response includes the created + exemption resource. Requires the `Manage Tags for Metrics` permission. + operationId: CreateTagIndexingRuleExemption + parameters: + - $ref: "#/components/parameters/MetricName" + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + reason: This metric has a pre-existing tag configuration. + type: tag_indexing_rule_exemptions + schema: + $ref: "#/components/schemas/TagIndexingRuleExemptionCreateRequest" + required: true + responses: + "201": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2024-01-15T12:00:00.000Z" + created_by_handle: user@datadoghq.com + kind: exemption + reason: This metric has a pre-existing tag configuration. + id: dd.test.metric + type: tag_indexing_rule_exemptions + schema: + $ref: "#/components/schemas/TagIndexingRuleExemptionResponse" + description: Created + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Too Many Requests + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - metric_tags_write + summary: Create a tag indexing rule exemption + tags: + - Metrics + x-codegen-request-body-name: body + "x-permission": + operator: OR + permissions: + - metric_tags_write + /api/v2/metrics/{metric_name}/tag-indexing-rules: + get: + description: |- + List the tag indexing rules that apply to a given metric, sorted by `rule_order`. + Matching is performed server-side using each rule's `metric_name_matches` glob patterns. + operationId: ListTagIndexingRulesForMetric + parameters: + - $ref: "#/components/parameters/MetricName" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: [] + meta: + total: 0 + schema: + $ref: "#/components/schemas/TagIndexingRulesResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Too Many Requests + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - metrics_read + summary: List tag indexing rules for a metric + tags: + - Metrics + "x-permission": + operator: OR + permissions: + - metrics_read /api/v2/metrics/{metric_name}/tags: delete: description: |- @@ -140628,6 +149826,7 @@ paths: required: false schema: default: 25 + format: int64 maximum: 100 type: integer - description: Page number (1-indexed). @@ -140636,6 +149835,7 @@ paths: required: false schema: default: 1 + format: int64 type: integer responses: "200": @@ -140951,6 +150151,7 @@ paths: required: false schema: default: 25 + format: int64 maximum: 100 type: integer - description: Page number (1-indexed). @@ -140959,6 +150160,7 @@ paths: required: false schema: default: 1 + format: int64 type: integer responses: "200": @@ -142719,6 +151921,118 @@ paths: summary: Update the tags for an interface tags: - Network Device Monitoring + /api/v2/network-health-insights: + get: + description: |- + Return network health insights for the organization within the given time window. + Insights are produced by analyzing DNS failures pre-classified by `network-dns-logger`, + TLS certificate metrics, and denied security group connections. Each insight + identifies the client and server services involved, the type of issue, and the + magnitude of the failure observed during the query window. + operationId: ListNetworkHealthInsights + parameters: + - description: |- + Unix timestamp (number of seconds since epoch) of the start of the query window. + If not provided, the start of the query window will be 15 minutes before the `to` timestamp. + If neither `from` nor `to` are provided, the query window will be `[now - 15m, now]`. + example: "1716800000" + in: query + name: from + required: false + schema: + type: string + - description: |- + Unix timestamp (number of seconds since epoch) of the end of the query window. + If not provided, the end of the query window will be the current time. + If neither `from` nor `to` are provided, the query window will be `[now - 15m, now]`. + example: "1716800900" + in: query + name: to + required: false + schema: + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + client_service: "network-logger" + dns_query: "kafka-broker.internal.domain.com" + dns_server: "cluster-dns" + failure_magnitude: 150 + failure_rate: 91 + failure_type: "nxdomain" + server_service: "kafka" + total_requests: 1200 + traffic_volume: + bytes_read: 1800000 + bytes_written: 2500000 + total_traffic: 4300000 + type: "dns" + id: "example-insight-id" + type: "network-health-insights" + - attributes: + account_id: "123456789012" + certificate_id: "arn:aws:acm:us-east-1:123456789012:certificate/abcd1234-a123-456b-a123-12345678901f" + certificate_lifetime_percent: 96.7 + client_region: "us-west-2" + client_service: "N/A" + days_until_expiration: 3 + domain_name: "api.example.com" + failure_type: "expiring_soon" + loadbalancer_id: "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/my-lb/50dc6c495c0c9188" + server_region: "us-east-1" + server_service: "web-frontend" + type: "tls-cert" + id: "example-cert-insight-id" + type: "network-health-insights" + - attributes: + client_service: "web-frontend" + failure_magnitude: 85 + failure_rate: 68.5 + failure_type: "denied" + server_service: "database" + total_requests: 124 + type: "security-group" + id: "example-security-group-insight-id" + type: "network-health-insights" + schema: + $ref: "#/components/schemas/NetworkHealthInsightsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: List network health insights + tags: + - Network Health Insights + x-permission: + operator: OR + permissions: + - network_health_insights_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/). /api/v2/network/connections/aggregate: get: description: Get all aggregated connections. @@ -151217,6 +160531,7 @@ paths: name: page[limit] schema: example: 10 + format: int64 type: integer - description: Filter by application ID. in: query @@ -151378,6 +160693,227 @@ paths: summary: Update replay heatmap snapshot tags: - Rum Replay Heatmaps + /api/v2/reporting/schedule: + post: + description: |- + Create a new scheduled report. A schedule renders a dashboard or integration dashboard + on a recurring cadence and delivers it to the configured recipients over email, Slack, + or Microsoft Teams. + Requires the `generate_dashboard_reports` permission. + operationId: CreateReportSchedule + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + delivery_format: pdf + description: "Weekly summary of infrastructure health." + recipients: + - "user@example.com" + - "slack:T01234567.C01234567.alerts" + - "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2" + resource_id: "abc-def-ghi" + resource_type: dashboard + rrule: "DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0" + template_variables: + - name: "env" + values: + - "prod" + timeframe: "1w" + timezone: "America/New_York" + title: "Weekly Infrastructure Report" + type: schedule + schema: + $ref: "#/components/schemas/ReportScheduleCreateRequest" + required: true + responses: + "201": + content: + application/json: + examples: + default: + value: + data: + attributes: + delivery_format: pdf + description: "Weekly summary of infrastructure health." + next_recurrence: 1780923600000 + recipients: + - "user@example.com" + - "slack:T01234567.C01234567.alerts" + - "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2" + resource_id: "abc-def-ghi" + resource_type: dashboard + rrule: "DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0" + status: active + tab_id: "66666666-7777-8888-9999-000000000000" + template_variables: + - name: "env" + values: + - "prod" + timeframe: "1w" + timezone: "America/New_York" + title: "Weekly Infrastructure Report" + id: "11111111-2222-3333-4444-555555555555" + relationships: + author: + data: + id: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + type: users + type: schedule + included: + - attributes: + email: "user@example.com" + name: "Example User" + id: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + type: users + schema: + $ref: "#/components/schemas/ReportScheduleResponse" + description: CREATED + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Create a report schedule + tags: + - Report Schedules + x-codegen-request-body-name: body + 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/reporting/schedule/{schedule_uuid}: + patch: + description: |- + Update an existing scheduled report by its identifier. The editable attributes + are replaced with the supplied values; the targeted resource (`resource_id` and + `resource_type`) cannot be changed after creation. + Requires the `generate_dashboard_reports` permission and schedule ownership. + operationId: PatchReportSchedule + parameters: + - description: The unique identifier of the report schedule to update. + example: "11111111-2222-3333-4444-555555555555" + in: path + name: schedule_uuid + required: true + schema: + format: uuid + type: string + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + delivery_format: pdf + description: "Updated weekly summary of infrastructure health." + recipients: + - "user@example.com" + - "slack:T01234567.C01234567.alerts" + - "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2" + rrule: "DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0" + template_variables: + - name: "env" + values: + - "prod" + timeframe: "1w" + timezone: "America/New_York" + title: "Weekly Infrastructure Report" + type: schedule + schema: + $ref: "#/components/schemas/ReportSchedulePatchRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + delivery_format: pdf + description: "Updated weekly summary of infrastructure health." + next_recurrence: 1780923600000 + recipients: + - "user@example.com" + - "slack:T01234567.C01234567.alerts" + - "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2" + resource_id: "abc-def-ghi" + resource_type: dashboard + rrule: "DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0" + status: active + tab_id: "66666666-7777-8888-9999-000000000000" + template_variables: + - name: "env" + values: + - "prod" + timeframe: "1w" + timezone: "America/New_York" + title: "Weekly Infrastructure Report" + id: "11111111-2222-3333-4444-555555555555" + relationships: + author: + data: + id: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + type: users + type: schedule + included: + - attributes: + email: "user@example.com" + name: "Example User" + id: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + type: users + schema: + $ref: "#/components/schemas/ReportScheduleResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Update a report schedule + tags: + - Report Schedules + x-codegen-request-body-name: body + 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/restriction_policy/{resource_id}: delete: description: Deletes the restriction policy associated with a specified resource. @@ -152471,167 +162007,6 @@ paths: operator: OR permissions: - rum_apps_write - /api/v2/rum/applications/{app_id}/hardcoded_retention_filters: - get: - description: Get the list of hardcoded retention filters for a RUM application. - operationId: ListHardcodedRetentionFilters - parameters: - - $ref: "#/components/parameters/RumHardcodedRetentionFilterApplicationIDParameter" - responses: - "200": - content: - application/json: - examples: - default: - value: - data: - - attributes: - cross_product_sampling: - session_replay_enabled: true - session_replay_sample_rate: 50.0 - trace_enabled: true - trace_sample_rate: 25.0 - cross_product_sampling_editability: - session_replay_sample_rate: true - trace_sample_rate: false - enabled: true - event_type: session - name: Replay sessions - query: "@session.has_replay:true" - sample_rate: 100.0 - id: forced_replay_sessions - meta: - source: ui - updated_at: 1735689600000 - updated_by_handle: jane.doe@example.com - type: hardcoded_retention_filters - schema: - $ref: "#/components/schemas/RumHardcodedRetentionFiltersResponse" - description: OK - "403": - $ref: "#/components/responses/NotAuthorizedResponse" - "429": - $ref: "#/components/responses/TooManyRequestsResponse" - summary: Get all hardcoded retention filters - tags: - - RUM Retention Filters Hardcoded - /api/v2/rum/applications/{app_id}/hardcoded_retention_filters/{rf_id}: - get: - description: Get a single hardcoded retention filter for a RUM application. - operationId: GetHardcodedRetentionFilter - parameters: - - $ref: "#/components/parameters/RumHardcodedRetentionFilterApplicationIDParameter" - - $ref: "#/components/parameters/RumHardcodedRetentionFilterIDParameter" - responses: - "200": - content: - application/json: - examples: - default: - value: - data: - attributes: - cross_product_sampling: - session_replay_enabled: true - session_replay_sample_rate: 50.0 - trace_enabled: true - trace_sample_rate: 25.0 - cross_product_sampling_editability: - session_replay_sample_rate: true - trace_sample_rate: false - enabled: true - event_type: session - name: Replay sessions - query: "@session.has_replay:true" - sample_rate: 100.0 - id: forced_replay_sessions - meta: - source: ui - updated_at: 1735689600000 - updated_by_handle: jane.doe@example.com - type: hardcoded_retention_filters - schema: - $ref: "#/components/schemas/RumHardcodedRetentionFilterResponse" - description: OK - "403": - $ref: "#/components/responses/NotAuthorizedResponse" - "404": - $ref: "#/components/responses/NotFoundResponse" - "429": - $ref: "#/components/responses/TooManyRequestsResponse" - summary: Get a hardcoded retention filter - tags: - - RUM Retention Filters Hardcoded - patch: - description: |- - Update the cross-product sample rates of a hardcoded retention filter for a RUM application. - Only fields whose matching flag in `cross_product_sampling_editability` is `true` can be updated. - Any other field is read-only and cannot be sent in the payload. - Returns the updated hardcoded retention filter when the request is successful. - operationId: UpdateHardcodedRetentionFilter - parameters: - - $ref: "#/components/parameters/RumHardcodedRetentionFilterApplicationIDParameter" - - $ref: "#/components/parameters/RumHardcodedRetentionFilterIDParameter" - requestBody: - content: - application/json: - examples: - default: - value: - data: - attributes: - cross_product_sampling: - session_replay_enabled: true - session_replay_sample_rate: 50.0 - id: forced_replay_sessions - type: hardcoded_retention_filters - schema: - $ref: "#/components/schemas/RumHardcodedRetentionFilterUpdateRequest" - description: New cross-product sample rates for the hardcoded retention filter. - required: true - responses: - "200": - content: - application/json: - examples: - default: - value: - data: - attributes: - cross_product_sampling: - session_replay_enabled: true - session_replay_sample_rate: 50.0 - trace_enabled: true - trace_sample_rate: 25.0 - cross_product_sampling_editability: - session_replay_sample_rate: true - trace_sample_rate: false - enabled: true - event_type: session - name: Replay sessions - query: "@session.has_replay:true" - sample_rate: 100.0 - id: forced_replay_sessions - meta: - source: ui - updated_at: 1735689600000 - updated_by_handle: jane.doe@example.com - type: hardcoded_retention_filters - schema: - $ref: "#/components/schemas/RumHardcodedRetentionFilterResponse" - description: Updated - "400": - $ref: "#/components/responses/BadRequestResponse" - "403": - $ref: "#/components/responses/NotAuthorizedResponse" - "404": - $ref: "#/components/responses/NotFoundResponse" - "429": - $ref: "#/components/responses/TooManyRequestsResponse" - summary: Update a hardcoded retention filter - tags: - - RUM Retention Filters Hardcoded - x-codegen-request-body-name: body /api/v2/rum/applications/{app_id}/relationships/retention_filters: patch: description: |- @@ -153409,6 +162784,142 @@ paths: tags: - Rum Metrics x-codegen-request-body-name: body + /api/v2/rum/config/rate-limit/{scope_type}/{scope_id}: + delete: + description: Delete the RUM rate limit configuration for a given scope. + operationId: DeleteRumRateLimitConfig + parameters: + - $ref: "#/components/parameters/RumRateLimitScopeTypeParameter" + - $ref: "#/components/parameters/RumRateLimitScopeIDParameter" + responses: + "204": + description: No Content + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Delete a RUM rate limit configuration + tags: + - Rum Rate Limit + 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 the RUM rate limit configuration for a given scope. + operationId: GetRumRateLimitConfig + parameters: + - $ref: "#/components/parameters/RumRateLimitScopeTypeParameter" + - $ref: "#/components/parameters/RumRateLimitScopeIDParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + custom: + daily_reset_time: "08:00" + daily_reset_timezone: "+09:00" + quota_reached_action: stop + session_limit: 1000000 + window_type: daily + mode: custom + org_id: 2 + updated_at: "2026-03-04T15:37:54.951447Z" + updated_by: test@example.com + id: cd73a516-a481-4af5-8352-9b577465c77b + type: rum_rate_limit_config + schema: + $ref: "#/components/schemas/RumRateLimitConfigResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get a RUM rate limit configuration + tags: + - Rum Rate Limit + 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/). + put: + description: |- + Create or update the RUM rate limit configuration for a given scope. + Returns the rate limit configuration object when the request is successful. + operationId: UpdateRumRateLimitConfig + parameters: + - $ref: "#/components/parameters/RumRateLimitScopeTypeParameter" + - $ref: "#/components/parameters/RumRateLimitScopeIDParameter" + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + custom: + daily_reset_time: "08:00" + daily_reset_timezone: "+09:00" + quota_reached_action: stop + session_limit: 1000000 + window_type: daily + mode: custom + id: cd73a516-a481-4af5-8352-9b577465c77b + type: rum_rate_limit_config + schema: + $ref: "#/components/schemas/RumRateLimitConfigUpdateRequest" + description: The definition of the RUM rate limit configuration to create or update. + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + custom: + daily_reset_time: "08:00" + daily_reset_timezone: "+09:00" + quota_reached_action: stop + session_limit: 1000000 + window_type: daily + mode: custom + org_id: 2 + updated_at: "2026-03-04T21:52:53.526022Z" + updated_by: test@example.com + id: cd73a516-a481-4af5-8352-9b577465c77b + type: rum_rate_limit_config + schema: + $ref: "#/components/schemas/RumRateLimitConfigResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Create or update a RUM rate limit configuration + tags: + - Rum Rate Limit + x-codegen-request-body-name: body + 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/rum/events: get: description: |- @@ -153857,12 +163368,14 @@ paths: name: page[number] schema: example: 0 + format: int64 type: integer - description: Number of items per page. in: query name: page[size] schema: example: 25 + format: int64 type: integer responses: "200": @@ -153943,6 +163456,7 @@ paths: required: true schema: example: 1234567 + format: int64 type: integer responses: "204": @@ -153966,6 +163480,7 @@ paths: required: true schema: example: 1234567 + format: int64 type: integer responses: "200": @@ -154001,6 +163516,7 @@ paths: required: true schema: example: 1234567 + format: int64 type: integer requestBody: content: @@ -154054,6 +163570,7 @@ paths: required: true schema: example: 1234567 + format: int64 type: integer requestBody: content: @@ -154089,18 +163606,21 @@ paths: required: true schema: example: 1234567 + format: int64 type: integer - description: Page number for pagination (0-indexed). in: query name: page[number] schema: example: 0 + format: int64 type: integer - description: Number of items per page. in: query name: page[size] schema: example: 25 + format: int64 type: integer responses: "200": @@ -154137,6 +163657,7 @@ paths: required: true schema: example: 1234567 + format: int64 type: integer - description: Unique identifier of the session. in: path @@ -154181,6 +163702,7 @@ paths: required: true schema: example: 1234567 + format: int64 type: integer - description: Unique identifier of the session. in: path @@ -154264,6 +163786,7 @@ paths: name: max_list_size schema: example: 1048576 + format: int64 type: integer - description: Paging token for pagination. in: query @@ -154293,12 +163816,14 @@ paths: name: page[size] schema: example: 25 + format: int64 type: integer - description: Page number for pagination (0-indexed). in: query name: page[number] schema: example: 0 + format: int64 type: integer - description: Unique identifier of the session. in: path @@ -154426,6 +163951,7 @@ paths: name: page[number] schema: example: 0 + format: int64 type: integer - description: Filter by user UUID. Defaults to current user if not specified. in: query @@ -154451,6 +163977,7 @@ paths: name: page[size] schema: example: 25 + format: int64 type: integer - description: Filter by application ID. in: query @@ -155778,6 +165305,7 @@ paths: required: false schema: default: 0 + format: int64 type: integer - description: Number of scores to return. Max is 1000. in: query @@ -155785,6 +165313,7 @@ paths: required: false schema: default: 100 + format: int64 type: integer responses: "200": @@ -155892,6 +165421,7 @@ paths: name: page[limit] required: false schema: + format: int64 type: integer - description: Cursor for pagination. in: query @@ -156019,6 +165549,7 @@ paths: schema: default: 10 example: 10 + format: int64 type: integer - description: Page number to return (1-indexed). in: query @@ -156027,6 +165558,7 @@ paths: schema: default: 1 example: 1 + format: int64 type: integer - description: Query ID for pagination consistency. in: query @@ -159547,6 +169079,73 @@ 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/security_monitoring/configuration/notification_rules/send_notification_preview: + post: + description: Send a notification preview to test that a notification rule's targets are properly configured. + operationId: SendSecurityMonitoringNotificationPreview + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + enabled: true + name: Rule 1 + selectors: + query: env:prod + rule_types: + - log_detection + severities: + - critical + trigger_source: security_signals + targets: + - "@john.doe@email.com" + type: notification_rules + schema: + $ref: "#/components/schemas/CreateNotificationRuleParameters" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + preview_results: + - notification_status: DEFAULT + rule_type: log_detection + id: rka-loa-zwu + type: notification_preview_response + schema: + $ref: "#/components/schemas/NotificationRulePreviewResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_notification_profiles_write + summary: Test a notification rule + tags: + - Security Monitoring + x-codegen-request-body-name: body + "x-permission": + operator: OR + permissions: + - security_monitoring_notification_profiles_write /api/v2/security_monitoring/configuration/security_filters: get: description: Get the list of configured security filters with their definitions. @@ -161196,9 +170795,10 @@ paths: - attributes: revisions: - attributes: + accounts: + - linked-account-123 display_name: Test User - emails: - - user@example.com + email: user@example.com principal_id: user@example.com first_seen_at: "2026-04-01T00:00:00Z" last_seen_at: "2026-05-01T00:00:00Z" @@ -161229,7 +170829,98 @@ paths: permissions: - siem_entities_read x-unstable: |- - **Note**: This endpoint is in preview and is subject to change. + **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/security_monitoring/entity_context/{id}: + get: + description: |- + Get a single entity from the Cloud SIEM entity context store by its identifier, returning the historical + revisions of the entity in the requested time range. The endpoint can either return revisions across an + interval (`from` / `to`) or the snapshot of the entity at a single point in time (`as_of`); the two modes + are mutually exclusive. + operationId: GetSingleEntityContext + parameters: + - description: The unique identifier of the entity to retrieve. + in: path + name: id + required: true + schema: + example: user@example.com + type: string + - description: |- + The start of the time range to query, as an RFC3339 timestamp or a relative time (for example, `now-7d`). + Defaults to `now-7d`. Ignored when `as_of` is set. + in: query + name: from + required: false + schema: + default: now-7d + example: now-7d + type: string + - description: |- + The end of the time range to query, as an RFC3339 timestamp or a relative time (for example, `now`). + Defaults to `now`. Ignored when `as_of` is set. + in: query + name: to + required: false + schema: + default: now + example: now + type: string + - description: |- + A point in time at which to query the entity revisions, as an RFC3339 timestamp, a Unix timestamp + (in seconds), or a relative time (for example, `now-1d`). When set, `from` and `to` are ignored. + Cannot be combined with custom `from` / `to` values. + example: now-1d + in: query + name: as_of + required: false + schema: + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + revisions: + - attributes: + accounts: + - linked-account-123 + display_name: Test User + email: user@example.com + principal_id: user@example.com + first_seen_at: "2026-04-01T00:00:00Z" + last_seen_at: "2026-05-01T00:00:00Z" + id: user@example.com + type: siem_entity_identity + schema: + $ref: "#/components/schemas/SingleEntityContextResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - siem_entities_read + summary: Get a single entity context + tags: ["Security Monitoring"] + x-permission: + operator: OR + permissions: + - siem_entities_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/). /api/v2/security_monitoring/rules: get: @@ -162035,6 +171726,60 @@ paths: operator: OR permissions: - security_monitoring_rules_read + /api/v2/security_monitoring/rules/{rule_id}/restore/{version}: + post: + description: |- + Restores a custom detection rule to a previously saved historical version. + Only custom rules can be restored. Default and partner rules return 400. + The restore creates a new version entry; it does not overwrite history. + operationId: RestoreSecurityMonitoringRule + parameters: + - $ref: "#/components/parameters/SecurityMonitoringRuleID" + - $ref: "#/components/parameters/SecurityMonitoringRuleVersion" + responses: + "200": + content: + "application/json": + examples: + default: + value: + cases: + - condition: "a > 0" + name: "" + notifications: [] + status: info + id: abc-123 + isEnabled: true + message: Test rule + name: My security monitoring rule. + tags: [] + type: log_detection + schema: + $ref: "#/components/schemas/SecurityMonitoringRuleResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "409": + $ref: "#/components/responses/ConflictResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_rules_write + summary: Restore a rule to a historical version + tags: ["Security Monitoring"] + "x-permission": + operator: OR + permissions: + - security_monitoring_rules_write + x-unstable: |- + **Note**: This endpoint is in beta and may be subject to changes. /api/v2/security_monitoring/rules/{rule_id}/test: post: description: |- @@ -164732,123 +174477,6 @@ paths: operator: OR permissions: - service_account_write - /api/v2/services: - get: - deprecated: true - description: >- - Get all incident services uploaded for the requesting user's organization. If the `include[users]` query parameter is provided, the included attribute will contain the users related to these incident services. - operationId: ListIncidentServices - parameters: - - $ref: "#/components/parameters/IncidentServiceIncludeQueryParameter" - - $ref: "#/components/parameters/PageSize" - - $ref: "#/components/parameters/PageOffset" - - $ref: "#/components/parameters/IncidentServiceSearchQueryParameter" - responses: - "200": - content: - application/json: - examples: - default: - value: - data: - - attributes: - name: test-service - id: 00000000-0000-0000-0000-000000000002 - type: services - schema: - $ref: "#/components/schemas/IncidentServicesResponse" - description: OK - "400": - $ref: "#/components/responses/BadRequestResponse" - "401": - $ref: "#/components/responses/UnauthorizedResponse" - "403": - $ref: "#/components/responses/ForbiddenResponse" - "404": - $ref: "#/components/responses/NotFoundResponse" - "429": - $ref: "#/components/responses/TooManyRequestsResponse" - security: - - apiKeyAuth: [] - appKeyAuth: [] - - AuthZ: - - incident_read - summary: Get a list of all incident services - tags: - - Incident Services - "x-permission": - operator: OR - permissions: - - incident_read - x-unstable: |- - **Note**: This endpoint is deprecated. - post: - deprecated: true - description: Creates a new incident service. - operationId: CreateIncidentService - requestBody: - content: - application/json: - examples: - default: - value: - data: - attributes: - name: an example service name - relationships: - created_by: - data: - id: 00000000-0000-0000-2345-000000000000 - type: users - last_modified_by: - data: - id: 00000000-0000-0000-2345-000000000000 - type: users - type: services - schema: - $ref: "#/components/schemas/IncidentServiceCreateRequest" - description: Incident Service Payload. - required: true - responses: - "201": - content: - application/json: - examples: - default: - value: - data: - attributes: - name: test-service - id: 00000000-0000-0000-0000-000000000001 - type: services - schema: - $ref: "#/components/schemas/IncidentServiceResponse" - description: CREATED - "400": - $ref: "#/components/responses/BadRequestResponse" - "401": - $ref: "#/components/responses/UnauthorizedResponse" - "403": - $ref: "#/components/responses/ForbiddenResponse" - "404": - $ref: "#/components/responses/NotFoundResponse" - "429": - $ref: "#/components/responses/TooManyRequestsResponse" - security: - - apiKeyAuth: [] - appKeyAuth: [] - - AuthZ: - - incident_settings_write - summary: Create a new incident service - tags: - - Incident Services - x-codegen-request-body-name: body - "x-permission": - operator: OR - permissions: - - incident_settings_write - x-unstable: |- - **Note**: This endpoint is deprecated. /api/v2/services/definitions: get: description: Get a list of all service definitions from the Datadog Service Catalog. @@ -165061,159 +174689,6 @@ paths: operator: OR permissions: - apm_service_catalog_read - /api/v2/services/{service_id}: - delete: - deprecated: true - description: Deletes an existing incident service. - operationId: DeleteIncidentService - parameters: - - $ref: "#/components/parameters/IncidentServiceIDPathParameter" - responses: - "204": - description: OK - "400": - $ref: "#/components/responses/BadRequestResponse" - "401": - $ref: "#/components/responses/UnauthorizedResponse" - "403": - $ref: "#/components/responses/ForbiddenResponse" - "404": - $ref: "#/components/responses/NotFoundResponse" - "429": - $ref: "#/components/responses/TooManyRequestsResponse" - security: - - apiKeyAuth: [] - appKeyAuth: [] - - AuthZ: - - incident_settings_write - summary: Delete an existing incident service - tags: - - Incident Services - "x-permission": - operator: OR - permissions: - - incident_settings_write - x-unstable: |- - **Note**: This endpoint is deprecated. - get: - deprecated: true - description: |- - Get details of an incident service. If the `include[users]` query parameter is provided, - the included attribute will contain the users related to these incident services. - operationId: GetIncidentService - parameters: - - $ref: "#/components/parameters/IncidentServiceIDPathParameter" - - $ref: "#/components/parameters/IncidentServiceIncludeQueryParameter" - responses: - "200": - content: - application/json: - examples: - default: - value: - data: - attributes: - name: test-service - id: 00000000-0000-0000-0000-000000000004 - type: services - schema: - $ref: "#/components/schemas/IncidentServiceResponse" - description: OK - "400": - $ref: "#/components/responses/BadRequestResponse" - "401": - $ref: "#/components/responses/UnauthorizedResponse" - "403": - $ref: "#/components/responses/ForbiddenResponse" - "404": - $ref: "#/components/responses/NotFoundResponse" - "429": - $ref: "#/components/responses/TooManyRequestsResponse" - security: - - apiKeyAuth: [] - appKeyAuth: [] - - AuthZ: - - incident_read - summary: Get details of an incident service - tags: - - Incident Services - "x-permission": - operator: OR - permissions: - - incident_read - x-unstable: |- - **Note**: This endpoint is deprecated. - patch: - deprecated: true - description: >- - Updates an existing incident service. Only provide the attributes which should be updated as this request is a partial update. - operationId: UpdateIncidentService - parameters: - - $ref: "#/components/parameters/IncidentServiceIDPathParameter" - requestBody: - content: - application/json: - examples: - default: - value: - data: - attributes: - name: an example service name - id: 00000000-0000-0000-0000-000000000000 - relationships: - created_by: - data: - id: 00000000-0000-0000-2345-000000000000 - type: users - last_modified_by: - data: - id: 00000000-0000-0000-2345-000000000000 - type: users - type: services - schema: - $ref: "#/components/schemas/IncidentServiceUpdateRequest" - description: Incident Service Payload. - required: true - responses: - "200": - content: - application/json: - examples: - default: - value: - data: - attributes: - name: test-service - id: 00000000-0000-0000-0000-000000000003 - type: services - schema: - $ref: "#/components/schemas/IncidentServiceResponse" - description: OK - "400": - $ref: "#/components/responses/BadRequestResponse" - "401": - $ref: "#/components/responses/UnauthorizedResponse" - "403": - $ref: "#/components/responses/ForbiddenResponse" - "404": - $ref: "#/components/responses/NotFoundResponse" - "429": - $ref: "#/components/responses/TooManyRequestsResponse" - security: - - apiKeyAuth: [] - appKeyAuth: [] - - AuthZ: - - incident_settings_write - summary: Update an existing incident service - tags: - - Incident Services - x-codegen-request-body-name: body - "x-permission": - operator: OR - permissions: - - incident_settings_write - x-unstable: |- - **Note**: This endpoint is deprecated. /api/v2/siem-historical-detections/histsignals: get: description: List hist signals. @@ -166282,6 +175757,7 @@ paths: schema: default: 20 example: 20 + format: int64 type: integer - description: The page number to retrieve, starting from 1. in: query @@ -166289,6 +175765,7 @@ paths: schema: default: 1 example: 1 + format: int64 type: integer - description: |- Filter by service names (multiple values allowed). Required for @@ -168865,6 +178342,7 @@ paths: required: false schema: default: 0 + format: int64 type: integer - description: Pagination limit in: query @@ -168872,6 +178350,7 @@ paths: required: false schema: default: 10 + format: int64 type: integer responses: "200": @@ -169567,12 +179046,14 @@ paths: name: page[offset] schema: default: 0 + format: int64 type: integer - description: The number of status pages to return per page. in: query name: page[limit] schema: default: 50 + format: int64 type: integer - description: Filter status pages by exact domain prefix match. Returns at most one result. in: query @@ -169713,12 +179194,14 @@ paths: name: page[offset] schema: default: 0 + format: int64 type: integer - description: The number of degradations to return per page. in: query name: page[limit] schema: default: 50 + format: int64 type: integer - description: "Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page." in: query @@ -169784,12 +179267,14 @@ paths: name: page[offset] schema: default: 0 + format: int64 type: integer - description: The number of maintenances to return per page. in: query name: page[limit] schema: default: 50 + format: int64 type: integer - description: "Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page." in: query @@ -173518,6 +183003,559 @@ paths: operator: OR permissions: - synthetics_global_variable_write + /api/v2/tag-policies: + get: + description: |- + Retrieve all tag policies for the organization. Optionally include disabled or deleted + policies, filter by telemetry source, and include each policy's current compliance score + via the `include=score` query parameter. + operationId: ListTagPolicies + parameters: + - description: Whether to include policies that are currently disabled. Defaults to `false`. + example: false + in: query + name: include_disabled + required: false + schema: + type: boolean + - description: Whether to include policies that have been soft-deleted. Defaults to `false`. + example: false + in: query + name: include_deleted + required: false + schema: + type: boolean + - description: Comma-separated list of related resources to include alongside each policy in the response. Currently the only supported value is `score`. + example: "score" + in: query + name: include + required: false + schema: + $ref: "#/components/schemas/TagPolicyInclude" + - description: Restrict the result set to policies whose source matches the given value. + in: query + name: filter[source] + required: false + schema: + $ref: "#/components/schemas/TagPolicySource" + - description: Start of the time window used for compliance score computation, as a Unix timestamp in milliseconds. Defaults to a recent window appropriate for the source. + example: 1779315066097 + in: query + name: ts_start + required: false + schema: + format: int64 + type: integer + - description: End of the time window used for compliance score computation, as a Unix timestamp in milliseconds. Must be in the past and greater than `ts_start`. + example: 1779401466097 + in: query + name: ts_end + required: false + schema: + format: int64 + type: integer + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + created_at: "2026-05-21T22:11:06.108696Z" + created_by: "test-user" + enabled: true + modified_at: "2026-05-21T22:11:06.108696Z" + modified_by: "test-user" + negated: false + policy_name: "Service tag must be one of api or web" + policy_type: "surfacing" + required: true + scope: "env" + source: "logs" + tag_key: "service" + tag_value_patterns: + - "api" + - "web" + version: 1 + id: "123" + relationships: + score: + data: + id: "123-v1-1779315066097-1779401466097" + type: "tag_policy_score" + type: "tag_policy" + included: + - attributes: + score: 80 + ts_end: 1779401466097 + ts_start: 1779315066097 + version: 1 + id: "123-v1-1779315066097-1779401466097" + type: "tag_policy_score" + schema: + $ref: "#/components/schemas/TagPoliciesListResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List tag policies + tags: + - Tag Policies + 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 a new tag policy for the organization. The caller's organization is derived from + the authenticated user; cross-organization creation is not supported. Fields such as + `policy_id`, `version`, and the timestamp/audit fields are assigned by the server. + operationId: CreateTagPolicy + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + enabled: true + negated: false + policy_name: "Service tag must be one of api or web" + policy_type: "surfacing" + required: true + scope: "env" + source: "logs" + tag_key: "service" + tag_value_patterns: + - "api" + - "web" + type: "tag_policy" + schema: + $ref: "#/components/schemas/TagPolicyCreateRequest" + required: true + responses: + "201": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2026-05-21T22:11:06.108696Z" + created_by: "test-user" + enabled: true + modified_at: "2026-05-21T22:11:06.108696Z" + modified_by: "test-user" + negated: false + policy_name: "Service tag must be one of api or web" + policy_type: "surfacing" + required: true + scope: "env" + source: "logs" + tag_key: "service" + tag_value_patterns: + - "api" + - "web" + version: 1 + id: "123" + type: "tag_policy" + schema: + $ref: "#/components/schemas/TagPolicyResponse" + description: Created + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Conflict + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Create a tag policy + tags: + - Tag Policies + 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/tag-policies/{policy_id}: + delete: + description: |- + Delete a tag policy. By default the policy is soft-deleted so it can be recovered later + and so that historical score data remains queryable. Pass `hard_delete=true` to remove + the policy permanently. + operationId: DeleteTagPolicy + parameters: + - description: The unique identifier of the tag policy to delete. + example: "123" + in: path + name: policy_id + required: true + schema: + type: string + - description: Whether to permanently delete the policy instead of performing a soft delete. Defaults to `false`. + example: false + in: query + name: hard_delete + required: false + schema: + type: boolean + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Delete a tag policy + tags: + - Tag Policies + 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: |- + Retrieve a single tag policy by ID. Optionally include the policy's current compliance + score via the `include=score` query parameter. Policies belonging to other organizations + cannot be retrieved. + operationId: GetTagPolicy + parameters: + - description: The unique identifier of the tag policy. + example: "123" + in: path + name: policy_id + required: true + schema: + type: string + - description: Comma-separated list of related resources to include alongside the policy. Currently the only supported value is `score`. + example: "score" + in: query + name: include + required: false + schema: + $ref: "#/components/schemas/TagPolicyInclude" + - description: Start of the time window used for compliance score computation, as a Unix timestamp in milliseconds. + example: 1779315066097 + in: query + name: ts_start + required: false + schema: + format: int64 + type: integer + - description: End of the time window used for compliance score computation, as a Unix timestamp in milliseconds. Must be in the past and greater than `ts_start`. + example: 1779401466097 + in: query + name: ts_end + required: false + schema: + format: int64 + type: integer + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2026-05-21T22:11:06.108696Z" + created_by: "test-user" + enabled: true + modified_at: "2026-05-21T22:11:06.108696Z" + modified_by: "test-user" + negated: false + policy_name: "Service tag must be one of api or web" + policy_type: "surfacing" + required: true + scope: "env" + source: "logs" + tag_key: "service" + tag_value_patterns: + - "api" + - "web" + version: 1 + id: "123" + relationships: + score: + data: + id: "123-v1-1779315066097-1779401466097" + type: "tag_policy_score" + type: "tag_policy" + included: + - attributes: + score: 80 + ts_end: 1779401466097 + ts_start: 1779315066097 + version: 1 + id: "123-v1-1779315066097-1779401466097" + type: "tag_policy_score" + schema: + $ref: "#/components/schemas/TagPolicyResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get a tag policy + tags: + - Tag Policies + 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 one or more attributes of an existing tag policy. Only the fields supplied in the + request body are modified; omitted fields retain their current values. The policy's + `source` cannot be changed after creation. + operationId: UpdateTagPolicy + parameters: + - description: The unique identifier of the tag policy to update. + example: "123" + in: path + name: policy_id + required: true + schema: + type: string + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + enabled: true + policy_name: "Service tag must be one of api, web, or worker" + id: "123" + type: "tag_policy" + schema: + $ref: "#/components/schemas/TagPolicyUpdateRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2026-05-21T22:11:06.108696Z" + created_by: "test-user" + enabled: true + modified_at: "2026-05-21T22:25:01.000000Z" + modified_by: "test-user" + negated: false + policy_name: "Service tag must be one of api, web, or worker" + policy_type: "surfacing" + required: true + scope: "env" + source: "logs" + tag_key: "service" + tag_value_patterns: + - "api" + - "web" + version: 2 + id: "123" + type: "tag_policy" + schema: + $ref: "#/components/schemas/TagPolicyResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Update a tag policy + tags: + - Tag Policies + 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/tag-policies/{policy_id}/score: + get: + description: |- + Retrieve the compliance score for a single tag policy. The score is computed over the + requested time window (or a source-appropriate default) and represents the percentage of + telemetry within that window that conforms to the policy. A `null` score indicates that + no relevant telemetry was found. + operationId: GetTagPolicyScore + parameters: + - description: The unique identifier of the tag policy. + example: "123" + in: path + name: policy_id + required: true + schema: + type: string + - description: Start of the time window used for compliance score computation, as a Unix timestamp in milliseconds. + example: 1779315066097 + in: query + name: ts_start + required: false + schema: + format: int64 + type: integer + - description: End of the time window used for compliance score computation, as a Unix timestamp in milliseconds. Must be in the past and greater than `ts_start`. + example: 1779401466097 + in: query + name: ts_end + required: false + schema: + format: int64 + type: integer + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + score: 80 + ts_end: 1779401466097 + ts_start: 1779315066097 + version: 1 + id: "123-v1-1779315066097-1779401466097" + type: "tag_policy_score" + schema: + $ref: "#/components/schemas/TagPolicyScoreResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get a tag policy compliance score + tags: + - Tag Policies + 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/tags/enrichment: get: description: List all tag pipeline rulesets - Retrieve a list of all tag pipeline rulesets for the organization @@ -177976,6 +188014,7 @@ paths: name: page[number] schema: default: 0 + format: int64 minimum: 0 type: integer - description: Number of widgets per page. @@ -177983,6 +188022,7 @@ paths: name: page[size] schema: default: 50 + format: int64 maximum: 100 type: integer responses: @@ -178987,6 +189027,18 @@ tags: all in a unified view for seamless collaboration and faster remediation. Go to https://docs.datadoghq.com/security/cloud_security_management to learn more. name: "CSM Coverage Analysis" + - description: |- + Datadog Cloud Security Management (CSM) Ownership infers the most likely owner + for a cloud resource by combining ownership signals from across the platform, + and lets you review the inference, inspect its evidence, and submit feedback to + persist, override, or correct the inferred owner. + For more information, see [Cloud Security Management](https://docs.datadoghq.com/security/cloud_security_management). + name: "CSM Ownership" + - description: |- + Datadog Cloud Security Management (CSM) Settings APIs allow you to list and filter + your cloud hosts monitored by CSM, covering both agentless and agent-based discovery. + For more information, see [Cloud Security Management](https://docs.datadoghq.com/security/cloud_security_management). + name: "CSM Settings" - description: |- Workload Protection monitors file, network, and process activity across your environment to detect real-time threats to your infrastructure. See [Workload Protection](https://docs.datadoghq.com/security/workload_protection/) for more information on setting up Workload Protection. @@ -179057,6 +189109,8 @@ tags: - **Embed** sharing must be enabled under **Organization Settings** > **Public Sharing** > **Shared Dashboards**. - You need [an API key and an application key](https://docs.datadoghq.com/account_management/api-app-keys/) to interact with these endpoints. name: Dashboard Secure Embed + - description: Manage dashboard sharing configurations. + name: Dashboard Sharing - description: |- Get usage statistics for the dashboards in your organization, including view counts, last-edit times, widget counts, and quality scores. See the @@ -179066,6 +189120,8 @@ tags: - description: |- The Data Deletion API allows the user to target and delete data from the allowed products. It's currently enabled for Logs and RUM and depends on `logs_delete_data` and `rum_delete_data` permissions respectively. name: Data Deletion + - description: Manage and run data observability monitors. + name: Data Observability - description: |- Data Access Controls in Datadog is a feature that allows administrators and access managers to regulate access to sensitive data. By defining Restricted Datasets, you can ensure that only specific teams or roles can @@ -179117,6 +189173,10 @@ tags: Package Upgrade Deployments (`/upgrade`): - Upgrade the Datadog Agent to specific versions name: Fleet Automation + - description: |- + The Datadog Forms API lets you create and manage forms within the App Builder platform. + You can configure form settings, manage versions, and publish forms. + name: Forms - description: |- Configure your Datadog-Google Cloud Platform (GCP) integration directly through the Datadog API. Read more about the [Datadog-Google Cloud Platform integration](https://docs.datadoghq.com/integrations/google_cloud_platform). @@ -179143,8 +189203,6 @@ tags: This is an enterprise-only feature. Request access by contacting Datadog support, or see the [IP Allowlist page](https://docs.datadoghq.com/account_management/org_settings/ip_allowlist/) for more information. name: IP Allowlist - - description: Create, update, delete, and retrieve services which can be associated with incidents. See the [Incident Management page](https://docs.datadoghq.com/service_management/incident_management/) for more information. - name: Incident Services - 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: |- @@ -179253,6 +189311,11 @@ tags: - description: |- The Network Device Monitoring API allows you to fetch devices and interfaces and their attributes. See the [Network Device Monitoring page](https://docs.datadoghq.com/network_monitoring/) for more information. name: Network Device Monitoring + - description: |- + Analyze network health by surfacing actionable insights for services experiencing connectivity issues. + Insights are derived from DNS failure data (timeouts, NXDOMAIN, SERVFAIL, general failures), + TLS certificate health (expired, expiring soon), and security group denials. + name: Network Health Insights - description: |- Configure OAuth2 clients for Datadog. Supports RFC 7591 Dynamic Client Registration and management of OAuth2 client scopes restrictions. @@ -179327,11 +189390,13 @@ tags: - description: |- Get insights into the performance of your Real User Monitoring (RUM) applications over HTTP. See the [RUM & Session Replay page](https://docs.datadoghq.com/real_user_monitoring/) for more information name: RUM Insights - - description: |- - Manage hardcoded retention filters through [Manage Applications](https://app.datadoghq.com/rum/list) in RUM. - name: RUM Retention Filters Hardcoded - description: View and manage Reference Tables in your organization. name: Reference Tables + - description: |- + Create and manage scheduled reports. A scheduled report renders a dashboard or integration + dashboard on a recurring cadence and delivers it to a set of recipients over email, Slack, + or Microsoft Teams. + name: Report Schedules - description: |- A restriction policy defines the access control rules for a resource, mapping a set of relations (such as editor and viewer) to a set of allowed principals (such as roles, teams, or users). @@ -179358,6 +189423,9 @@ tags: description: Find out more at url: https://docs.datadoghq.com/real_user_monitoring/platform/generate_metrics/ name: Rum Metrics + - description: |- + Manage RUM rate limit configurations for your organization's RUM applications. + name: Rum Rate Limit - description: Manage heatmap snapshots for RUM replay sessions. Create, update, delete, and retrieve snapshots to visualize user interactions on specific views. name: Rum Replay Heatmaps - description: Create and manage playlists of RUM replay sessions. Organize, categorize, and share collections of replay sessions for analysis and collaboration. @@ -179404,6 +189472,13 @@ tags: name: Service Level Objectives - description: Manage your ServiceNow Integration. ServiceNow is a cloud-based platform that helps organizations manage digital workflows for enterprise operations. name: ServiceNow Integration + - description: |- + Configure your [Datadog Slack integration](https://docs.datadoghq.com/integrations/slack/) + directly through the Datadog API. + externalDocs: + description: For more information about the Datadog Slack integration, see the integration page. + url: https://docs.datadoghq.com/integrations/slack/ + name: Slack Integration - description: |- API to create, update, retrieve, and delete Software Catalog entities. externalDocs: @@ -179444,6 +189519,13 @@ tags: You can use the Datadog API to create, manage, and organize tests and test suites programmatically. For more information, see the [Synthetic Monitoring documentation](https://docs.datadoghq.com/synthetics/). name: Synthetics + - description: |- + Tag Policies define rules that govern which tag values are accepted for a given tag key, + scoped to a particular telemetry source (such as logs, spans, or metrics). Policies can be + `blocking` (data not matching the policy is rejected) or `surfacing` (matching data is + highlighted but not blocked). Each policy reports a compliance `score` derived from how + much recent telemetry adheres to the policy. + name: Tag Policies - description: View and manage teams within Datadog. See the [Teams page](https://docs.datadoghq.com/account_management/teams/) for more information. name: Teams - description: |- diff --git a/.generator/src/generator/templates/model_generic.j2 b/.generator/src/generator/templates/model_generic.j2 index 5bf20ea66c..5200780d34 100644 --- a/.generator/src/generator/templates/model_generic.j2 +++ b/.generator/src/generator/templates/model_generic.j2 @@ -74,6 +74,11 @@ class {{ name }}(ModelNormal): {%- if model.nullable %} _nullable = True {%- endif %} +{%- if model.get("x-keep-typed-in-additional-properties") %} + # Cross-SDK semantic marker. In Python, typed fields are already accessible via + # bracket notation (model["key"]) through _data_store, so no runtime change is needed. + _keep_typed_in_additional_properties = True +{%- endif %} {%- if model.properties %} @cached_property diff --git a/docs/datadog_api_client.v1.model.rst b/docs/datadog_api_client.v1.model.rst index bce1c7e476..1b6e3313f9 100644 --- a/docs/datadog_api_client.v1.model.rst +++ b/docs/datadog_api_client.v1.model.rst @@ -5457,6 +5457,34 @@ datadog\_api\_client.v1.model.synthetics\_basic\_auth\_digest\_type module :members: :show-inheritance: +datadog\_api\_client.v1.model.synthetics\_basic\_auth\_jwt module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.synthetics_basic_auth_jwt + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.synthetics\_basic\_auth\_jwt\_add\_claims module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v1.model.synthetics_basic_auth_jwt_add_claims + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.synthetics\_basic\_auth\_jwt\_algorithm module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.synthetics_basic_auth_jwt_algorithm + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.synthetics\_basic\_auth\_jwt\_type module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.synthetics_basic_auth_jwt_type + :members: + :show-inheritance: + datadog\_api\_client.v1.model.synthetics\_basic\_auth\_ntlm module ------------------------------------------------------------------ diff --git a/docs/datadog_api_client.v2.api.rst b/docs/datadog_api_client.v2.api.rst index 4b2686ee73..45399d318a 100644 --- a/docs/datadog_api_client.v2.api.rst +++ b/docs/datadog_api_client.v2.api.rst @@ -228,6 +228,20 @@ datadog\_api\_client.v2.api.csm\_coverage\_analysis\_api module :members: :show-inheritance: +datadog\_api\_client.v2.api.csm\_ownership\_api module +------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.api.csm_ownership_api + :members: + :show-inheritance: + +datadog\_api\_client.v2.api.csm\_settings\_api module +----------------------------------------------------- + +.. automodule:: datadog_api_client.v2.api.csm_settings_api + :members: + :show-inheritance: + datadog\_api\_client.v2.api.csm\_threats\_api module ---------------------------------------------------- @@ -256,6 +270,13 @@ datadog\_api\_client.v2.api.dashboard\_secure\_embed\_api module :members: :show-inheritance: +datadog\_api\_client.v2.api.dashboard\_sharing\_api module +---------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.api.dashboard_sharing_api + :members: + :show-inheritance: + datadog\_api\_client.v2.api.dashboards\_api module -------------------------------------------------- @@ -270,6 +291,13 @@ datadog\_api\_client.v2.api.data\_deletion\_api module :members: :show-inheritance: +datadog\_api\_client.v2.api.data\_observability\_api module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.api.data_observability_api + :members: + :show-inheritance: + datadog\_api\_client.v2.api.datasets\_api module ------------------------------------------------ @@ -354,6 +382,13 @@ datadog\_api\_client.v2.api.fleet\_automation\_api module :members: :show-inheritance: +datadog\_api\_client.v2.api.forms\_api module +--------------------------------------------- + +.. automodule:: datadog_api_client.v2.api.forms_api + :members: + :show-inheritance: + datadog\_api\_client.v2.api.gcp\_integration\_api module -------------------------------------------------------- @@ -375,13 +410,6 @@ datadog\_api\_client.v2.api.high\_availability\_multi\_region\_api module :members: :show-inheritance: -datadog\_api\_client.v2.api.incident\_services\_api module ----------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.api.incident_services_api - :members: - :show-inheritance: - datadog\_api\_client.v2.api.incidents\_api module ------------------------------------------------- @@ -494,6 +522,13 @@ datadog\_api\_client.v2.api.network\_device\_monitoring\_api module :members: :show-inheritance: +datadog\_api\_client.v2.api.network\_health\_insights\_api module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.api.network_health_insights_api + :members: + :show-inheritance: + datadog\_api\_client.v2.api.o\_auth2\_client\_public\_api module ---------------------------------------------------------------- @@ -592,6 +627,13 @@ datadog\_api\_client.v2.api.reference\_tables\_api module :members: :show-inheritance: +datadog\_api\_client.v2.api.report\_schedules\_api module +--------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.api.report_schedules_api + :members: + :show-inheritance: + datadog\_api\_client.v2.api.restriction\_policies\_api module ------------------------------------------------------------- @@ -634,6 +676,13 @@ datadog\_api\_client.v2.api.rum\_metrics\_api module :members: :show-inheritance: +datadog\_api\_client.v2.api.rum\_rate\_limit\_api module +-------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.api.rum_rate_limit_api + :members: + :show-inheritance: + datadog\_api\_client.v2.api.rum\_replay\_heatmaps\_api module ------------------------------------------------------------- @@ -669,13 +718,6 @@ datadog\_api\_client.v2.api.rum\_retention\_filters\_api module :members: :show-inheritance: -datadog\_api\_client.v2.api.rum\_retention\_filters\_hardcoded\_api module --------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.api.rum_retention_filters_hardcoded_api - :members: - :show-inheritance: - datadog\_api\_client.v2.api.salesforce\_integration\_api module --------------------------------------------------------------- @@ -739,6 +781,13 @@ datadog\_api\_client.v2.api.service\_now\_integration\_api module :members: :show-inheritance: +datadog\_api\_client.v2.api.slack\_integration\_api module +---------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.api.slack_integration_api + :members: + :show-inheritance: + datadog\_api\_client.v2.api.software\_catalog\_api module --------------------------------------------------------- @@ -809,6 +858,13 @@ datadog\_api\_client.v2.api.synthetics\_api module :members: :show-inheritance: +datadog\_api\_client.v2.api.tag\_policies\_api module +----------------------------------------------------- + +.. automodule:: datadog_api_client.v2.api.tag_policies_api + :members: + :show-inheritance: + datadog\_api\_client.v2.api.teams\_api module --------------------------------------------- diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index ce7e6e1bae..501d6954cb 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -3210,6 +3210,69 @@ datadog\_api\_client.v2.model.aws\_ccm\_config\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.aws\_ccm\_config\_validation\_issue module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.aws_ccm_config_validation_issue + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_ccm\_config\_validation\_issue\_code module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.aws_ccm_config_validation_issue_code + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_ccm\_config\_validation\_request module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_ccm_config_validation_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_ccm\_config\_validation\_request\_attributes module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_ccm_config_validation_request_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_ccm\_config\_validation\_request\_data module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_ccm_config_validation_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_ccm\_config\_validation\_response module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_ccm_config_validation_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_ccm\_config\_validation\_response\_attributes module +--------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_ccm_config_validation_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_ccm\_config\_validation\_response\_data module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_ccm_config_validation_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.aws\_ccm\_config\_validation\_type module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.aws_ccm_config_validation_type + :members: + :show-inheritance: + datadog\_api\_client.v2.model.aws\_cloud\_auth\_persona\_mapping\_attributes\_response module --------------------------------------------------------------------------------------------- @@ -6535,6 +6598,27 @@ datadog\_api\_client.v2.model.clickup\_integration\_update module :members: :show-inheritance: +datadog\_api\_client.v2.model.clone\_form\_data module +------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.clone_form_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.clone\_form\_data\_attributes module +------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.clone_form_data_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.clone\_form\_request module +--------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.clone_form_request + :members: + :show-inheritance: + datadog\_api\_client.v2.model.cloud\_asset\_type module ------------------------------------------------------- @@ -8950,6 +9034,27 @@ datadog\_api\_client.v2.model.create\_feature\_flag\_request module :members: :show-inheritance: +datadog\_api\_client.v2.model.create\_form\_data module +------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.create_form_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.create\_form\_data\_attributes module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.create_form_data_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.create\_form\_request module +---------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.create_form_request + :members: + :show-inheritance: + datadog\_api\_client.v2.model.create\_incident\_notification\_rule\_request module ---------------------------------------------------------------------------------- @@ -9615,6 +9720,69 @@ datadog\_api\_client.v2.model.csm\_agent\_data module :members: :show-inheritance: +datadog\_api\_client.v2.model.csm\_agentless\_host\_attributes module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_agentless_host_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_agentless\_host\_data module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_agentless_host_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_agentless\_host\_facet\_attributes module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_agentless_host_facet_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_agentless\_host\_facet\_data module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_agentless_host_facet_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_agentless\_host\_facet\_type module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_agentless_host_facet_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_agentless\_host\_facets\_response module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_agentless_host_facets_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_agentless\_host\_resource\_type module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_agentless_host_resource_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_agentless\_host\_type module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_agentless_host_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_agentless\_hosts\_response module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_agentless_hosts_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.csm\_agents\_attributes module ------------------------------------------------------------ @@ -9664,6 +9832,13 @@ datadog\_api\_client.v2.model.csm\_cloud\_accounts\_coverage\_analysis\_response :members: :show-inheritance: +datadog\_api\_client.v2.model.csm\_cloud\_provider module +--------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_cloud_provider + :members: + :show-inheritance: + datadog\_api\_client.v2.model.csm\_coverage\_analysis module ------------------------------------------------------------ @@ -9671,6 +9846,48 @@ datadog\_api\_client.v2.model.csm\_coverage\_analysis module :members: :show-inheritance: +datadog\_api\_client.v2.model.csm\_facet\_info\_type module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_facet_info_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_host\_facet\_info\_attributes module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_host_facet_info_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_host\_facet\_info\_data module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_host_facet_info_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_host\_facet\_info\_item module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_host_facet_info_item + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_host\_facet\_info\_meta module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_host_facet_info_meta + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_host\_facet\_info\_response module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_host_facet_info_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.csm\_hosts\_and\_containers\_coverage\_analysis\_attributes module ------------------------------------------------------------------------------------------------ @@ -9713,6 +9930,76 @@ datadog\_api\_client.v2.model.csm\_serverless\_coverage\_analysis\_response modu :members: :show-inheritance: +datadog\_api\_client.v2.model.csm\_settings\_meta module +-------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_settings_meta + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_unified\_host\_attributes module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_unified_host_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_unified\_host\_data module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_unified_host_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_unified\_host\_facet\_data module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_unified_host_facet_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_unified\_host\_facet\_type module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_unified_host_facet_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_unified\_host\_facets\_response module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_unified_host_facets_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_unified\_host\_source module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_unified_host_source + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_unified\_host\_type module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_unified_host_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_unified\_hosts\_meta module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.csm_unified_hosts_meta + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.csm\_unified\_hosts\_response module +------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.csm_unified_hosts_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.custom\_attribute\_config module -------------------------------------------------------------- @@ -10700,6 +10987,20 @@ datadog\_api\_client.v2.model.data\_export\_config module :members: :show-inheritance: +datadog\_api\_client.v2.model.data\_observability\_monitor\_run\_status module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.data_observability_monitor_run_status + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.data\_observability\_monitor\_run\_type module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.data_observability_monitor_run_type + :members: + :show-inheritance: + datadog\_api\_client.v2.model.data\_relationships\_teams module --------------------------------------------------------------- @@ -11183,6 +11484,20 @@ datadog\_api\_client.v2.model.delete\_custom\_framework\_response module :members: :show-inheritance: +datadog\_api\_client.v2.model.delete\_form\_data module +------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.delete_form_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.delete\_form\_response module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.delete_form_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.deleted\_suite\_response\_data module ------------------------------------------------------------------- @@ -14305,55 +14620,6 @@ datadog\_api\_client.v2.model.fleet\_agents\_response\_meta module :members: :show-inheritance: -datadog\_api\_client.v2.model.fleet\_cluster\_attributes module ---------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.fleet_cluster_attributes - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.fleet\_cluster\_node\_count\_by\_status module ----------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.fleet_cluster_node_count_by_status - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.fleet\_cluster\_pod\_count\_by\_state module --------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.fleet_cluster_pod_count_by_state - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.fleet\_clusters\_response module --------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.fleet_clusters_response - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.fleet\_clusters\_response\_data module --------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.fleet_clusters_response_data - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.fleet\_clusters\_response\_data\_attributes module --------------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.fleet_clusters_response_data_attributes - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.fleet\_clusters\_response\_meta module --------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.fleet_clusters_response_meta - :members: - :show-inheritance: - datadog\_api\_client.v2.model.fleet\_configuration\_file module --------------------------------------------------------------- @@ -14515,34 +14781,6 @@ datadog\_api\_client.v2.model.fleet\_detected\_integration module :members: :show-inheritance: -datadog\_api\_client.v2.model.fleet\_instrumented\_pod\_group\_attributes module --------------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.fleet_instrumented_pod_group_attributes - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.fleet\_instrumented\_pods\_response module ------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.fleet_instrumented_pods_response - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.fleet\_instrumented\_pods\_response\_data module ------------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.fleet_instrumented_pods_response_data - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.fleet\_instrumented\_pods\_response\_data\_attributes module ------------------------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.fleet_instrumented_pods_response_data_attributes - :members: - :show-inheritance: - datadog\_api\_client.v2.model.fleet\_integration\_details module ---------------------------------------------------------------- @@ -14704,6 +14942,76 @@ datadog\_api\_client.v2.model.flutter\_sourcemap\_data module :members: :show-inheritance: +datadog\_api\_client.v2.model.form\_data module +----------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_data\_attributes module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_data_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_data\_definition module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_data_definition + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_data\_definition\_type module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_data_definition_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_datastore\_config\_attributes module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.form_datastore_config_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_publication\_attributes module +------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.form_publication_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_publication\_data module +------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.form_publication_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_publication\_response module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_publication_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_publication\_type module +------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.form_publication_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_response module +--------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.form\_trigger module -------------------------------------------------- @@ -14718,6 +15026,83 @@ datadog\_api\_client.v2.model.form\_trigger\_wrapper module :members: :show-inheritance: +datadog\_api\_client.v2.model.form\_type module +----------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_ui\_definition module +--------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_ui_definition + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_ui\_definition\_ui\_theme module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_ui_definition_ui_theme + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_ui\_definition\_ui\_theme\_primary\_color module +------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.form_ui_definition_ui_theme_primary_color + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_update\_attributes module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_update_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_version\_attributes module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_version_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_version\_data module +-------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_version_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_version\_response module +------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.form_version_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_version\_state module +--------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_version_state + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.form\_version\_type module +-------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.form_version_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.forms\_response module +---------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.forms_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.formula\_limit module --------------------------------------------------- @@ -15418,6 +15803,27 @@ datadog\_api\_client.v2.model.get\_data\_deletions\_response\_body module :members: :show-inheritance: +datadog\_api\_client.v2.model.get\_data\_observability\_monitor\_run\_status\_response module +--------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.get_data_observability_monitor_run_status_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.get\_data\_observability\_monitor\_run\_status\_response\_attributes module +--------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.get_data_observability_monitor_run_status_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.get\_data\_observability\_monitor\_run\_status\_response\_data module +--------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.get_data_observability_monitor_run_status_response_data + :members: + :show-inheritance: + datadog\_api\_client.v2.model.get\_device\_attributes module ------------------------------------------------------------ @@ -15859,6 +16265,27 @@ datadog\_api\_client.v2.model.global\_incident\_settings\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.global\_org module +------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.global_org + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.global\_org\_attributes module +------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.global_org_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.global\_org\_data module +------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.global_org_data + :members: + :show-inheritance: + datadog\_api\_client.v2.model.global\_org\_identifier module ------------------------------------------------------------ @@ -15866,6 +16293,55 @@ datadog\_api\_client.v2.model.global\_org\_identifier module :members: :show-inheritance: +datadog\_api\_client.v2.model.global\_org\_type module +------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.global_org_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.global\_org\_user module +------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.global_org_user + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.global\_orgs\_links module +-------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.global_orgs_links + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.global\_orgs\_meta module +------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.global_orgs_meta + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.global\_orgs\_meta\_page module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.global_orgs_meta_page + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.global\_orgs\_meta\_page\_type module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.global_orgs_meta_page_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.global\_orgs\_response module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.global_orgs_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.global\_variable\_data module ----------------------------------------------------------- @@ -15964,6 +16440,48 @@ datadog\_api\_client.v2.model.google\_chat\_create\_organization\_handle\_reques :members: :show-inheritance: +datadog\_api\_client.v2.model.google\_chat\_delegated\_user\_attributes module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.google_chat_delegated_user_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_delegated\_user\_data module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.google_chat_delegated_user_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_delegated\_user\_response module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.google_chat_delegated_user_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_delegated\_user\_type module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.google_chat_delegated_user_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_organization\_attributes module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.google_chat_organization_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_organization\_data module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.google_chat_organization_data + :members: + :show-inheritance: + datadog\_api\_client.v2.model.google\_chat\_organization\_handle\_response module --------------------------------------------------------------------------------- @@ -15999,6 +16517,125 @@ datadog\_api\_client.v2.model.google\_chat\_organization\_handles\_response modu :members: :show-inheritance: +datadog\_api\_client.v2.model.google\_chat\_organization\_relationships module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.google_chat_organization_relationships + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_organization\_relationships\_delegated\_user module +----------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.google_chat_organization_relationships_delegated_user + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_organization\_relationships\_delegated\_user\_data module +----------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.google_chat_organization_relationships_delegated_user_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_organization\_response module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.google_chat_organization_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_organization\_type module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.google_chat_organization_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_organizations\_response module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.google_chat_organizations_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_target\_audience\_attributes module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.google_chat_target_audience_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_target\_audience\_create\_request module +------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.google_chat_target_audience_create_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_target\_audience\_create\_request\_attributes module +------------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.google_chat_target_audience_create_request_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_target\_audience\_create\_request\_data module +------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.google_chat_target_audience_create_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_target\_audience\_data module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.google_chat_target_audience_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_target\_audience\_response module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.google_chat_target_audience_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_target\_audience\_type module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.google_chat_target_audience_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_target\_audience\_update\_request module +------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.google_chat_target_audience_update_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_target\_audience\_update\_request\_attributes module +------------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.google_chat_target_audience_update_request_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_target\_audience\_update\_request\_data module +------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.google_chat_target_audience_update_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.google\_chat\_target\_audiences\_response module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.google_chat_target_audiences_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.google\_chat\_update\_organization\_handle\_request module ---------------------------------------------------------------------------------------- @@ -17294,97 +17931,6 @@ datadog\_api\_client.v2.model.incident\_search\_sort\_order module :members: :show-inheritance: -datadog\_api\_client.v2.model.incident\_service\_create\_attributes module --------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.incident_service_create_attributes - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.incident\_service\_create\_data module --------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.incident_service_create_data - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.incident\_service\_create\_request module ------------------------------------------------------------------------ - -.. automodule:: datadog_api_client.v2.model.incident_service_create_request - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.incident\_service\_included\_items module ------------------------------------------------------------------------ - -.. automodule:: datadog_api_client.v2.model.incident_service_included_items - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.incident\_service\_relationships module ---------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.incident_service_relationships - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.incident\_service\_response module ----------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.incident_service_response - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.incident\_service\_response\_attributes module ----------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.incident_service_response_attributes - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.incident\_service\_response\_data module ----------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.incident_service_response_data - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.incident\_service\_type module ------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.incident_service_type - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.incident\_service\_update\_attributes module --------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.incident_service_update_attributes - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.incident\_service\_update\_data module --------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.incident_service_update_data - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.incident\_service\_update\_request module ------------------------------------------------------------------------ - -.. automodule:: datadog_api_client.v2.model.incident_service_update_request - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.incident\_services\_response module ------------------------------------------------------------------ - -.. automodule:: datadog_api_client.v2.model.incident_services_response - :members: - :show-inheritance: - datadog\_api\_client.v2.model.incident\_severity module ------------------------------------------------------- @@ -18967,6 +19513,13 @@ datadog\_api\_client.v2.model.language module :members: :show-inheritance: +datadog\_api\_client.v2.model.latest\_version\_match\_policy module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.latest_version_match_policy + :members: + :show-inheritance: + datadog\_api\_client.v2.model.launch\_darkly\_api\_key module ------------------------------------------------------------- @@ -19653,6 +20206,13 @@ datadog\_api\_client.v2.model.list\_service\_access\_tokens\_response module :members: :show-inheritance: +datadog\_api\_client.v2.model.list\_shared\_dashboards\_response module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.list_shared_dashboards_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.list\_sourcemaps\_response module --------------------------------------------------------------- @@ -19779,6 +20339,20 @@ datadog\_api\_client.v2.model.llm\_obs\_annotated\_interactions\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.llm\_obs\_annotation\_assessment module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_annotation_assessment + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_annotation\_error module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_annotation_error + :members: + :show-inheritance: + datadog\_api\_client.v2.model.llm\_obs\_annotation\_item module --------------------------------------------------------------- @@ -19786,6 +20360,34 @@ datadog\_api\_client.v2.model.llm\_obs\_annotation\_item module :members: :show-inheritance: +datadog\_api\_client.v2.model.llm\_obs\_annotation\_item\_response module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_annotation_item_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_annotation\_label\_value module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_annotation_label_value + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_annotation\_label\_value\_response module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_annotation_label_value_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_annotation\_label\_value\_value module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.llm_obs_annotation_label_value_value + :members: + :show-inheritance: + datadog\_api\_client.v2.model.llm\_obs\_annotation\_queue\_data\_attributes\_request module ------------------------------------------------------------------------------------------- @@ -19975,6 +20577,55 @@ datadog\_api\_client.v2.model.llm\_obs\_annotation\_schema module :members: :show-inheritance: +datadog\_api\_client.v2.model.llm\_obs\_annotations\_data\_attributes\_request module +------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_annotations_data_attributes_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_annotations\_data\_attributes\_response module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_annotations_data_attributes_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_annotations\_data\_request module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_annotations_data_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_annotations\_data\_response module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_annotations_data_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_annotations\_request module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_annotations_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_annotations\_response module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_annotations_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_annotations\_type module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_annotations_type + :members: + :show-inheritance: + datadog\_api\_client.v2.model.llm\_obs\_anthropic\_effort module ---------------------------------------------------------------- @@ -20605,6 +21256,13 @@ datadog\_api\_client.v2.model.llm\_obs\_datasets\_response module :members: :show-inheritance: +datadog\_api\_client.v2.model.llm\_obs\_delete\_annotation\_error module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.llm_obs_delete_annotation_error + :members: + :show-inheritance: + datadog\_api\_client.v2.model.llm\_obs\_delete\_annotation\_queue\_interactions\_data\_attributes\_request module ----------------------------------------------------------------------------------------------------------------- @@ -20626,6 +21284,48 @@ datadog\_api\_client.v2.model.llm\_obs\_delete\_annotation\_queue\_interactions\ :members: :show-inheritance: +datadog\_api\_client.v2.model.llm\_obs\_delete\_annotations\_data\_attributes\_request module +--------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_delete_annotations_data_attributes_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_delete\_annotations\_data\_attributes\_response module +---------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_delete_annotations_data_attributes_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_delete\_annotations\_data\_request module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_delete_annotations_data_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_delete\_annotations\_data\_response module +---------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_delete_annotations_data_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_delete\_annotations\_request module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_delete_annotations_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_delete\_annotations\_response module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_delete_annotations_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.llm\_obs\_delete\_dataset\_records\_data\_attributes\_request module -------------------------------------------------------------------------------------------------- @@ -21375,6 +22075,335 @@ datadog\_api\_client.v2.model.llm\_obs\_open\_ai\_reasoning\_summary module :members: :show-inheritance: +datadog\_api\_client.v2.model.llm\_obs\_patterns\_activity\_progress module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_activity_progress + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_clustered\_point module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_clustered_point + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_clustered\_point\_ref module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_clustered_point_ref + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_clustered\_points\_response module +------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_clustered_points_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_clustered\_points\_response\_attributes module +------------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_clustered_points_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_clustered\_points\_response\_data module +------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_clustered_points_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_clustered\_points\_type module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_clustered_points_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_config\_attributes module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_config_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_config\_item module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_config_item + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_config\_response module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_config_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_config\_response\_data module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_config_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_config\_snapshot module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_config_snapshot + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_config\_type module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_config_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_config\_upsert\_request module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_config\_upsert\_request\_attributes module +-------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_config\_upsert\_request\_data module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_configs\_list\_type module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_configs_list_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_configs\_response module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_configs_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_configs\_response\_attributes module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_configs_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_configs\_response\_data module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_configs_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_request\_type module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_request_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_run\_status\_response module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_run_status_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_run\_status\_response\_attributes module +------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_run_status_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_run\_status\_response\_data module +------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_run_status_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_run\_status\_type module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_run_status_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_run\_summary module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_run_summary + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_runs\_list\_type module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_runs_list_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_runs\_response module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_runs_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_runs\_response\_attributes module +----------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_runs_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_runs\_response\_data module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_runs_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_topic module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_topic + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_topic\_with\_clustered\_points module +--------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_topic_with_clustered_points + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_topics\_response module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_topics_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_topics\_response\_attributes module +------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_topics_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_topics\_response\_data module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_topics_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_topics\_type module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_topics_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_topics\_with\_clustered\_points\_response module +-------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_topics\_with\_clustered\_points\_response\_attributes module +-------------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_topics\_with\_clustered\_points\_response\_data module +-------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_topics\_with\_clustered\_points\_type module +---------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_trigger\_request module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_trigger_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_trigger\_request\_attributes module +------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_trigger_request_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_trigger\_request\_data module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_trigger_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_trigger\_response module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_trigger_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_trigger\_response\_attributes module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_trigger_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_trigger\_response\_data module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_trigger_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.llm\_obs\_patterns\_trigger\_response\_type module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_patterns_trigger_response_type + :members: + :show-inheritance: + datadog\_api\_client.v2.model.llm\_obs\_project\_data\_attributes\_request module --------------------------------------------------------------------------------- @@ -21627,6 +22656,13 @@ datadog\_api\_client.v2.model.llm\_obs\_trace\_interaction\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.llm\_obs\_upsert\_annotation\_item module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.llm_obs_upsert_annotation_item + :members: + :show-inheritance: + datadog\_api\_client.v2.model.llm\_obs\_vertex\_ai\_metadata module ------------------------------------------------------------------- @@ -22439,6 +23475,34 @@ datadog\_api\_client.v2.model.managed\_orgs\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.max\_session\_duration\_type module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.max_session_duration_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.max\_session\_duration\_update\_attributes module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.max_session_duration_update_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.max\_session\_duration\_update\_data module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.max_session_duration_update_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.max\_session\_duration\_update\_request module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.max_session_duration_update_request + :members: + :show-inheritance: + datadog\_api\_client.v2.model.mcp\_scan\_request module ------------------------------------------------------- @@ -24210,6 +25274,55 @@ datadog\_api\_client.v2.model.ndk\_sourcemap\_data module :members: :show-inheritance: +datadog\_api\_client.v2.model.network\_health\_insight module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.network_health_insight + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.network\_health\_insight\_attributes module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.network_health_insight_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.network\_health\_insight\_category module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.network_health_insight_category + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.network\_health\_insight\_failure\_type module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.network_health_insight_failure_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.network\_health\_insight\_traffic\_volume module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.network_health_insight_traffic_volume + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.network\_health\_insights\_response module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.network_health_insights_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.network\_health\_insights\_type module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.network_health_insights_type + :members: + :show-inheritance: + datadog\_api\_client.v2.model.node\_type module ----------------------------------------------- @@ -24371,6 +25484,48 @@ datadog\_api\_client.v2.model.notification\_rule\_attributes module :members: :show-inheritance: +datadog\_api\_client.v2.model.notification\_rule\_preview\_notification\_status module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.notification_rule_preview_notification_status + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.notification\_rule\_preview\_response module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.notification_rule_preview_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.notification\_rule\_preview\_response\_attributes module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.notification_rule_preview_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.notification\_rule\_preview\_response\_data module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.notification_rule_preview_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.notification\_rule\_preview\_response\_type module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.notification_rule_preview_response_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.notification\_rule\_preview\_result module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.notification_rule_preview_result + :members: + :show-inheritance: + datadog\_api\_client.v2.model.notification\_rule\_response module ----------------------------------------------------------------- @@ -24378,6 +25533,27 @@ datadog\_api\_client.v2.model.notification\_rule\_response module :members: :show-inheritance: +datadog\_api\_client.v2.model.notification\_rule\_routing module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.notification_rule_routing + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.notification\_rule\_routing\_mode module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.notification_rule_routing_mode + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.notification\_rules\_list\_response module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.notification_rules_list_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.notification\_rules\_type module -------------------------------------------------------------- @@ -25386,6 +26562,20 @@ datadog\_api\_client.v2.model.observability\_pipeline\_generate\_metrics\_proces :members: :show-inheritance: +datadog\_api\_client.v2.model.observability\_pipeline\_generate\_metrics\_v2\_processor module +---------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.observability_pipeline_generate_metrics_v2_processor + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.observability\_pipeline\_generate\_metrics\_v2\_processor\_type module +---------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.observability_pipeline_generate_metrics_v2_processor_type + :members: + :show-inheritance: + datadog\_api\_client.v2.model.observability\_pipeline\_generated\_metric module ------------------------------------------------------------------------------- @@ -28228,6 +29418,223 @@ datadog\_api\_client.v2.model.overwrite\_allocations\_request module :members: :show-inheritance: +datadog\_api\_client.v2.model.ownership\_evidence\_attributes module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_evidence_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_evidence\_data module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_evidence_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_evidence\_response module +------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.ownership_evidence_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_evidence\_type module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_evidence_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_feedback\_action module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_feedback_action + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_feedback\_request module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_feedback_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_feedback\_request\_attributes module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_feedback_request_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_feedback\_request\_data module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_feedback_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_feedback\_response module +------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.ownership_feedback_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_feedback\_result\_attributes module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_feedback_result_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_feedback\_result\_data module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_feedback_result_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_feedback\_result\_type module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_feedback_result_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_feedback\_type module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_feedback_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_history\_attributes module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_history_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_history\_data module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_history_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_history\_item module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_history_item + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_history\_pagination module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_history_pagination + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_history\_response module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_history_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_history\_type module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_history_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_inference\_attributes module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_inference_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_inference\_data module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_inference_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_inference\_item module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_inference_item + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_inference\_list\_attributes module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_inference_list_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_inference\_list\_data module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_inference_list_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_inference\_list\_response module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_inference_list_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_inference\_response module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_inference_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_inference\_source module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_inference_source + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_inference\_status module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_inference_status + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_inference\_type module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_inference_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_inferences\_type module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_inferences_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.ownership\_owner\_type module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.ownership_owner_type + :members: + :show-inheritance: + datadog\_api\_client.v2.model.page\_annotations\_attributes module ------------------------------------------------------------------ @@ -29628,6 +31035,27 @@ datadog\_api\_client.v2.model.publish\_app\_response module :members: :show-inheritance: +datadog\_api\_client.v2.model.publish\_form\_data module +-------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.publish_form_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.publish\_form\_data\_attributes module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.publish_form_data_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.publish\_form\_request module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.publish_form_request + :members: + :show-inheritance: + datadog\_api\_client.v2.model.publish\_request\_type module ----------------------------------------------------------- @@ -30440,6 +31868,160 @@ datadog\_api\_client.v2.model.reorder\_ruleset\_resource\_data\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.report\_schedule\_author module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_author + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_author\_attributes module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_author_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_author\_relationship module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_author_relationship + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_author\_relationship\_data module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_author_relationship_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_author\_type module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_author_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_create\_request module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_create_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_create\_request\_attributes module +---------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_create_request_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_create\_request\_data module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_create_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_delivery\_format module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_delivery_format + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_included\_resource module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_included_resource + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_patch\_request module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_patch_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_patch\_request\_attributes module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_patch_request_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_patch\_request\_data module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_patch_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_resource\_type module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_resource_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_response module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_response\_attributes module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_response\_attributes\_delivery\_format module +--------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_response_attributes_delivery_format + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_response\_data module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_response\_relationships module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.report_schedule_response_relationships + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_status module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_status + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_template\_variable module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_template_variable + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.report\_schedule\_type module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.report_schedule_type + :members: + :show-inheritance: + datadog\_api\_client.v2.model.resolve\_vulnerable\_symbols\_request module -------------------------------------------------------------------------- @@ -31707,104 +33289,6 @@ datadog\_api\_client.v2.model.rum\_group\_by\_total module :members: :show-inheritance: -datadog\_api\_client.v2.model.rum\_hardcoded\_cross\_product\_sampling module ------------------------------------------------------------------------------ - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_cross_product_sampling - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.rum\_hardcoded\_cross\_product\_sampling\_editability module ------------------------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_cross_product_sampling_editability - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.rum\_hardcoded\_cross\_product\_sampling\_update module -------------------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_cross_product_sampling_update - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.rum\_hardcoded\_retention\_filter\_attributes module ----------------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_retention_filter_attributes - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.rum\_hardcoded\_retention\_filter\_data module ----------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_retention_filter_data - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.rum\_hardcoded\_retention\_filter\_event\_type module ------------------------------------------------------------------------------------ - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_retention_filter_event_type - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.rum\_hardcoded\_retention\_filter\_meta module ----------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_retention_filter_meta - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.rum\_hardcoded\_retention\_filter\_meta\_source module ------------------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_retention_filter_meta_source - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.rum\_hardcoded\_retention\_filter\_response module --------------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_retention_filter_response - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.rum\_hardcoded\_retention\_filter\_type module ----------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_retention_filter_type - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.rum\_hardcoded\_retention\_filter\_update\_attributes module ------------------------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_attributes - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.rum\_hardcoded\_retention\_filter\_update\_data module ------------------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_data - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.rum\_hardcoded\_retention\_filter\_update\_request module ---------------------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_request - :members: - :show-inheritance: - -datadog\_api\_client.v2.model.rum\_hardcoded\_retention\_filters\_response module ---------------------------------------------------------------------------------- - -.. automodule:: datadog_api_client.v2.model.rum_hardcoded_retention_filters_response - :members: - :show-inheritance: - datadog\_api\_client.v2.model.rum\_metric\_compute module --------------------------------------------------------- @@ -32078,6 +33562,97 @@ datadog\_api\_client.v2.model.rum\_query\_page\_options module :members: :show-inheritance: +datadog\_api\_client.v2.model.rum\_rate\_limit\_adaptive\_config module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_rate_limit_adaptive_config + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_rate\_limit\_config\_attributes module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_rate_limit_config_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_rate\_limit\_config\_data module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_rate_limit_config_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_rate\_limit\_config\_response module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_rate_limit_config_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_rate\_limit\_config\_type module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_rate_limit_config_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_rate\_limit\_config\_update\_attributes module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_rate_limit_config_update_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_rate\_limit\_config\_update\_data module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_rate_limit_config_update_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_rate\_limit\_config\_update\_request module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.rum_rate_limit_config_update_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_rate\_limit\_custom\_config module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_rate_limit_custom_config + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_rate\_limit\_mode module +----------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_rate_limit_mode + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_rate\_limit\_quota\_reached\_action module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_rate_limit_quota_reached_action + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_rate\_limit\_scope\_type module +------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.rum_rate_limit_scope_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.rum\_rate\_limit\_window\_type module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.rum_rate_limit_window_type + :members: + :show-inheritance: + datadog\_api\_client.v2.model.rum\_response\_links module --------------------------------------------------------- @@ -32239,6 +33814,20 @@ datadog\_api\_client.v2.model.rum\_warning module :members: :show-inheritance: +datadog\_api\_client.v2.model.run\_data\_observability\_monitor\_response module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.run_data_observability_monitor_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.run\_data\_observability\_monitor\_response\_data module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.run_data_observability_monitor_response_data + :members: + :show-inheritance: + datadog\_api\_client.v2.model.run\_historical\_job\_request module ------------------------------------------------------------------ @@ -36803,6 +38392,146 @@ datadog\_api\_client.v2.model.session\_id\_data module :members: :show-inheritance: +datadog\_api\_client.v2.model.shared\_dashboard\_global\_time module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_global_time + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_included module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_included + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_included\_dashboard module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_included_dashboard + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_included\_dashboard\_attributes module +--------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_included_dashboard_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_included\_dashboard\_type module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_included_dashboard_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_included\_user module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_included_user + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_included\_user\_attributes module +---------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_included_user_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_invitee module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_invitee + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_relationship\_dashboard module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_relationship_dashboard + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_relationship\_dashboard\_data module +------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_relationship_dashboard_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_relationship\_sharer module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_relationship_sharer + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_relationships module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_relationships + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_response module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_response\_attributes module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_selectable\_template\_variable module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_selectable_template_variable + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_share\_type module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_share_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_status module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_status + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_type module +------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_viewing\_preferences module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_viewing_preferences + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.shared\_dashboard\_viewing\_preferences\_theme module +----------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.shared_dashboard_viewing_preferences_theme + :members: + :show-inheritance: + datadog\_api\_client.v2.model.shift module ------------------------------------------ @@ -36992,6 +38721,13 @@ datadog\_api\_client.v2.model.single\_aggregated\_dns\_response\_data\_type modu :members: :show-inheritance: +datadog\_api\_client.v2.model.single\_entity\_context\_response module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.single_entity_context_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.slack\_integration\_metadata module ----------------------------------------------------------------- @@ -37013,6 +38749,27 @@ datadog\_api\_client.v2.model.slack\_trigger\_wrapper module :members: :show-inheritance: +datadog\_api\_client.v2.model.slack\_user\_binding\_data module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.slack_user_binding_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.slack\_user\_binding\_type module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.slack_user_binding_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.slack\_user\_bindings\_response module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.slack_user_bindings_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.slo\_data\_source module ------------------------------------------------------ @@ -40023,6 +41780,342 @@ datadog\_api\_client.v2.model.tag\_data\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.tag\_indexing\_rule\_attributes module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_create\_attributes module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_create_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_create\_data module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_create_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_create\_request module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_create_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_data module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_dynamic\_tags module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_dynamic_tags + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_exemption\_attributes module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_exemption_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_exemption\_create\_attributes module +--------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_exemption_create_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_exemption\_create\_data module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_exemption_create_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_exemption\_create\_request module +------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_exemption_create_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_exemption\_data module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_exemption_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_exemption\_response module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_exemption_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_exemption\_type module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_exemption_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_metric\_match module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_metric_match + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_options module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_options + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_options\_data module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_options_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_order\_attributes module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_order_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_order\_data module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_order_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_order\_request module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_order_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_response module +------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_type module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_update\_attributes module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_update_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_update\_data module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_update_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rule\_update\_request module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rule_update_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rules\_response module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rules_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_indexing\_rules\_response\_meta module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_indexing_rules_response_meta + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policies\_list\_response module +------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.tag_policies_list_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_attributes module +------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.tag_policy_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_create\_attributes module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_create_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_create\_data module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_create_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_create\_request module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_create_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_create\_type module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_create_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_data module +------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.tag_policy_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_include module +--------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_include + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_relationships module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_relationships + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_resource\_type module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_resource_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_response module +---------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_score\_attributes module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_score_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_score\_data module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_score_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_score\_relationship module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_score_relationship + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_score\_relationship\_data module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_score_relationship_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_score\_resource\_type module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_score_resource_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_score\_response module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_score_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_source module +-------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_source + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_type module +------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.tag_policy_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_update\_attributes module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_update_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_update\_data module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_update_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.tag\_policy\_update\_request module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.tag_policy_update_request + :members: + :show-inheritance: + datadog\_api\_client.v2.model.tags\_event\_attribute module ----------------------------------------------------------- @@ -42109,6 +44202,27 @@ datadog\_api\_client.v2.model.update\_flaky\_tests\_response\_result module :members: :show-inheritance: +datadog\_api\_client.v2.model.update\_form\_data module +------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.update_form_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.update\_form\_data\_attributes module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.update_form_data_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.update\_form\_request module +---------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.update_form_request + :members: + :show-inheritance: + datadog\_api\_client.v2.model.update\_on\_call\_notification\_rule\_request module ---------------------------------------------------------------------------------- @@ -42382,6 +44496,34 @@ datadog\_api\_client.v2.model.upsert\_allocation\_request module :members: :show-inheritance: +datadog\_api\_client.v2.model.upsert\_and\_publish\_form\_version\_data module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.upsert_and_publish_form_version_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.upsert\_and\_publish\_form\_version\_data\_attributes module +------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.upsert_and_publish_form_version_data_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.upsert\_and\_publish\_form\_version\_request module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.upsert_and_publish_form_version_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.upsert\_and\_publish\_form\_version\_upsert\_params module +---------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.upsert_and_publish_form_version_upsert_params + :members: + :show-inheritance: + datadog\_api\_client.v2.model.upsert\_catalog\_entity\_request module --------------------------------------------------------------------- @@ -42438,6 +44580,34 @@ datadog\_api\_client.v2.model.upsert\_cloud\_inventory\_sync\_config\_request\_d :members: :show-inheritance: +datadog\_api\_client.v2.model.upsert\_form\_version\_data module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.upsert_form_version_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.upsert\_form\_version\_data\_attributes module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.upsert_form_version_data_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.upsert\_form\_version\_request module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.upsert_form_version_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.upsert\_form\_version\_upsert\_params module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.upsert_form_version_upsert_params + :members: + :show-inheritance: + datadog\_api\_client.v2.model.upsert\_o\_auth\_scopes\_restriction\_data module ------------------------------------------------------------------------------- diff --git a/examples/v2/aws-integration/ValidateAWSCCMConfig.py b/examples/v2/aws-integration/ValidateAWSCCMConfig.py new file mode 100644 index 0000000000..b0eaab04f3 --- /dev/null +++ b/examples/v2/aws-integration/ValidateAWSCCMConfig.py @@ -0,0 +1,33 @@ +""" +Validate AWS CCM config returns "AWS CCM Config validation result" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.aws_integration_api import AWSIntegrationApi +from datadog_api_client.v2.model.aws_ccm_config_validation_request import AWSCcmConfigValidationRequest +from datadog_api_client.v2.model.aws_ccm_config_validation_request_attributes import ( + AWSCcmConfigValidationRequestAttributes, +) +from datadog_api_client.v2.model.aws_ccm_config_validation_request_data import AWSCcmConfigValidationRequestData +from datadog_api_client.v2.model.aws_ccm_config_validation_type import AWSCcmConfigValidationType + +body = AWSCcmConfigValidationRequest( + data=AWSCcmConfigValidationRequestData( + attributes=AWSCcmConfigValidationRequestAttributes( + account_id="123456789012", + bucket_name="billing", + bucket_region="us-east-1", + report_name="cost-and-usage-report", + report_prefix="reports", + ), + type=AWSCcmConfigValidationType.CCM_CONFIG_VALIDATION, + ), +) + +configuration = Configuration() +configuration.unstable_operations["validate_awsccm_config"] = True +with ApiClient(configuration) as api_client: + api_instance = AWSIntegrationApi(api_client) + response = api_instance.validate_awsccm_config(body=body) + + print(response) diff --git a/examples/v2/csm-ownership/CreateOwnershipFeedback.py b/examples/v2/csm-ownership/CreateOwnershipFeedback.py new file mode 100644 index 0000000000..f440107635 --- /dev/null +++ b/examples/v2/csm-ownership/CreateOwnershipFeedback.py @@ -0,0 +1,37 @@ +""" +Submit feedback on an ownership inference returns "Created" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.csm_ownership_api import CSMOwnershipApi +from datadog_api_client.v2.model.ownership_feedback_action import OwnershipFeedbackAction +from datadog_api_client.v2.model.ownership_feedback_request import OwnershipFeedbackRequest +from datadog_api_client.v2.model.ownership_feedback_request_attributes import OwnershipFeedbackRequestAttributes +from datadog_api_client.v2.model.ownership_feedback_request_data import OwnershipFeedbackRequestData +from datadog_api_client.v2.model.ownership_feedback_type import OwnershipFeedbackType +from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType + +body = OwnershipFeedbackRequest( + data=OwnershipFeedbackRequestData( + attributes=OwnershipFeedbackRequestAttributes( + action=OwnershipFeedbackAction.CONFIRM, + actor_handle="user@example.com", + actor_type="user", + corrected_owner_handle="team-b", + corrected_owner_type="team", + inference_checksum="abc123", + reason="Confirmed by team lead.", + ), + type=OwnershipFeedbackType.OWNERSHIP_FEEDBACK, + ), +) + +configuration = Configuration() +configuration.unstable_operations["create_ownership_feedback"] = True +with ApiClient(configuration) as api_client: + api_instance = CSMOwnershipApi(api_client) + response = api_instance.create_ownership_feedback( + resource_id="res-1", owner_type=OwnershipOwnerType.TEAM, body=body + ) + + print(response) diff --git a/examples/v2/csm-ownership/GetOwnershipEvidence.py b/examples/v2/csm-ownership/GetOwnershipEvidence.py new file mode 100644 index 0000000000..08d80155a1 --- /dev/null +++ b/examples/v2/csm-ownership/GetOwnershipEvidence.py @@ -0,0 +1,18 @@ +""" +Get the evidence for an ownership inference returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.csm_ownership_api import CSMOwnershipApi +from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType + +configuration = Configuration() +configuration.unstable_operations["get_ownership_evidence"] = True +with ApiClient(configuration) as api_client: + api_instance = CSMOwnershipApi(api_client) + response = api_instance.get_ownership_evidence( + resource_id="test-resource", + owner_type=OwnershipOwnerType.TEAM, + ) + + print(response) diff --git a/examples/v2/csm-ownership/GetOwnershipInference.py b/examples/v2/csm-ownership/GetOwnershipInference.py new file mode 100644 index 0000000000..22a2f846c1 --- /dev/null +++ b/examples/v2/csm-ownership/GetOwnershipInference.py @@ -0,0 +1,18 @@ +""" +Get an ownership inference by owner type returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.csm_ownership_api import CSMOwnershipApi +from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType + +configuration = Configuration() +configuration.unstable_operations["get_ownership_inference"] = True +with ApiClient(configuration) as api_client: + api_instance = CSMOwnershipApi(api_client) + response = api_instance.get_ownership_inference( + resource_id="test-resource", + owner_type=OwnershipOwnerType.TEAM, + ) + + print(response) diff --git a/examples/v2/csm-ownership/ListOwnershipHistory.py b/examples/v2/csm-ownership/ListOwnershipHistory.py new file mode 100644 index 0000000000..6acb0c21ad --- /dev/null +++ b/examples/v2/csm-ownership/ListOwnershipHistory.py @@ -0,0 +1,16 @@ +""" +List ownership inference history for a resource returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.csm_ownership_api import CSMOwnershipApi + +configuration = Configuration() +configuration.unstable_operations["list_ownership_history"] = True +with ApiClient(configuration) as api_client: + api_instance = CSMOwnershipApi(api_client) + response = api_instance.list_ownership_history( + resource_id="res-1", + ) + + print(response) diff --git a/examples/v2/csm-ownership/ListOwnershipHistoryByOwnerType.py b/examples/v2/csm-ownership/ListOwnershipHistoryByOwnerType.py new file mode 100644 index 0000000000..5778ba10c0 --- /dev/null +++ b/examples/v2/csm-ownership/ListOwnershipHistoryByOwnerType.py @@ -0,0 +1,18 @@ +""" +List ownership history by owner type returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.csm_ownership_api import CSMOwnershipApi +from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType + +configuration = Configuration() +configuration.unstable_operations["list_ownership_history_by_owner_type"] = True +with ApiClient(configuration) as api_client: + api_instance = CSMOwnershipApi(api_client) + response = api_instance.list_ownership_history_by_owner_type( + resource_id="res-1", + owner_type=OwnershipOwnerType.TEAM, + ) + + print(response) diff --git a/examples/v2/csm-ownership/ListOwnershipInferences.py b/examples/v2/csm-ownership/ListOwnershipInferences.py new file mode 100644 index 0000000000..fba31aac47 --- /dev/null +++ b/examples/v2/csm-ownership/ListOwnershipInferences.py @@ -0,0 +1,16 @@ +""" +List ownership inferences for a resource returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.csm_ownership_api import CSMOwnershipApi + +configuration = Configuration() +configuration.unstable_operations["list_ownership_inferences"] = True +with ApiClient(configuration) as api_client: + api_instance = CSMOwnershipApi(api_client) + response = api_instance.list_ownership_inferences( + resource_id="test-resource", + ) + + print(response) diff --git a/examples/v2/csm-settings/GetCSMAgentlessHostFacetInfo.py b/examples/v2/csm-settings/GetCSMAgentlessHostFacetInfo.py new file mode 100644 index 0000000000..9cecd6fe53 --- /dev/null +++ b/examples/v2/csm-settings/GetCSMAgentlessHostFacetInfo.py @@ -0,0 +1,16 @@ +""" +Get agentless host facet info returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.csm_settings_api import CSMSettingsApi + +configuration = Configuration() +configuration.unstable_operations["get_csm_agentless_host_facet_info"] = True +with ApiClient(configuration) as api_client: + api_instance = CSMSettingsApi(api_client) + response = api_instance.get_csm_agentless_host_facet_info( + facet="cloud_provider", + ) + + print(response) diff --git a/examples/v2/csm-settings/GetCSMUnifiedHostFacetInfo.py b/examples/v2/csm-settings/GetCSMUnifiedHostFacetInfo.py new file mode 100644 index 0000000000..9c2e7bea95 --- /dev/null +++ b/examples/v2/csm-settings/GetCSMUnifiedHostFacetInfo.py @@ -0,0 +1,16 @@ +""" +Get unified host facet info returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.csm_settings_api import CSMSettingsApi + +configuration = Configuration() +configuration.unstable_operations["get_csm_unified_host_facet_info"] = True +with ApiClient(configuration) as api_client: + api_instance = CSMSettingsApi(api_client) + response = api_instance.get_csm_unified_host_facet_info( + facet="cloud_provider", + ) + + print(response) diff --git a/examples/v2/csm-settings/ListCSMAgentlessHostFacets.py b/examples/v2/csm-settings/ListCSMAgentlessHostFacets.py new file mode 100644 index 0000000000..eb4789b1f7 --- /dev/null +++ b/examples/v2/csm-settings/ListCSMAgentlessHostFacets.py @@ -0,0 +1,14 @@ +""" +List agentless host facets returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.csm_settings_api import CSMSettingsApi + +configuration = Configuration() +configuration.unstable_operations["list_csm_agentless_host_facets"] = True +with ApiClient(configuration) as api_client: + api_instance = CSMSettingsApi(api_client) + response = api_instance.list_csm_agentless_host_facets() + + print(response) diff --git a/examples/v2/csm-settings/ListCSMAgentlessHosts.py b/examples/v2/csm-settings/ListCSMAgentlessHosts.py new file mode 100644 index 0000000000..2c996e3114 --- /dev/null +++ b/examples/v2/csm-settings/ListCSMAgentlessHosts.py @@ -0,0 +1,14 @@ +""" +List agentless hosts returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.csm_settings_api import CSMSettingsApi + +configuration = Configuration() +configuration.unstable_operations["list_csm_agentless_hosts"] = True +with ApiClient(configuration) as api_client: + api_instance = CSMSettingsApi(api_client) + response = api_instance.list_csm_agentless_hosts() + + print(response) diff --git a/examples/v2/csm-settings/ListCSMUnifiedHostFacets.py b/examples/v2/csm-settings/ListCSMUnifiedHostFacets.py new file mode 100644 index 0000000000..55ef56ff9b --- /dev/null +++ b/examples/v2/csm-settings/ListCSMUnifiedHostFacets.py @@ -0,0 +1,14 @@ +""" +List unified host facets returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.csm_settings_api import CSMSettingsApi + +configuration = Configuration() +configuration.unstable_operations["list_csm_unified_host_facets"] = True +with ApiClient(configuration) as api_client: + api_instance = CSMSettingsApi(api_client) + response = api_instance.list_csm_unified_host_facets() + + print(response) diff --git a/examples/v2/csm-settings/ListCSMUnifiedHosts.py b/examples/v2/csm-settings/ListCSMUnifiedHosts.py new file mode 100644 index 0000000000..3d502de7b0 --- /dev/null +++ b/examples/v2/csm-settings/ListCSMUnifiedHosts.py @@ -0,0 +1,14 @@ +""" +List unified hosts returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.csm_settings_api import CSMSettingsApi + +configuration = Configuration() +configuration.unstable_operations["list_csm_unified_hosts"] = True +with ApiClient(configuration) as api_client: + api_instance = CSMSettingsApi(api_client) + response = api_instance.list_csm_unified_hosts() + + print(response) diff --git a/examples/v2/dashboard-sharing/ListSharedDashboardsByDashboardId.py b/examples/v2/dashboard-sharing/ListSharedDashboardsByDashboardId.py new file mode 100644 index 0000000000..0f4cbf78b7 --- /dev/null +++ b/examples/v2/dashboard-sharing/ListSharedDashboardsByDashboardId.py @@ -0,0 +1,16 @@ +""" +List shared dashboards for a dashboard returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.dashboard_sharing_api import DashboardSharingApi + +configuration = Configuration() +configuration.unstable_operations["list_shared_dashboards_by_dashboard_id"] = True +with ApiClient(configuration) as api_client: + api_instance = DashboardSharingApi(api_client) + response = api_instance.list_shared_dashboards_by_dashboard_id( + dashboard_id="abc-def-ghi", + ) + + print(response) diff --git a/examples/v2/fleet-automation/ListFleetClusters.py b/examples/v2/fleet-automation/ListFleetClusters.py deleted file mode 100644 index 78aa5e7d81..0000000000 --- a/examples/v2/fleet-automation/ListFleetClusters.py +++ /dev/null @@ -1,14 +0,0 @@ -""" -List all fleet clusters returns "OK" response -""" - -from datadog_api_client import ApiClient, Configuration -from datadog_api_client.v2.api.fleet_automation_api import FleetAutomationApi - -configuration = Configuration() -configuration.unstable_operations["list_fleet_clusters"] = True -with ApiClient(configuration) as api_client: - api_instance = FleetAutomationApi(api_client) - response = api_instance.list_fleet_clusters() - - print(response) diff --git a/examples/v2/fleet-automation/ListFleetInstrumentedPods.py b/examples/v2/fleet-automation/ListFleetInstrumentedPods.py deleted file mode 100644 index 520664b3ff..0000000000 --- a/examples/v2/fleet-automation/ListFleetInstrumentedPods.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -List instrumented pods for a cluster returns "OK" response -""" - -from datadog_api_client import ApiClient, Configuration -from datadog_api_client.v2.api.fleet_automation_api import FleetAutomationApi - -configuration = Configuration() -configuration.unstable_operations["list_fleet_instrumented_pods"] = True -with ApiClient(configuration) as api_client: - api_instance = FleetAutomationApi(api_client) - response = api_instance.list_fleet_instrumented_pods( - cluster_name="cluster_name", - ) - - print(response) diff --git a/examples/v2/forms/CloneForm.py b/examples/v2/forms/CloneForm.py new file mode 100644 index 0000000000..e37337cd27 --- /dev/null +++ b/examples/v2/forms/CloneForm.py @@ -0,0 +1,28 @@ +""" +Clone a form returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.forms_api import FormsApi +from datadog_api_client.v2.model.clone_form_data import CloneFormData +from datadog_api_client.v2.model.clone_form_data_attributes import CloneFormDataAttributes +from datadog_api_client.v2.model.clone_form_request import CloneFormRequest +from datadog_api_client.v2.model.form_type import FormType +from uuid import UUID + +body = CloneFormRequest( + data=CloneFormData( + attributes=CloneFormDataAttributes( + name="Copy of My Form", + ), + type=FormType.FORMS, + ), +) + +configuration = Configuration() +configuration.unstable_operations["clone_form"] = True +with ApiClient(configuration) as api_client: + api_instance = FormsApi(api_client) + response = api_instance.clone_form(form_id=UUID("9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"), body=body) + + print(response) diff --git a/examples/v2/forms/CreateAndPublishForm.py b/examples/v2/forms/CreateAndPublishForm.py new file mode 100644 index 0000000000..6efd46b5b9 --- /dev/null +++ b/examples/v2/forms/CreateAndPublishForm.py @@ -0,0 +1,35 @@ +""" +Create and publish a form returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.forms_api import FormsApi +from datadog_api_client.v2.model.create_form_data import CreateFormData +from datadog_api_client.v2.model.create_form_data_attributes import CreateFormDataAttributes +from datadog_api_client.v2.model.create_form_request import CreateFormRequest +from datadog_api_client.v2.model.form_data_definition import FormDataDefinition +from datadog_api_client.v2.model.form_type import FormType +from datadog_api_client.v2.model.form_ui_definition import FormUiDefinition + +body = CreateFormRequest( + data=CreateFormData( + attributes=CreateFormDataAttributes( + anonymous=False, + data_definition=FormDataDefinition(), + description="A form to collect user feedback.", + idp_survey=False, + name="User Feedback Form", + single_response=False, + ui_definition=FormUiDefinition(), + ), + type=FormType.FORMS, + ), +) + +configuration = Configuration() +configuration.unstable_operations["create_and_publish_form"] = True +with ApiClient(configuration) as api_client: + api_instance = FormsApi(api_client) + response = api_instance.create_and_publish_form(body=body) + + print(response) diff --git a/examples/v2/forms/CreateForm.py b/examples/v2/forms/CreateForm.py new file mode 100644 index 0000000000..a0708eaad1 --- /dev/null +++ b/examples/v2/forms/CreateForm.py @@ -0,0 +1,35 @@ +""" +Create a form returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.forms_api import FormsApi +from datadog_api_client.v2.model.create_form_data import CreateFormData +from datadog_api_client.v2.model.create_form_data_attributes import CreateFormDataAttributes +from datadog_api_client.v2.model.create_form_request import CreateFormRequest +from datadog_api_client.v2.model.form_data_definition import FormDataDefinition +from datadog_api_client.v2.model.form_type import FormType +from datadog_api_client.v2.model.form_ui_definition import FormUiDefinition + +body = CreateFormRequest( + data=CreateFormData( + attributes=CreateFormDataAttributes( + anonymous=False, + data_definition=FormDataDefinition(), + description="A form to collect user feedback.", + idp_survey=False, + name="User Feedback Form", + single_response=False, + ui_definition=FormUiDefinition(), + ), + type=FormType.FORMS, + ), +) + +configuration = Configuration() +configuration.unstable_operations["create_form"] = True +with ApiClient(configuration) as api_client: + api_instance = FormsApi(api_client) + response = api_instance.create_form(body=body) + + print(response) diff --git a/examples/v2/forms/DeleteForm.py b/examples/v2/forms/DeleteForm.py new file mode 100644 index 0000000000..afa7c14c5c --- /dev/null +++ b/examples/v2/forms/DeleteForm.py @@ -0,0 +1,20 @@ +""" +Delete a form returns "OK" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.forms_api import FormsApi + +# there is a valid "form" in the system +FORM_DATA_ID = environ["FORM_DATA_ID"] + +configuration = Configuration() +configuration.unstable_operations["delete_form"] = True +with ApiClient(configuration) as api_client: + api_instance = FormsApi(api_client) + response = api_instance.delete_form( + form_id=FORM_DATA_ID, + ) + + print(response) diff --git a/examples/v2/forms/GetForm.py b/examples/v2/forms/GetForm.py new file mode 100644 index 0000000000..5b5718eef5 --- /dev/null +++ b/examples/v2/forms/GetForm.py @@ -0,0 +1,20 @@ +""" +Get a form returns "OK" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.forms_api import FormsApi + +# there is a valid "form" in the system +FORM_DATA_ID = environ["FORM_DATA_ID"] + +configuration = Configuration() +configuration.unstable_operations["get_form"] = True +with ApiClient(configuration) as api_client: + api_instance = FormsApi(api_client) + response = api_instance.get_form( + form_id=FORM_DATA_ID, + ) + + print(response) diff --git a/examples/v2/forms/ListForms.py b/examples/v2/forms/ListForms.py new file mode 100644 index 0000000000..a863705233 --- /dev/null +++ b/examples/v2/forms/ListForms.py @@ -0,0 +1,14 @@ +""" +List forms returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.forms_api import FormsApi + +configuration = Configuration() +configuration.unstable_operations["list_forms"] = True +with ApiClient(configuration) as api_client: + api_instance = FormsApi(api_client) + response = api_instance.list_forms() + + print(response) diff --git a/examples/v2/forms/PublishForm.py b/examples/v2/forms/PublishForm.py new file mode 100644 index 0000000000..fdea1e77cc --- /dev/null +++ b/examples/v2/forms/PublishForm.py @@ -0,0 +1,31 @@ +""" +Publish a form version returns "OK" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.forms_api import FormsApi +from datadog_api_client.v2.model.form_publication_type import FormPublicationType +from datadog_api_client.v2.model.publish_form_data import PublishFormData +from datadog_api_client.v2.model.publish_form_data_attributes import PublishFormDataAttributes +from datadog_api_client.v2.model.publish_form_request import PublishFormRequest + +# there is a valid "form" in the system +FORM_DATA_ID = environ["FORM_DATA_ID"] + +body = PublishFormRequest( + data=PublishFormData( + attributes=PublishFormDataAttributes( + version=1, + ), + type=FormPublicationType.FORM_PUBLICATIONS, + ), +) + +configuration = Configuration() +configuration.unstable_operations["publish_form"] = True +with ApiClient(configuration) as api_client: + api_instance = FormsApi(api_client) + response = api_instance.publish_form(form_id=FORM_DATA_ID, body=body) + + print(response) diff --git a/examples/v2/forms/UpdateForm.py b/examples/v2/forms/UpdateForm.py new file mode 100644 index 0000000000..44f5e3e998 --- /dev/null +++ b/examples/v2/forms/UpdateForm.py @@ -0,0 +1,43 @@ +""" +Update a form returns "OK" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.forms_api import FormsApi +from datadog_api_client.v2.model.form_datastore_config_attributes import FormDatastoreConfigAttributes +from datadog_api_client.v2.model.form_type import FormType +from datadog_api_client.v2.model.form_update_attributes import FormUpdateAttributes +from datadog_api_client.v2.model.update_form_data import UpdateFormData +from datadog_api_client.v2.model.update_form_data_attributes import UpdateFormDataAttributes +from datadog_api_client.v2.model.update_form_request import UpdateFormRequest +from uuid import UUID + +# there is a valid "form" in the system +FORM_DATA_ID = environ["FORM_DATA_ID"] + +body = UpdateFormRequest( + data=UpdateFormData( + attributes=UpdateFormDataAttributes( + form_update=FormUpdateAttributes( + datastore_config=FormDatastoreConfigAttributes( + datastore_id=UUID("5108ea24-dd83-4696-9caa-f069f73d0fad"), + primary_column_name="id", + primary_key_generation_strategy="none", + ), + description="An updated description.", + name="Updated Form Name", + ), + ), + id=FORM_DATA_ID, + type=FormType.FORMS, + ), +) + +configuration = Configuration() +configuration.unstable_operations["update_form"] = True +with ApiClient(configuration) as api_client: + api_instance = FormsApi(api_client) + response = api_instance.update_form(form_id=FORM_DATA_ID, body=body) + + print(response) diff --git a/examples/v2/forms/UpsertAndPublishFormVersion.py b/examples/v2/forms/UpsertAndPublishFormVersion.py new file mode 100644 index 0000000000..5a867580f9 --- /dev/null +++ b/examples/v2/forms/UpsertAndPublishFormVersion.py @@ -0,0 +1,55 @@ +""" +Upsert and publish a form version returns "OK" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.forms_api import FormsApi +from datadog_api_client.v2.model.form_data_definition import FormDataDefinition +from datadog_api_client.v2.model.form_data_definition_type import FormDataDefinitionType +from datadog_api_client.v2.model.form_ui_definition import FormUiDefinition +from datadog_api_client.v2.model.form_ui_definition_ui_theme import FormUiDefinitionUiTheme +from datadog_api_client.v2.model.form_ui_definition_ui_theme_primary_color import FormUiDefinitionUiThemePrimaryColor +from datadog_api_client.v2.model.form_version_type import FormVersionType +from datadog_api_client.v2.model.upsert_and_publish_form_version_data import UpsertAndPublishFormVersionData +from datadog_api_client.v2.model.upsert_and_publish_form_version_data_attributes import ( + UpsertAndPublishFormVersionDataAttributes, +) +from datadog_api_client.v2.model.upsert_and_publish_form_version_request import UpsertAndPublishFormVersionRequest +from datadog_api_client.v2.model.upsert_and_publish_form_version_upsert_params import ( + UpsertAndPublishFormVersionUpsertParams, +) + +# there is a valid "form" in the system +FORM_DATA_ID = environ["FORM_DATA_ID"] + +body = UpsertAndPublishFormVersionRequest( + data=UpsertAndPublishFormVersionData( + attributes=UpsertAndPublishFormVersionDataAttributes( + data_definition=FormDataDefinition( + description="Welcome to the Engineering Experience Survey.", + required=[], + title="Developer Experience Survey", + type=FormDataDefinitionType.OBJECT, + ), + ui_definition=FormUiDefinition( + ui_order=[], + ui_theme=FormUiDefinitionUiTheme( + primary_color=FormUiDefinitionUiThemePrimaryColor.GRAY, + ), + ), + upsert_params=UpsertAndPublishFormVersionUpsertParams( + etag="b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d", + ), + ), + type=FormVersionType.FORM_VERSIONS, + ), +) + +configuration = Configuration() +configuration.unstable_operations["upsert_and_publish_form_version"] = True +with ApiClient(configuration) as api_client: + api_instance = FormsApi(api_client) + response = api_instance.upsert_and_publish_form_version(form_id=FORM_DATA_ID, body=body) + + print(response) diff --git a/examples/v2/forms/UpsertFormVersion.py b/examples/v2/forms/UpsertFormVersion.py new file mode 100644 index 0000000000..d4a61fb1df --- /dev/null +++ b/examples/v2/forms/UpsertFormVersion.py @@ -0,0 +1,56 @@ +""" +Create or update a form version returns "OK" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.forms_api import FormsApi +from datadog_api_client.v2.model.form_data_definition import FormDataDefinition +from datadog_api_client.v2.model.form_data_definition_type import FormDataDefinitionType +from datadog_api_client.v2.model.form_ui_definition import FormUiDefinition +from datadog_api_client.v2.model.form_ui_definition_ui_theme import FormUiDefinitionUiTheme +from datadog_api_client.v2.model.form_ui_definition_ui_theme_primary_color import FormUiDefinitionUiThemePrimaryColor +from datadog_api_client.v2.model.form_version_state import FormVersionState +from datadog_api_client.v2.model.form_version_type import FormVersionType +from datadog_api_client.v2.model.latest_version_match_policy import LatestVersionMatchPolicy +from datadog_api_client.v2.model.upsert_form_version_data import UpsertFormVersionData +from datadog_api_client.v2.model.upsert_form_version_data_attributes import UpsertFormVersionDataAttributes +from datadog_api_client.v2.model.upsert_form_version_request import UpsertFormVersionRequest +from datadog_api_client.v2.model.upsert_form_version_upsert_params import UpsertFormVersionUpsertParams + +# there is a valid "form" in the system +FORM_DATA_ID = environ["FORM_DATA_ID"] + +body = UpsertFormVersionRequest( + data=UpsertFormVersionData( + attributes=UpsertFormVersionDataAttributes( + data_definition=FormDataDefinition( + description="Welcome to the Engineering Experience Survey.", + required=[], + title="Developer Experience Survey", + type=FormDataDefinitionType.OBJECT, + ), + state=FormVersionState.FROZEN, + ui_definition=FormUiDefinition( + ui_order=[], + ui_theme=FormUiDefinitionUiTheme( + primary_color=FormUiDefinitionUiThemePrimaryColor.GRAY, + ), + ), + upsert_params=UpsertFormVersionUpsertParams( + etag="b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d", + insert_only=False, + match_policy=LatestVersionMatchPolicy.NONE, + ), + ), + type=FormVersionType.FORM_VERSIONS, + ), +) + +configuration = Configuration() +configuration.unstable_operations["upsert_form_version"] = True +with ApiClient(configuration) as api_client: + api_instance = FormsApi(api_client) + response = api_instance.upsert_form_version(form_id=FORM_DATA_ID, body=body) + + print(response) diff --git a/examples/v2/google-chat-integration/CreateGoogleChatTargetAudience.py b/examples/v2/google-chat-integration/CreateGoogleChatTargetAudience.py new file mode 100644 index 0000000000..0804e7fc4a --- /dev/null +++ b/examples/v2/google-chat-integration/CreateGoogleChatTargetAudience.py @@ -0,0 +1,33 @@ +""" +Create a target audience returns "CREATED" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.google_chat_integration_api import GoogleChatIntegrationApi +from datadog_api_client.v2.model.google_chat_target_audience_create_request import GoogleChatTargetAudienceCreateRequest +from datadog_api_client.v2.model.google_chat_target_audience_create_request_attributes import ( + GoogleChatTargetAudienceCreateRequestAttributes, +) +from datadog_api_client.v2.model.google_chat_target_audience_create_request_data import ( + GoogleChatTargetAudienceCreateRequestData, +) +from datadog_api_client.v2.model.google_chat_target_audience_type import GoogleChatTargetAudienceType + +body = GoogleChatTargetAudienceCreateRequest( + data=GoogleChatTargetAudienceCreateRequestData( + attributes=GoogleChatTargetAudienceCreateRequestAttributes( + audience_id="fake-audience-id-1", + audience_name="fake audience name 1", + ), + type=GoogleChatTargetAudienceType.GOOGLE_CHAT_TARGET_AUDIENCE_TYPE, + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = GoogleChatIntegrationApi(api_client) + response = api_instance.create_google_chat_target_audience( + organization_binding_id="organization_binding_id", body=body + ) + + print(response) diff --git a/examples/v2/google-chat-integration/DeleteGoogleChatDelegatedUser.py b/examples/v2/google-chat-integration/DeleteGoogleChatDelegatedUser.py new file mode 100644 index 0000000000..71a07532b1 --- /dev/null +++ b/examples/v2/google-chat-integration/DeleteGoogleChatDelegatedUser.py @@ -0,0 +1,13 @@ +""" +Delete the delegated user returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.google_chat_integration_api import GoogleChatIntegrationApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = GoogleChatIntegrationApi(api_client) + api_instance.delete_google_chat_delegated_user( + organization_binding_id="organization_binding_id", + ) diff --git a/examples/v2/google-chat-integration/DeleteGoogleChatOrganization.py b/examples/v2/google-chat-integration/DeleteGoogleChatOrganization.py new file mode 100644 index 0000000000..485eab8663 --- /dev/null +++ b/examples/v2/google-chat-integration/DeleteGoogleChatOrganization.py @@ -0,0 +1,13 @@ +""" +Delete a Google Chat organization binding returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.google_chat_integration_api import GoogleChatIntegrationApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = GoogleChatIntegrationApi(api_client) + api_instance.delete_google_chat_organization( + organization_binding_id="organization_binding_id", + ) diff --git a/examples/v2/google-chat-integration/DeleteGoogleChatTargetAudience.py b/examples/v2/google-chat-integration/DeleteGoogleChatTargetAudience.py new file mode 100644 index 0000000000..a0a9c315ae --- /dev/null +++ b/examples/v2/google-chat-integration/DeleteGoogleChatTargetAudience.py @@ -0,0 +1,14 @@ +""" +Delete a target audience returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.google_chat_integration_api import GoogleChatIntegrationApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = GoogleChatIntegrationApi(api_client) + api_instance.delete_google_chat_target_audience( + organization_binding_id="organization_binding_id", + target_audience_id="target_audience_id", + ) diff --git a/examples/v2/google-chat-integration/GetGoogleChatDelegatedUser.py b/examples/v2/google-chat-integration/GetGoogleChatDelegatedUser.py new file mode 100644 index 0000000000..1035647e22 --- /dev/null +++ b/examples/v2/google-chat-integration/GetGoogleChatDelegatedUser.py @@ -0,0 +1,15 @@ +""" +Get the delegated user returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.google_chat_integration_api import GoogleChatIntegrationApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = GoogleChatIntegrationApi(api_client) + response = api_instance.get_google_chat_delegated_user( + organization_binding_id="organization_binding_id", + ) + + print(response) diff --git a/examples/v2/google-chat-integration/GetGoogleChatOrganization.py b/examples/v2/google-chat-integration/GetGoogleChatOrganization.py new file mode 100644 index 0000000000..fc45099d4c --- /dev/null +++ b/examples/v2/google-chat-integration/GetGoogleChatOrganization.py @@ -0,0 +1,15 @@ +""" +Get a Google Chat organization binding returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.google_chat_integration_api import GoogleChatIntegrationApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = GoogleChatIntegrationApi(api_client) + response = api_instance.get_google_chat_organization( + organization_binding_id="organization_binding_id", + ) + + print(response) diff --git a/examples/v2/google-chat-integration/GetGoogleChatTargetAudience.py b/examples/v2/google-chat-integration/GetGoogleChatTargetAudience.py new file mode 100644 index 0000000000..abde1c1754 --- /dev/null +++ b/examples/v2/google-chat-integration/GetGoogleChatTargetAudience.py @@ -0,0 +1,16 @@ +""" +Get a target audience returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.google_chat_integration_api import GoogleChatIntegrationApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = GoogleChatIntegrationApi(api_client) + response = api_instance.get_google_chat_target_audience( + organization_binding_id="organization_binding_id", + target_audience_id="target_audience_id", + ) + + print(response) diff --git a/examples/v2/google-chat-integration/ListGoogleChatOrganizations.py b/examples/v2/google-chat-integration/ListGoogleChatOrganizations.py new file mode 100644 index 0000000000..f9d78b2cac --- /dev/null +++ b/examples/v2/google-chat-integration/ListGoogleChatOrganizations.py @@ -0,0 +1,13 @@ +""" +Get all Google Chat organization bindings returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.google_chat_integration_api import GoogleChatIntegrationApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = GoogleChatIntegrationApi(api_client) + response = api_instance.list_google_chat_organizations() + + print(response) diff --git a/examples/v2/google-chat-integration/ListGoogleChatTargetAudiences.py b/examples/v2/google-chat-integration/ListGoogleChatTargetAudiences.py new file mode 100644 index 0000000000..91356fabcf --- /dev/null +++ b/examples/v2/google-chat-integration/ListGoogleChatTargetAudiences.py @@ -0,0 +1,15 @@ +""" +Get all target audiences returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.google_chat_integration_api import GoogleChatIntegrationApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = GoogleChatIntegrationApi(api_client) + response = api_instance.list_google_chat_target_audiences( + organization_binding_id="organization_binding_id", + ) + + print(response) diff --git a/examples/v2/google-chat-integration/UpdateGoogleChatTargetAudience.py b/examples/v2/google-chat-integration/UpdateGoogleChatTargetAudience.py new file mode 100644 index 0000000000..63f8db4441 --- /dev/null +++ b/examples/v2/google-chat-integration/UpdateGoogleChatTargetAudience.py @@ -0,0 +1,33 @@ +""" +Update a target audience returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.google_chat_integration_api import GoogleChatIntegrationApi +from datadog_api_client.v2.model.google_chat_target_audience_type import GoogleChatTargetAudienceType +from datadog_api_client.v2.model.google_chat_target_audience_update_request import GoogleChatTargetAudienceUpdateRequest +from datadog_api_client.v2.model.google_chat_target_audience_update_request_attributes import ( + GoogleChatTargetAudienceUpdateRequestAttributes, +) +from datadog_api_client.v2.model.google_chat_target_audience_update_request_data import ( + GoogleChatTargetAudienceUpdateRequestData, +) + +body = GoogleChatTargetAudienceUpdateRequest( + data=GoogleChatTargetAudienceUpdateRequestData( + attributes=GoogleChatTargetAudienceUpdateRequestAttributes( + audience_id="fake-audience-id-1", + audience_name="fake audience name 1", + ), + type=GoogleChatTargetAudienceType.GOOGLE_CHAT_TARGET_AUDIENCE_TYPE, + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = GoogleChatIntegrationApi(api_client) + response = api_instance.update_google_chat_target_audience( + organization_binding_id="organization_binding_id", target_audience_id="target_audience_id", body=body + ) + + print(response) diff --git a/examples/v2/incident-services/CreateIncidentService.py b/examples/v2/incident-services/CreateIncidentService.py deleted file mode 100644 index dcb330fe90..0000000000 --- a/examples/v2/incident-services/CreateIncidentService.py +++ /dev/null @@ -1,27 +0,0 @@ -""" -Create a new incident service returns "CREATED" response -""" - -from datadog_api_client import ApiClient, Configuration -from datadog_api_client.v2.api.incident_services_api import IncidentServicesApi -from datadog_api_client.v2.model.incident_service_create_attributes import IncidentServiceCreateAttributes -from datadog_api_client.v2.model.incident_service_create_data import IncidentServiceCreateData -from datadog_api_client.v2.model.incident_service_create_request import IncidentServiceCreateRequest -from datadog_api_client.v2.model.incident_service_type import IncidentServiceType - -body = IncidentServiceCreateRequest( - data=IncidentServiceCreateData( - type=IncidentServiceType.SERVICES, - attributes=IncidentServiceCreateAttributes( - name="Example-Incident-Service", - ), - ), -) - -configuration = Configuration() -configuration.unstable_operations["create_incident_service"] = True -with ApiClient(configuration) as api_client: - api_instance = IncidentServicesApi(api_client) - response = api_instance.create_incident_service(body=body) - - print(response) diff --git a/examples/v2/incident-services/DeleteIncidentService.py b/examples/v2/incident-services/DeleteIncidentService.py deleted file mode 100644 index cec10a0117..0000000000 --- a/examples/v2/incident-services/DeleteIncidentService.py +++ /dev/null @@ -1,18 +0,0 @@ -""" -Delete an existing incident service returns "OK" response -""" - -from os import environ -from datadog_api_client import ApiClient, Configuration -from datadog_api_client.v2.api.incident_services_api import IncidentServicesApi - -# there is a valid "service" in the system -SERVICE_DATA_ID = environ["SERVICE_DATA_ID"] - -configuration = Configuration() -configuration.unstable_operations["delete_incident_service"] = True -with ApiClient(configuration) as api_client: - api_instance = IncidentServicesApi(api_client) - api_instance.delete_incident_service( - service_id=SERVICE_DATA_ID, - ) diff --git a/examples/v2/incident-services/GetIncidentService.py b/examples/v2/incident-services/GetIncidentService.py deleted file mode 100644 index a5eb69f2ac..0000000000 --- a/examples/v2/incident-services/GetIncidentService.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Get details of an incident service returns "OK" response -""" - -from os import environ -from datadog_api_client import ApiClient, Configuration -from datadog_api_client.v2.api.incident_services_api import IncidentServicesApi - -# there is a valid "service" in the system -SERVICE_DATA_ID = environ["SERVICE_DATA_ID"] - -configuration = Configuration() -configuration.unstable_operations["get_incident_service"] = True -with ApiClient(configuration) as api_client: - api_instance = IncidentServicesApi(api_client) - response = api_instance.get_incident_service( - service_id=SERVICE_DATA_ID, - ) - - print(response) diff --git a/examples/v2/incident-services/ListIncidentServices.py b/examples/v2/incident-services/ListIncidentServices.py deleted file mode 100644 index 6bf319499a..0000000000 --- a/examples/v2/incident-services/ListIncidentServices.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Get a list of all incident services returns "OK" response -""" - -from os import environ -from datadog_api_client import ApiClient, Configuration -from datadog_api_client.v2.api.incident_services_api import IncidentServicesApi - -# there is a valid "service" in the system -SERVICE_DATA_ATTRIBUTES_NAME = environ["SERVICE_DATA_ATTRIBUTES_NAME"] - -configuration = Configuration() -configuration.unstable_operations["list_incident_services"] = True -with ApiClient(configuration) as api_client: - api_instance = IncidentServicesApi(api_client) - response = api_instance.list_incident_services( - filter=SERVICE_DATA_ATTRIBUTES_NAME, - ) - - print(response) diff --git a/examples/v2/incident-services/UpdateIncidentService.py b/examples/v2/incident-services/UpdateIncidentService.py deleted file mode 100644 index 0e7ca92627..0000000000 --- a/examples/v2/incident-services/UpdateIncidentService.py +++ /dev/null @@ -1,32 +0,0 @@ -""" -Update an existing incident service returns "OK" response -""" - -from os import environ -from datadog_api_client import ApiClient, Configuration -from datadog_api_client.v2.api.incident_services_api import IncidentServicesApi -from datadog_api_client.v2.model.incident_service_type import IncidentServiceType -from datadog_api_client.v2.model.incident_service_update_attributes import IncidentServiceUpdateAttributes -from datadog_api_client.v2.model.incident_service_update_data import IncidentServiceUpdateData -from datadog_api_client.v2.model.incident_service_update_request import IncidentServiceUpdateRequest - -# there is a valid "service" in the system -SERVICE_DATA_ATTRIBUTES_NAME = environ["SERVICE_DATA_ATTRIBUTES_NAME"] -SERVICE_DATA_ID = environ["SERVICE_DATA_ID"] - -body = IncidentServiceUpdateRequest( - data=IncidentServiceUpdateData( - type=IncidentServiceType.SERVICES, - attributes=IncidentServiceUpdateAttributes( - name="service name-updated", - ), - ), -) - -configuration = Configuration() -configuration.unstable_operations["update_incident_service"] = True -with ApiClient(configuration) as api_client: - api_instance = IncidentServicesApi(api_client) - response = api_instance.update_incident_service(service_id=SERVICE_DATA_ID, body=body) - - print(response) diff --git a/examples/v2/llm-observability/DeleteLLMObsAnnotations.py b/examples/v2/llm-observability/DeleteLLMObsAnnotations.py new file mode 100644 index 0000000000..91285414a6 --- /dev/null +++ b/examples/v2/llm-observability/DeleteLLMObsAnnotations.py @@ -0,0 +1,33 @@ +""" +Delete annotations returns "OK — annotations deleted. Errors for annotations that could not be deleted are listed in +`errors`." response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.llm_observability_api import LLMObservabilityApi +from datadog_api_client.v2.model.llm_obs_annotations_type import LLMObsAnnotationsType +from datadog_api_client.v2.model.llm_obs_delete_annotations_data_attributes_request import ( + LLMObsDeleteAnnotationsDataAttributesRequest, +) +from datadog_api_client.v2.model.llm_obs_delete_annotations_data_request import LLMObsDeleteAnnotationsDataRequest +from datadog_api_client.v2.model.llm_obs_delete_annotations_request import LLMObsDeleteAnnotationsRequest + +body = LLMObsDeleteAnnotationsRequest( + data=LLMObsDeleteAnnotationsDataRequest( + attributes=LLMObsDeleteAnnotationsDataAttributesRequest( + annotation_ids=[ + "00000000-0000-0000-0000-000000000000", + "00000000-0000-0000-0000-000000000001", + ], + ), + type=LLMObsAnnotationsType.ANNOTATIONS, + ), +) + +configuration = Configuration() +configuration.unstable_operations["delete_llm_obs_annotations"] = True +with ApiClient(configuration) as api_client: + api_instance = LLMObservabilityApi(api_client) + response = api_instance.delete_llm_obs_annotations(queue_id="queue_id", body=body) + + print(response) diff --git a/examples/v2/llm-observability/DeleteLLMObsPatternsConfig.py b/examples/v2/llm-observability/DeleteLLMObsPatternsConfig.py new file mode 100644 index 0000000000..fc94642ff2 --- /dev/null +++ b/examples/v2/llm-observability/DeleteLLMObsPatternsConfig.py @@ -0,0 +1,14 @@ +""" +Delete a patterns configuration returns "No Content" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.llm_observability_api import LLMObservabilityApi + +configuration = Configuration() +configuration.unstable_operations["delete_llm_obs_patterns_config"] = True +with ApiClient(configuration) as api_client: + api_instance = LLMObservabilityApi(api_client) + api_instance.delete_llm_obs_patterns_config( + config_id="config_id", + ) diff --git a/examples/v2/llm-observability/GetLLMObsPatternsConfig.py b/examples/v2/llm-observability/GetLLMObsPatternsConfig.py new file mode 100644 index 0000000000..3c9ac87ad5 --- /dev/null +++ b/examples/v2/llm-observability/GetLLMObsPatternsConfig.py @@ -0,0 +1,14 @@ +""" +Get a patterns configuration returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.llm_observability_api import LLMObservabilityApi + +configuration = Configuration() +configuration.unstable_operations["get_llm_obs_patterns_config"] = True +with ApiClient(configuration) as api_client: + api_instance = LLMObservabilityApi(api_client) + response = api_instance.get_llm_obs_patterns_config() + + print(response) diff --git a/examples/v2/llm-observability/GetLLMObsPatternsRunStatus.py b/examples/v2/llm-observability/GetLLMObsPatternsRunStatus.py new file mode 100644 index 0000000000..fad239522c --- /dev/null +++ b/examples/v2/llm-observability/GetLLMObsPatternsRunStatus.py @@ -0,0 +1,16 @@ +""" +Get patterns run status returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.llm_observability_api import LLMObservabilityApi + +configuration = Configuration() +configuration.unstable_operations["get_llm_obs_patterns_run_status"] = True +with ApiClient(configuration) as api_client: + api_instance = LLMObservabilityApi(api_client) + response = api_instance.get_llm_obs_patterns_run_status( + config_id="config_id", + ) + + print(response) diff --git a/examples/v2/llm-observability/ListLLMObsPatternsClusteredPoints.py b/examples/v2/llm-observability/ListLLMObsPatternsClusteredPoints.py new file mode 100644 index 0000000000..5b9174b7a6 --- /dev/null +++ b/examples/v2/llm-observability/ListLLMObsPatternsClusteredPoints.py @@ -0,0 +1,16 @@ +""" +List patterns clustered points returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.llm_observability_api import LLMObservabilityApi + +configuration = Configuration() +configuration.unstable_operations["list_llm_obs_patterns_clustered_points"] = True +with ApiClient(configuration) as api_client: + api_instance = LLMObservabilityApi(api_client) + response = api_instance.list_llm_obs_patterns_clustered_points( + topic_id="topic_id", + ) + + print(response) diff --git a/examples/v2/llm-observability/ListLLMObsPatternsConfigs.py b/examples/v2/llm-observability/ListLLMObsPatternsConfigs.py new file mode 100644 index 0000000000..161feea78c --- /dev/null +++ b/examples/v2/llm-observability/ListLLMObsPatternsConfigs.py @@ -0,0 +1,14 @@ +""" +List patterns configurations returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.llm_observability_api import LLMObservabilityApi + +configuration = Configuration() +configuration.unstable_operations["list_llm_obs_patterns_configs"] = True +with ApiClient(configuration) as api_client: + api_instance = LLMObservabilityApi(api_client) + response = api_instance.list_llm_obs_patterns_configs() + + print(response) diff --git a/examples/v2/llm-observability/ListLLMObsPatternsRuns.py b/examples/v2/llm-observability/ListLLMObsPatternsRuns.py new file mode 100644 index 0000000000..9eb0d769d4 --- /dev/null +++ b/examples/v2/llm-observability/ListLLMObsPatternsRuns.py @@ -0,0 +1,16 @@ +""" +List patterns runs returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.llm_observability_api import LLMObservabilityApi + +configuration = Configuration() +configuration.unstable_operations["list_llm_obs_patterns_runs"] = True +with ApiClient(configuration) as api_client: + api_instance = LLMObservabilityApi(api_client) + response = api_instance.list_llm_obs_patterns_runs( + config_id="config_id", + ) + + print(response) diff --git a/examples/v2/llm-observability/ListLLMObsPatternsTopics.py b/examples/v2/llm-observability/ListLLMObsPatternsTopics.py new file mode 100644 index 0000000000..d14f6a5241 --- /dev/null +++ b/examples/v2/llm-observability/ListLLMObsPatternsTopics.py @@ -0,0 +1,16 @@ +""" +List patterns topics returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.llm_observability_api import LLMObservabilityApi + +configuration = Configuration() +configuration.unstable_operations["list_llm_obs_patterns_topics"] = True +with ApiClient(configuration) as api_client: + api_instance = LLMObservabilityApi(api_client) + response = api_instance.list_llm_obs_patterns_topics( + config_id="config_id", + ) + + print(response) diff --git a/examples/v2/llm-observability/ListLLMObsPatternsTopicsWithClusteredPoints.py b/examples/v2/llm-observability/ListLLMObsPatternsTopicsWithClusteredPoints.py new file mode 100644 index 0000000000..633ef0e56b --- /dev/null +++ b/examples/v2/llm-observability/ListLLMObsPatternsTopicsWithClusteredPoints.py @@ -0,0 +1,16 @@ +""" +List patterns topics with clustered points returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.llm_observability_api import LLMObservabilityApi + +configuration = Configuration() +configuration.unstable_operations["list_llm_obs_patterns_topics_with_clustered_points"] = True +with ApiClient(configuration) as api_client: + api_instance = LLMObservabilityApi(api_client) + response = api_instance.list_llm_obs_patterns_topics_with_clustered_points( + config_id="config_id", + ) + + print(response) diff --git a/examples/v2/llm-observability/TriggerLLMObsPatterns.py b/examples/v2/llm-observability/TriggerLLMObsPatterns.py new file mode 100644 index 0000000000..577e20f221 --- /dev/null +++ b/examples/v2/llm-observability/TriggerLLMObsPatterns.py @@ -0,0 +1,29 @@ +""" +Trigger a patterns run returns "Accepted" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.llm_observability_api import LLMObservabilityApi +from datadog_api_client.v2.model.llm_obs_patterns_request_type import LLMObsPatternsRequestType +from datadog_api_client.v2.model.llm_obs_patterns_trigger_request import LLMObsPatternsTriggerRequest +from datadog_api_client.v2.model.llm_obs_patterns_trigger_request_attributes import ( + LLMObsPatternsTriggerRequestAttributes, +) +from datadog_api_client.v2.model.llm_obs_patterns_trigger_request_data import LLMObsPatternsTriggerRequestData + +body = LLMObsPatternsTriggerRequest( + data=LLMObsPatternsTriggerRequestData( + attributes=LLMObsPatternsTriggerRequestAttributes( + config_id="a7c8d9e0-1234-5678-9abc-def012345678", + ), + type=LLMObsPatternsRequestType.TOPIC_DISCOVERY, + ), +) + +configuration = Configuration() +configuration.unstable_operations["trigger_llm_obs_patterns"] = True +with ApiClient(configuration) as api_client: + api_instance = LLMObservabilityApi(api_client) + response = api_instance.trigger_llm_obs_patterns(body=body) + + print(response) diff --git a/examples/v2/llm-observability/UpsertLLMObsAnnotations.py b/examples/v2/llm-observability/UpsertLLMObsAnnotations.py new file mode 100644 index 0000000000..5ee6bde64b --- /dev/null +++ b/examples/v2/llm-observability/UpsertLLMObsAnnotations.py @@ -0,0 +1,46 @@ +""" +Create or update annotations returns "OK — annotations created or updated. Per-item errors are listed in `errors`." +response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.llm_observability_api import LLMObservabilityApi +from datadog_api_client.v2.model.llm_obs_annotation_label_value import LLMObsAnnotationLabelValue +from datadog_api_client.v2.model.llm_obs_annotations_data_attributes_request import ( + LLMObsAnnotationsDataAttributesRequest, +) +from datadog_api_client.v2.model.llm_obs_annotations_data_request import LLMObsAnnotationsDataRequest +from datadog_api_client.v2.model.llm_obs_annotations_request import LLMObsAnnotationsRequest +from datadog_api_client.v2.model.llm_obs_annotations_type import LLMObsAnnotationsType +from datadog_api_client.v2.model.llm_obs_upsert_annotation_item import LLMObsUpsertAnnotationItem + +body = LLMObsAnnotationsRequest( + data=LLMObsAnnotationsDataRequest( + attributes=LLMObsAnnotationsDataAttributesRequest( + annotations=[ + LLMObsUpsertAnnotationItem( + interaction_id="00000000-0000-0000-0000-000000000001", + label_values=[ + LLMObsAnnotationLabelValue( + label_schema_id="abc-123", + value="good", + ), + LLMObsAnnotationLabelValue( + label_schema_id="ef56gh78", + value="positive", + ), + ], + ), + ], + ), + type=LLMObsAnnotationsType.ANNOTATIONS, + ), +) + +configuration = Configuration() +configuration.unstable_operations["upsert_llm_obs_annotations"] = True +with ApiClient(configuration) as api_client: + api_instance = LLMObservabilityApi(api_client) + response = api_instance.upsert_llm_obs_annotations(queue_id="queue_id", body=body) + + print(response) diff --git a/examples/v2/llm-observability/UpsertLLMObsPatternsConfig.py b/examples/v2/llm-observability/UpsertLLMObsPatternsConfig.py new file mode 100644 index 0000000000..9598d569f4 --- /dev/null +++ b/examples/v2/llm-observability/UpsertLLMObsPatternsConfig.py @@ -0,0 +1,41 @@ +""" +Create or update a patterns configuration returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.llm_observability_api import LLMObservabilityApi +from datadog_api_client.v2.model.llm_obs_patterns_config_type import LLMObsPatternsConfigType +from datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request import LLMObsPatternsConfigUpsertRequest +from datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request_attributes import ( + LLMObsPatternsConfigUpsertRequestAttributes, +) +from datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request_data import ( + LLMObsPatternsConfigUpsertRequestData, +) + +body = LLMObsPatternsConfigUpsertRequest( + data=LLMObsPatternsConfigUpsertRequestData( + attributes=LLMObsPatternsConfigUpsertRequestAttributes( + account_id="1000000001", + config_id="a7c8d9e0-1234-5678-9abc-def012345678", + evp_query="@ml_app:support-bot", + hierarchy_depth=2, + integration_provider="openai", + model_name="gpt-4o", + name="Support chatbot topics", + num_records=1000, + sampling_ratio=0.1, + scope="", + template="", + ), + type=LLMObsPatternsConfigType.TOPIC_DISCOVERY_CONFIGS, + ), +) + +configuration = Configuration() +configuration.unstable_operations["upsert_llm_obs_patterns_config"] = True +with ApiClient(configuration) as api_client: + api_instance = LLMObservabilityApi(api_client) + response = api_instance.upsert_llm_obs_patterns_config(body=body) + + print(response) diff --git a/examples/v2/metrics/CreateTagIndexingRule.py b/examples/v2/metrics/CreateTagIndexingRule.py new file mode 100644 index 0000000000..1295c06d61 --- /dev/null +++ b/examples/v2/metrics/CreateTagIndexingRule.py @@ -0,0 +1,53 @@ +""" +Create a tag indexing rule returns "Created" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.metrics_api import MetricsApi +from datadog_api_client.v2.model.tag_indexing_rule_create_attributes import TagIndexingRuleCreateAttributes +from datadog_api_client.v2.model.tag_indexing_rule_create_data import TagIndexingRuleCreateData +from datadog_api_client.v2.model.tag_indexing_rule_create_request import TagIndexingRuleCreateRequest +from datadog_api_client.v2.model.tag_indexing_rule_dynamic_tags import TagIndexingRuleDynamicTags +from datadog_api_client.v2.model.tag_indexing_rule_metric_match import TagIndexingRuleMetricMatch +from datadog_api_client.v2.model.tag_indexing_rule_options import TagIndexingRuleOptions +from datadog_api_client.v2.model.tag_indexing_rule_options_data import TagIndexingRuleOptionsData +from datadog_api_client.v2.model.tag_indexing_rule_type import TagIndexingRuleType + +body = TagIndexingRuleCreateRequest( + data=TagIndexingRuleCreateData( + attributes=TagIndexingRuleCreateAttributes( + exclude_tags_mode=False, + ignored_metric_name_matches=[], + metric_name_matches=[ + "dd.test.*", + ], + name="my-indexing-rule", + options=TagIndexingRuleOptions( + data=TagIndexingRuleOptionsData( + dynamic_tags=TagIndexingRuleDynamicTags( + queried_tags_window_seconds=3600, + related_asset_tags=False, + ), + manage_preexisting_metrics=True, + metric_match=TagIndexingRuleMetricMatch( + queried_window_seconds=3600, + ), + override_previous_rules=False, + ), + version=1, + ), + tags=[ + "env", + "service", + ], + ), + type=TagIndexingRuleType.TAG_INDEXING_RULES, + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MetricsApi(api_client) + response = api_instance.create_tag_indexing_rule(body=body) + + print(response) diff --git a/examples/v2/metrics/CreateTagIndexingRuleExemption.py b/examples/v2/metrics/CreateTagIndexingRuleExemption.py new file mode 100644 index 0000000000..ccaec3cab8 --- /dev/null +++ b/examples/v2/metrics/CreateTagIndexingRuleExemption.py @@ -0,0 +1,28 @@ +""" +Create a tag indexing rule exemption returns "Created" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.metrics_api import MetricsApi +from datadog_api_client.v2.model.tag_indexing_rule_exemption_create_attributes import ( + TagIndexingRuleExemptionCreateAttributes, +) +from datadog_api_client.v2.model.tag_indexing_rule_exemption_create_data import TagIndexingRuleExemptionCreateData +from datadog_api_client.v2.model.tag_indexing_rule_exemption_create_request import TagIndexingRuleExemptionCreateRequest +from datadog_api_client.v2.model.tag_indexing_rule_exemption_type import TagIndexingRuleExemptionType + +body = TagIndexingRuleExemptionCreateRequest( + data=TagIndexingRuleExemptionCreateData( + attributes=TagIndexingRuleExemptionCreateAttributes( + reason="This metric has a pre-existing tag configuration.", + ), + type=TagIndexingRuleExemptionType.TAG_INDEXING_RULE_EXEMPTIONS, + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MetricsApi(api_client) + response = api_instance.create_tag_indexing_rule_exemption(metric_name="metric_name", body=body) + + print(response) diff --git a/examples/v2/metrics/DeleteTagIndexingRule.py b/examples/v2/metrics/DeleteTagIndexingRule.py new file mode 100644 index 0000000000..c35ce08945 --- /dev/null +++ b/examples/v2/metrics/DeleteTagIndexingRule.py @@ -0,0 +1,17 @@ +""" +Delete a tag indexing rule returns "No Content" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.metrics_api import MetricsApi + +# there is a valid "tag_indexing_rule" in the system +TAG_INDEXING_RULE_DATA_ID = environ["TAG_INDEXING_RULE_DATA_ID"] + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MetricsApi(api_client) + api_instance.delete_tag_indexing_rule( + id=TAG_INDEXING_RULE_DATA_ID, + ) diff --git a/examples/v2/metrics/DeleteTagIndexingRuleExemption.py b/examples/v2/metrics/DeleteTagIndexingRuleExemption.py new file mode 100644 index 0000000000..f5f0c04df3 --- /dev/null +++ b/examples/v2/metrics/DeleteTagIndexingRuleExemption.py @@ -0,0 +1,13 @@ +""" +Delete a tag indexing rule exemption returns "No Content" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.metrics_api import MetricsApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MetricsApi(api_client) + api_instance.delete_tag_indexing_rule_exemption( + metric_name="metric_name", + ) diff --git a/examples/v2/metrics/GetTagIndexingRule.py b/examples/v2/metrics/GetTagIndexingRule.py new file mode 100644 index 0000000000..10f8fe2929 --- /dev/null +++ b/examples/v2/metrics/GetTagIndexingRule.py @@ -0,0 +1,19 @@ +""" +Get a tag indexing rule returns "OK" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.metrics_api import MetricsApi + +# there is a valid "tag_indexing_rule" in the system +TAG_INDEXING_RULE_DATA_ID = environ["TAG_INDEXING_RULE_DATA_ID"] + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MetricsApi(api_client) + response = api_instance.get_tag_indexing_rule( + id=TAG_INDEXING_RULE_DATA_ID, + ) + + print(response) diff --git a/examples/v2/metrics/GetTagIndexingRuleExemption.py b/examples/v2/metrics/GetTagIndexingRuleExemption.py new file mode 100644 index 0000000000..00186e4258 --- /dev/null +++ b/examples/v2/metrics/GetTagIndexingRuleExemption.py @@ -0,0 +1,15 @@ +""" +Get a tag indexing rule exemption returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.metrics_api import MetricsApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MetricsApi(api_client) + response = api_instance.get_tag_indexing_rule_exemption( + metric_name="metric_name", + ) + + print(response) diff --git a/examples/v2/metrics/ListTagIndexingRules.py b/examples/v2/metrics/ListTagIndexingRules.py new file mode 100644 index 0000000000..31f63dbd77 --- /dev/null +++ b/examples/v2/metrics/ListTagIndexingRules.py @@ -0,0 +1,13 @@ +""" +List tag indexing rules returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.metrics_api import MetricsApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MetricsApi(api_client) + response = api_instance.list_tag_indexing_rules() + + print(response) diff --git a/examples/v2/metrics/ListTagIndexingRulesForMetric.py b/examples/v2/metrics/ListTagIndexingRulesForMetric.py new file mode 100644 index 0000000000..462b8b6580 --- /dev/null +++ b/examples/v2/metrics/ListTagIndexingRulesForMetric.py @@ -0,0 +1,15 @@ +""" +List tag indexing rules for a metric returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.metrics_api import MetricsApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MetricsApi(api_client) + response = api_instance.list_tag_indexing_rules_for_metric( + metric_name="ExampleMetric", + ) + + print(response) diff --git a/examples/v2/metrics/ReorderTagIndexingRules.py b/examples/v2/metrics/ReorderTagIndexingRules.py new file mode 100644 index 0000000000..b7f5738d71 --- /dev/null +++ b/examples/v2/metrics/ReorderTagIndexingRules.py @@ -0,0 +1,30 @@ +""" +Reorder tag indexing rules returns "No Content" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.metrics_api import MetricsApi +from datadog_api_client.v2.model.tag_indexing_rule_order_attributes import TagIndexingRuleOrderAttributes +from datadog_api_client.v2.model.tag_indexing_rule_order_data import TagIndexingRuleOrderData +from datadog_api_client.v2.model.tag_indexing_rule_order_request import TagIndexingRuleOrderRequest +from datadog_api_client.v2.model.tag_indexing_rule_type import TagIndexingRuleType + +# there is a valid "tag_indexing_rule" in the system +TAG_INDEXING_RULE_DATA_ID = environ["TAG_INDEXING_RULE_DATA_ID"] + +body = TagIndexingRuleOrderRequest( + data=TagIndexingRuleOrderData( + attributes=TagIndexingRuleOrderAttributes( + rule_ids=[ + TAG_INDEXING_RULE_DATA_ID, + ], + ), + type=TagIndexingRuleType.TAG_INDEXING_RULES, + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MetricsApi(api_client) + api_instance.reorder_tag_indexing_rules(body=body) diff --git a/examples/v2/metrics/UpdateTagIndexingRule.py b/examples/v2/metrics/UpdateTagIndexingRule.py new file mode 100644 index 0000000000..8377df7b24 --- /dev/null +++ b/examples/v2/metrics/UpdateTagIndexingRule.py @@ -0,0 +1,57 @@ +""" +Update a tag indexing rule returns "OK" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.metrics_api import MetricsApi +from datadog_api_client.v2.model.tag_indexing_rule_dynamic_tags import TagIndexingRuleDynamicTags +from datadog_api_client.v2.model.tag_indexing_rule_metric_match import TagIndexingRuleMetricMatch +from datadog_api_client.v2.model.tag_indexing_rule_options import TagIndexingRuleOptions +from datadog_api_client.v2.model.tag_indexing_rule_options_data import TagIndexingRuleOptionsData +from datadog_api_client.v2.model.tag_indexing_rule_type import TagIndexingRuleType +from datadog_api_client.v2.model.tag_indexing_rule_update_attributes import TagIndexingRuleUpdateAttributes +from datadog_api_client.v2.model.tag_indexing_rule_update_data import TagIndexingRuleUpdateData +from datadog_api_client.v2.model.tag_indexing_rule_update_request import TagIndexingRuleUpdateRequest + +# there is a valid "tag_indexing_rule" in the system +TAG_INDEXING_RULE_DATA_ID = environ["TAG_INDEXING_RULE_DATA_ID"] + +body = TagIndexingRuleUpdateRequest( + data=TagIndexingRuleUpdateData( + attributes=TagIndexingRuleUpdateAttributes( + ignored_metric_name_matches=[], + metric_name_matches=[ + "dd.test.*", + ], + name="my-indexing-rule", + options=TagIndexingRuleOptions( + data=TagIndexingRuleOptionsData( + dynamic_tags=TagIndexingRuleDynamicTags( + queried_tags_window_seconds=3600, + related_asset_tags=False, + ), + manage_preexisting_metrics=True, + metric_match=TagIndexingRuleMetricMatch( + queried_window_seconds=3600, + ), + override_previous_rules=False, + ), + version=1, + ), + rule_order=2, + tags=[ + "env", + "service", + ], + ), + type=TagIndexingRuleType.TAG_INDEXING_RULES, + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MetricsApi(api_client) + response = api_instance.update_tag_indexing_rule(id=TAG_INDEXING_RULE_DATA_ID, body=body) + + print(response) diff --git a/examples/v2/microsoft-teams-integration/DeleteMSTeamsUserBinding.py b/examples/v2/microsoft-teams-integration/DeleteMSTeamsUserBinding.py new file mode 100644 index 0000000000..f83fe8a7b8 --- /dev/null +++ b/examples/v2/microsoft-teams-integration/DeleteMSTeamsUserBinding.py @@ -0,0 +1,13 @@ +""" +Delete user binding returns "No Content" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.microsoft_teams_integration_api import MicrosoftTeamsIntegrationApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MicrosoftTeamsIntegrationApi(api_client) + api_instance.delete_ms_teams_user_binding( + tenant_id="tenant_id", + ) diff --git a/examples/v2/network-health-insights/ListNetworkHealthInsights.py b/examples/v2/network-health-insights/ListNetworkHealthInsights.py new file mode 100644 index 0000000000..196895a898 --- /dev/null +++ b/examples/v2/network-health-insights/ListNetworkHealthInsights.py @@ -0,0 +1,14 @@ +""" +List network health insights returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.network_health_insights_api import NetworkHealthInsightsApi + +configuration = Configuration() +configuration.unstable_operations["list_network_health_insights"] = True +with ApiClient(configuration) as api_client: + api_instance = NetworkHealthInsightsApi(api_client) + response = api_instance.list_network_health_insights() + + print(response) diff --git a/examples/v2/organizations/ListGlobalOrgs.py b/examples/v2/organizations/ListGlobalOrgs.py new file mode 100644 index 0000000000..c124c0aec8 --- /dev/null +++ b/examples/v2/organizations/ListGlobalOrgs.py @@ -0,0 +1,15 @@ +""" +List global orgs returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.organizations_api import OrganizationsApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = OrganizationsApi(api_client) + response = api_instance.list_global_orgs( + user_handle="user@example.com", + ) + + print(response) diff --git a/examples/v2/organizations/ListGlobalOrgs_465966063.py b/examples/v2/organizations/ListGlobalOrgs_465966063.py new file mode 100644 index 0000000000..0c158f1136 --- /dev/null +++ b/examples/v2/organizations/ListGlobalOrgs_465966063.py @@ -0,0 +1,15 @@ +""" +List global orgs returns "OK" response with pagination +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.organizations_api import OrganizationsApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = OrganizationsApi(api_client) + items = api_instance.list_global_orgs_with_pagination( + user_handle="user@example.com", + ) + for item in items: + print(item) diff --git a/examples/v2/organizations/UpdateLoginOrgConfigsMaxSessionDuration.py b/examples/v2/organizations/UpdateLoginOrgConfigsMaxSessionDuration.py new file mode 100644 index 0000000000..e6f750eb1d --- /dev/null +++ b/examples/v2/organizations/UpdateLoginOrgConfigsMaxSessionDuration.py @@ -0,0 +1,24 @@ +""" +Update the maximum session duration returns "No Content" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.organizations_api import OrganizationsApi +from datadog_api_client.v2.model.max_session_duration_type import MaxSessionDurationType +from datadog_api_client.v2.model.max_session_duration_update_attributes import MaxSessionDurationUpdateAttributes +from datadog_api_client.v2.model.max_session_duration_update_data import MaxSessionDurationUpdateData +from datadog_api_client.v2.model.max_session_duration_update_request import MaxSessionDurationUpdateRequest + +body = MaxSessionDurationUpdateRequest( + data=MaxSessionDurationUpdateData( + attributes=MaxSessionDurationUpdateAttributes( + max_session_duration=604800, + ), + type=MaxSessionDurationType.MAX_SESSION_DURATION, + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = OrganizationsApi(api_client) + api_instance.update_login_org_configs_max_session_duration(body=body) diff --git a/examples/v2/report-schedules/CreateReportSchedule.py b/examples/v2/report-schedules/CreateReportSchedule.py new file mode 100644 index 0000000000..54eb681d76 --- /dev/null +++ b/examples/v2/report-schedules/CreateReportSchedule.py @@ -0,0 +1,52 @@ +""" +Create a report schedule returns "CREATED" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.report_schedules_api import ReportSchedulesApi +from datadog_api_client.v2.model.report_schedule_create_request import ReportScheduleCreateRequest +from datadog_api_client.v2.model.report_schedule_create_request_attributes import ReportScheduleCreateRequestAttributes +from datadog_api_client.v2.model.report_schedule_create_request_data import ReportScheduleCreateRequestData +from datadog_api_client.v2.model.report_schedule_delivery_format import ReportScheduleDeliveryFormat +from datadog_api_client.v2.model.report_schedule_resource_type import ReportScheduleResourceType +from datadog_api_client.v2.model.report_schedule_template_variable import ReportScheduleTemplateVariable +from datadog_api_client.v2.model.report_schedule_type import ReportScheduleType +from uuid import UUID + +body = ReportScheduleCreateRequest( + data=ReportScheduleCreateRequestData( + attributes=ReportScheduleCreateRequestAttributes( + delivery_format=ReportScheduleDeliveryFormat.PDF, + description="Weekly summary of infrastructure health.", + recipients=[ + "user@example.com", + "slack:T01234567.C01234567.alerts", + "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2", + ], + resource_id="abc-def-ghi", + resource_type=ReportScheduleResourceType.DASHBOARD, + rrule="DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0", + tab_id=UUID("66666666-7777-8888-9999-000000000000"), + template_variables=[ + ReportScheduleTemplateVariable( + name="env", + values=[ + "prod", + ], + ), + ], + timeframe="calendar_month", + timezone="America/New_York", + title="Weekly Infrastructure Report", + ), + type=ReportScheduleType.SCHEDULE, + ), +) + +configuration = Configuration() +configuration.unstable_operations["create_report_schedule"] = True +with ApiClient(configuration) as api_client: + api_instance = ReportSchedulesApi(api_client) + response = api_instance.create_report_schedule(body=body) + + print(response) diff --git a/examples/v2/report-schedules/PatchReportSchedule.py b/examples/v2/report-schedules/PatchReportSchedule.py new file mode 100644 index 0000000000..a61414ba17 --- /dev/null +++ b/examples/v2/report-schedules/PatchReportSchedule.py @@ -0,0 +1,49 @@ +""" +Update a report schedule returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.report_schedules_api import ReportSchedulesApi +from datadog_api_client.v2.model.report_schedule_delivery_format import ReportScheduleDeliveryFormat +from datadog_api_client.v2.model.report_schedule_patch_request import ReportSchedulePatchRequest +from datadog_api_client.v2.model.report_schedule_patch_request_attributes import ReportSchedulePatchRequestAttributes +from datadog_api_client.v2.model.report_schedule_patch_request_data import ReportSchedulePatchRequestData +from datadog_api_client.v2.model.report_schedule_template_variable import ReportScheduleTemplateVariable +from datadog_api_client.v2.model.report_schedule_type import ReportScheduleType +from uuid import UUID + +body = ReportSchedulePatchRequest( + data=ReportSchedulePatchRequestData( + attributes=ReportSchedulePatchRequestAttributes( + delivery_format=ReportScheduleDeliveryFormat.PDF, + description="Updated weekly summary of infrastructure health.", + recipients=[ + "user@example.com", + "slack:T01234567.C01234567.alerts", + "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2", + ], + rrule="DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0", + tab_id=UUID("66666666-7777-8888-9999-000000000000"), + template_variables=[ + ReportScheduleTemplateVariable( + name="env", + values=[ + "prod", + ], + ), + ], + timeframe="calendar_month", + timezone="America/New_York", + title="Weekly Infrastructure Report", + ), + type=ReportScheduleType.SCHEDULE, + ), +) + +configuration = Configuration() +configuration.unstable_operations["patch_report_schedule"] = True +with ApiClient(configuration) as api_client: + api_instance = ReportSchedulesApi(api_client) + response = api_instance.patch_report_schedule(schedule_uuid=UUID("9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"), body=body) + + print(response) diff --git a/examples/v2/rum-rate-limit/DeleteRumRateLimitConfig.py b/examples/v2/rum-rate-limit/DeleteRumRateLimitConfig.py new file mode 100644 index 0000000000..ed0f3c5c4b --- /dev/null +++ b/examples/v2/rum-rate-limit/DeleteRumRateLimitConfig.py @@ -0,0 +1,16 @@ +""" +Delete a RUM rate limit configuration returns "No Content" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.rum_rate_limit_api import RumRateLimitApi +from datadog_api_client.v2.model.rum_rate_limit_scope_type import RumRateLimitScopeType + +configuration = Configuration() +configuration.unstable_operations["delete_rum_rate_limit_config"] = True +with ApiClient(configuration) as api_client: + api_instance = RumRateLimitApi(api_client) + api_instance.delete_rum_rate_limit_config( + scope_type=RumRateLimitScopeType.APPLICATION, + scope_id="cd73a516-a481-4af5-8352-9b577465c77b", + ) diff --git a/examples/v2/rum-rate-limit/GetRumRateLimitConfig.py b/examples/v2/rum-rate-limit/GetRumRateLimitConfig.py new file mode 100644 index 0000000000..78b28bc67f --- /dev/null +++ b/examples/v2/rum-rate-limit/GetRumRateLimitConfig.py @@ -0,0 +1,18 @@ +""" +Get a RUM rate limit configuration returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.rum_rate_limit_api import RumRateLimitApi +from datadog_api_client.v2.model.rum_rate_limit_scope_type import RumRateLimitScopeType + +configuration = Configuration() +configuration.unstable_operations["get_rum_rate_limit_config"] = True +with ApiClient(configuration) as api_client: + api_instance = RumRateLimitApi(api_client) + response = api_instance.get_rum_rate_limit_config( + scope_type=RumRateLimitScopeType.APPLICATION, + scope_id="cd73a516-a481-4af5-8352-9b577465c77b", + ) + + print(response) diff --git a/examples/v2/rum-rate-limit/UpdateRumRateLimitConfig.py b/examples/v2/rum-rate-limit/UpdateRumRateLimitConfig.py new file mode 100644 index 0000000000..a90f5883a3 --- /dev/null +++ b/examples/v2/rum-rate-limit/UpdateRumRateLimitConfig.py @@ -0,0 +1,46 @@ +""" +Create or update a RUM rate limit configuration returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.rum_rate_limit_api import RumRateLimitApi +from datadog_api_client.v2.model.rum_rate_limit_adaptive_config import RumRateLimitAdaptiveConfig +from datadog_api_client.v2.model.rum_rate_limit_config_type import RumRateLimitConfigType +from datadog_api_client.v2.model.rum_rate_limit_config_update_attributes import RumRateLimitConfigUpdateAttributes +from datadog_api_client.v2.model.rum_rate_limit_config_update_data import RumRateLimitConfigUpdateData +from datadog_api_client.v2.model.rum_rate_limit_config_update_request import RumRateLimitConfigUpdateRequest +from datadog_api_client.v2.model.rum_rate_limit_custom_config import RumRateLimitCustomConfig +from datadog_api_client.v2.model.rum_rate_limit_mode import RumRateLimitMode +from datadog_api_client.v2.model.rum_rate_limit_quota_reached_action import RumRateLimitQuotaReachedAction +from datadog_api_client.v2.model.rum_rate_limit_scope_type import RumRateLimitScopeType +from datadog_api_client.v2.model.rum_rate_limit_window_type import RumRateLimitWindowType + +body = RumRateLimitConfigUpdateRequest( + data=RumRateLimitConfigUpdateData( + attributes=RumRateLimitConfigUpdateAttributes( + adaptive=RumRateLimitAdaptiveConfig( + max_retention_rate=0.5, + ), + custom=RumRateLimitCustomConfig( + daily_reset_time="08:00", + daily_reset_timezone="+09:00", + quota_reached_action=RumRateLimitQuotaReachedAction.STOP, + session_limit=1000000, + window_type=RumRateLimitWindowType.DAILY, + ), + mode=RumRateLimitMode.CUSTOM, + ), + id="cd73a516-a481-4af5-8352-9b577465c77b", + type=RumRateLimitConfigType.RUM_RATE_LIMIT_CONFIG, + ), +) + +configuration = Configuration() +configuration.unstable_operations["update_rum_rate_limit_config"] = True +with ApiClient(configuration) as api_client: + api_instance = RumRateLimitApi(api_client) + response = api_instance.update_rum_rate_limit_config( + scope_type=RumRateLimitScopeType.APPLICATION, scope_id="cd73a516-a481-4af5-8352-9b577465c77b", body=body + ) + + print(response) diff --git a/examples/v2/rum-retention-filters-hardcoded/GetHardcodedRetentionFilter.py b/examples/v2/rum-retention-filters-hardcoded/GetHardcodedRetentionFilter.py deleted file mode 100644 index 31d5ac03a7..0000000000 --- a/examples/v2/rum-retention-filters-hardcoded/GetHardcodedRetentionFilter.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -Get a hardcoded retention filter returns "OK" response -""" - -from datadog_api_client import ApiClient, Configuration -from datadog_api_client.v2.api.rum_retention_filters_hardcoded_api import RUMRetentionFiltersHardcodedApi - -configuration = Configuration() -with ApiClient(configuration) as api_client: - api_instance = RUMRetentionFiltersHardcodedApi(api_client) - response = api_instance.get_hardcoded_retention_filter( - app_id="Example-RUM-Retention-Filters-Hardcoded", - rf_id="Example-RUM-Retention-Filters-Hardcoded", - ) - - print(response) diff --git a/examples/v2/rum-retention-filters-hardcoded/ListHardcodedRetentionFilters.py b/examples/v2/rum-retention-filters-hardcoded/ListHardcodedRetentionFilters.py deleted file mode 100644 index 0dd066e38a..0000000000 --- a/examples/v2/rum-retention-filters-hardcoded/ListHardcodedRetentionFilters.py +++ /dev/null @@ -1,15 +0,0 @@ -""" -Get all hardcoded retention filters returns "OK" response -""" - -from datadog_api_client import ApiClient, Configuration -from datadog_api_client.v2.api.rum_retention_filters_hardcoded_api import RUMRetentionFiltersHardcodedApi - -configuration = Configuration() -with ApiClient(configuration) as api_client: - api_instance = RUMRetentionFiltersHardcodedApi(api_client) - response = api_instance.list_hardcoded_retention_filters( - app_id="Example-RUM-Retention-Filters-Hardcoded", - ) - - print(response) diff --git a/examples/v2/rum-retention-filters-hardcoded/UpdateHardcodedRetentionFilter.py b/examples/v2/rum-retention-filters-hardcoded/UpdateHardcodedRetentionFilter.py deleted file mode 100644 index 1ff0031bb4..0000000000 --- a/examples/v2/rum-retention-filters-hardcoded/UpdateHardcodedRetentionFilter.py +++ /dev/null @@ -1,39 +0,0 @@ -""" -Update a hardcoded retention filter returns "Updated" response -""" - -from datadog_api_client import ApiClient, Configuration -from datadog_api_client.v2.api.rum_retention_filters_hardcoded_api import RUMRetentionFiltersHardcodedApi -from datadog_api_client.v2.model.rum_hardcoded_cross_product_sampling_update import ( - RumHardcodedCrossProductSamplingUpdate, -) -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_type import RumHardcodedRetentionFilterType -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_attributes import ( - RumHardcodedRetentionFilterUpdateAttributes, -) -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_data import RumHardcodedRetentionFilterUpdateData -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_request import ( - RumHardcodedRetentionFilterUpdateRequest, -) - -body = RumHardcodedRetentionFilterUpdateRequest( - data=RumHardcodedRetentionFilterUpdateData( - id="REPLACE.ME", - type=RumHardcodedRetentionFilterType.HARDCODED_RETENTION_FILTERS, - attributes=RumHardcodedRetentionFilterUpdateAttributes( - cross_product_sampling=RumHardcodedCrossProductSamplingUpdate( - session_replay_sample_rate=50.0, - session_replay_enabled=True, - ), - ), - ), -) - -configuration = Configuration() -with ApiClient(configuration) as api_client: - api_instance = RUMRetentionFiltersHardcodedApi(api_client) - response = api_instance.update_hardcoded_retention_filter( - app_id="Example-RUM-Retention-Filters-Hardcoded", rf_id="Example-RUM-Retention-Filters-Hardcoded", body=body - ) - - print(response) diff --git a/examples/v2/security-monitoring/GetSingleEntityContext.py b/examples/v2/security-monitoring/GetSingleEntityContext.py new file mode 100644 index 0000000000..d059d7fe2c --- /dev/null +++ b/examples/v2/security-monitoring/GetSingleEntityContext.py @@ -0,0 +1,16 @@ +""" +Get a single entity context returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi + +configuration = Configuration() +configuration.unstable_operations["get_single_entity_context"] = True +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + response = api_instance.get_single_entity_context( + id="user@example.com", + ) + + print(response) diff --git a/examples/v2/security-monitoring/RestoreSecurityMonitoringRule.py b/examples/v2/security-monitoring/RestoreSecurityMonitoringRule.py new file mode 100644 index 0000000000..040771722e --- /dev/null +++ b/examples/v2/security-monitoring/RestoreSecurityMonitoringRule.py @@ -0,0 +1,21 @@ +""" +Restore a rule to a historical version returns "OK" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi + +# there is a valid "security_rule" in the system +SECURITY_RULE_ID = environ["SECURITY_RULE_ID"] + +configuration = Configuration() +configuration.unstable_operations["restore_security_monitoring_rule"] = True +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + response = api_instance.restore_security_monitoring_rule( + rule_id=SECURITY_RULE_ID, + version=1, + ) + + print(response) diff --git a/examples/v2/security-monitoring/SendSecurityMonitoringNotificationPreview.py b/examples/v2/security-monitoring/SendSecurityMonitoringNotificationPreview.py new file mode 100644 index 0000000000..895765bf5e --- /dev/null +++ b/examples/v2/security-monitoring/SendSecurityMonitoringNotificationPreview.py @@ -0,0 +1,46 @@ +""" +Test a notification rule returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi +from datadog_api_client.v2.model.create_notification_rule_parameters import CreateNotificationRuleParameters +from datadog_api_client.v2.model.create_notification_rule_parameters_data import CreateNotificationRuleParametersData +from datadog_api_client.v2.model.create_notification_rule_parameters_data_attributes import ( + CreateNotificationRuleParametersDataAttributes, +) +from datadog_api_client.v2.model.notification_rules_type import NotificationRulesType +from datadog_api_client.v2.model.rule_severity import RuleSeverity +from datadog_api_client.v2.model.rule_types_items import RuleTypesItems +from datadog_api_client.v2.model.selectors import Selectors +from datadog_api_client.v2.model.trigger_source import TriggerSource + +body = CreateNotificationRuleParameters( + data=CreateNotificationRuleParametersData( + attributes=CreateNotificationRuleParametersDataAttributes( + enabled=True, + name="Rule 1", + selectors=Selectors( + query="env:prod", + rule_types=[ + RuleTypesItems.LOG_DETECTION, + ], + severities=[ + RuleSeverity.CRITICAL, + ], + trigger_source=TriggerSource.SECURITY_SIGNALS, + ), + targets=[ + "@john.doe@email.com", + ], + ), + type=NotificationRulesType.NOTIFICATION_RULES, + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = SecurityMonitoringApi(api_client) + response = api_instance.send_security_monitoring_notification_preview(body=body) + + print(response) diff --git a/examples/v2/slack-integration/ListSlackUserBindings.py b/examples/v2/slack-integration/ListSlackUserBindings.py new file mode 100644 index 0000000000..a8ef372478 --- /dev/null +++ b/examples/v2/slack-integration/ListSlackUserBindings.py @@ -0,0 +1,16 @@ +""" +List Slack user bindings returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.slack_integration_api import SlackIntegrationApi +from uuid import UUID + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = SlackIntegrationApi(api_client) + response = api_instance.list_slack_user_bindings( + user_uuid=UUID("9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"), + ) + + print(response) diff --git a/examples/v2/tag-policies/CreateTagPolicy.py b/examples/v2/tag-policies/CreateTagPolicy.py new file mode 100644 index 0000000000..b50dcb3704 --- /dev/null +++ b/examples/v2/tag-policies/CreateTagPolicy.py @@ -0,0 +1,40 @@ +""" +Create a tag policy returns "Created" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.tag_policies_api import TagPoliciesApi +from datadog_api_client.v2.model.tag_policy_create_attributes import TagPolicyCreateAttributes +from datadog_api_client.v2.model.tag_policy_create_data import TagPolicyCreateData +from datadog_api_client.v2.model.tag_policy_create_request import TagPolicyCreateRequest +from datadog_api_client.v2.model.tag_policy_create_type import TagPolicyCreateType +from datadog_api_client.v2.model.tag_policy_resource_type import TagPolicyResourceType +from datadog_api_client.v2.model.tag_policy_source import TagPolicySource + +body = TagPolicyCreateRequest( + data=TagPolicyCreateData( + attributes=TagPolicyCreateAttributes( + enabled=True, + negated=False, + policy_name="Service tag must be one of api or web", + policy_type=TagPolicyCreateType.SURFACING, + required=True, + scope="env", + source=TagPolicySource.LOGS, + tag_key="service", + tag_value_patterns=[ + "api", + "web", + ], + ), + type=TagPolicyResourceType.TAG_POLICY, + ), +) + +configuration = Configuration() +configuration.unstable_operations["create_tag_policy"] = True +with ApiClient(configuration) as api_client: + api_instance = TagPoliciesApi(api_client) + response = api_instance.create_tag_policy(body=body) + + print(response) diff --git a/examples/v2/tag-policies/DeleteTagPolicy.py b/examples/v2/tag-policies/DeleteTagPolicy.py new file mode 100644 index 0000000000..c6b7e1e043 --- /dev/null +++ b/examples/v2/tag-policies/DeleteTagPolicy.py @@ -0,0 +1,14 @@ +""" +Delete a tag policy returns "No Content" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.tag_policies_api import TagPoliciesApi + +configuration = Configuration() +configuration.unstable_operations["delete_tag_policy"] = True +with ApiClient(configuration) as api_client: + api_instance = TagPoliciesApi(api_client) + api_instance.delete_tag_policy( + policy_id="policy_id", + ) diff --git a/examples/v2/tag-policies/GetTagPolicy.py b/examples/v2/tag-policies/GetTagPolicy.py new file mode 100644 index 0000000000..ee938812ec --- /dev/null +++ b/examples/v2/tag-policies/GetTagPolicy.py @@ -0,0 +1,16 @@ +""" +Get a tag policy returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.tag_policies_api import TagPoliciesApi + +configuration = Configuration() +configuration.unstable_operations["get_tag_policy"] = True +with ApiClient(configuration) as api_client: + api_instance = TagPoliciesApi(api_client) + response = api_instance.get_tag_policy( + policy_id="policy_id", + ) + + print(response) diff --git a/examples/v2/tag-policies/GetTagPolicyScore.py b/examples/v2/tag-policies/GetTagPolicyScore.py new file mode 100644 index 0000000000..de9e925751 --- /dev/null +++ b/examples/v2/tag-policies/GetTagPolicyScore.py @@ -0,0 +1,16 @@ +""" +Get a tag policy compliance score returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.tag_policies_api import TagPoliciesApi + +configuration = Configuration() +configuration.unstable_operations["get_tag_policy_score"] = True +with ApiClient(configuration) as api_client: + api_instance = TagPoliciesApi(api_client) + response = api_instance.get_tag_policy_score( + policy_id="policy_id", + ) + + print(response) diff --git a/examples/v2/tag-policies/ListTagPolicies.py b/examples/v2/tag-policies/ListTagPolicies.py new file mode 100644 index 0000000000..822c24d305 --- /dev/null +++ b/examples/v2/tag-policies/ListTagPolicies.py @@ -0,0 +1,14 @@ +""" +List tag policies returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.tag_policies_api import TagPoliciesApi + +configuration = Configuration() +configuration.unstable_operations["list_tag_policies"] = True +with ApiClient(configuration) as api_client: + api_instance = TagPoliciesApi(api_client) + response = api_instance.list_tag_policies() + + print(response) diff --git a/examples/v2/tag-policies/UpdateTagPolicy.py b/examples/v2/tag-policies/UpdateTagPolicy.py new file mode 100644 index 0000000000..3730a5bf05 --- /dev/null +++ b/examples/v2/tag-policies/UpdateTagPolicy.py @@ -0,0 +1,30 @@ +""" +Update a tag policy returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.tag_policies_api import TagPoliciesApi +from datadog_api_client.v2.model.tag_policy_resource_type import TagPolicyResourceType +from datadog_api_client.v2.model.tag_policy_type import TagPolicyType +from datadog_api_client.v2.model.tag_policy_update_attributes import TagPolicyUpdateAttributes +from datadog_api_client.v2.model.tag_policy_update_data import TagPolicyUpdateData +from datadog_api_client.v2.model.tag_policy_update_request import TagPolicyUpdateRequest + +body = TagPolicyUpdateRequest( + data=TagPolicyUpdateData( + attributes=TagPolicyUpdateAttributes( + policy_type=TagPolicyType.SURFACING, + tag_value_patterns=[], + ), + id="123", + type=TagPolicyResourceType.TAG_POLICY, + ), +) + +configuration = Configuration() +configuration.unstable_operations["update_tag_policy"] = True +with ApiClient(configuration) as api_client: + api_instance = TagPoliciesApi(api_client) + response = api_instance.update_tag_policy(policy_id="policy_id", body=body) + + print(response) diff --git a/src/datadog_api_client/configuration.py b/src/datadog_api_client/configuration.py index 91beeda9f9..92defb51bc 100644 --- a/src/datadog_api_client/configuration.py +++ b/src/datadog_api_client/configuration.py @@ -258,9 +258,7 @@ def __init__( "v2.list_fleet_agents": False, "v2.list_fleet_agent_tracers": False, "v2.list_fleet_agent_versions": False, - "v2.list_fleet_clusters": False, "v2.list_fleet_deployments": False, - "v2.list_fleet_instrumented_pods": False, "v2.list_fleet_schedules": False, "v2.list_fleet_tracers": False, "v2.trigger_fleet_schedule": False, @@ -278,11 +276,13 @@ def __init__( "v2.create_llm_obs_project": False, "v2.delete_llm_obs_annotation_queue": False, "v2.delete_llm_obs_annotation_queue_interactions": False, + "v2.delete_llm_obs_annotations": False, "v2.delete_llm_obs_custom_eval_config": False, "v2.delete_llm_obs_data": False, "v2.delete_llm_obs_dataset_records": False, "v2.delete_llm_obs_datasets": False, "v2.delete_llm_obs_experiments": False, + "v2.delete_llm_obs_patterns_config": False, "v2.delete_llm_obs_projects": False, "v2.export_llm_obs_dataset": False, "v2.get_llm_obs_annotated_interactions": False, @@ -290,6 +290,8 @@ def __init__( "v2.get_llm_obs_annotation_queue_label_schema": False, "v2.get_llm_obs_custom_eval_config": False, "v2.get_llm_obs_dataset_draft_state": False, + "v2.get_llm_obs_patterns_config": False, + "v2.get_llm_obs_patterns_run_status": False, "v2.list_llm_obs_annotation_queues": False, "v2.list_llm_obs_dataset_records": False, "v2.list_llm_obs_datasets": False, @@ -300,6 +302,11 @@ def __init__( "v2.list_llm_obs_experiments": False, "v2.list_llm_obs_integration_accounts": False, "v2.list_llm_obs_integration_models": False, + "v2.list_llm_obs_patterns_clustered_points": False, + "v2.list_llm_obs_patterns_configs": False, + "v2.list_llm_obs_patterns_runs": False, + "v2.list_llm_obs_patterns_topics": False, + "v2.list_llm_obs_patterns_topics_with_clustered_points": False, "v2.list_llm_obs_projects": False, "v2.list_llm_obs_spans": False, "v2.lock_llm_obs_dataset_draft_state": False, @@ -307,6 +314,7 @@ def __init__( "v2.search_llm_obs_experimentation": False, "v2.search_llm_obs_spans": False, "v2.simple_search_llm_obs_experimentation": False, + "v2.trigger_llm_obs_patterns": False, "v2.unlock_llm_obs_dataset_draft_state": False, "v2.update_llm_obs_annotation_queue": False, "v2.update_llm_obs_annotation_queue_label_schema": False, @@ -316,6 +324,8 @@ def __init__( "v2.update_llm_obs_experiment": False, "v2.update_llm_obs_project": False, "v2.upload_llm_obs_dataset_records_file": False, + "v2.upsert_llm_obs_annotations": False, + "v2.upsert_llm_obs_patterns_config": False, "v2.create_annotation": False, "v2.delete_annotation": False, "v2.get_page_annotations": False, @@ -418,6 +428,7 @@ def __init__( "v2.get_security_monitoring_histsignals_by_job_id": False, "v2.get_security_monitoring_integration_config": False, "v2.get_signal_entities": False, + "v2.get_single_entity_context": False, "v2.get_static_analysis_default_rulesets": False, "v2.get_static_analysis_node_types": False, "v2.get_static_analysis_ruleset": False, @@ -435,6 +446,7 @@ def __init__( "v2.list_vulnerabilities": False, "v2.list_vulnerable_assets": False, "v2.mute_findings": False, + "v2.restore_security_monitoring_rule": False, "v2.run_historical_job": False, "v2.search_security_monitoring_histsignals": False, "v2.update_findings_assignee": False, @@ -462,12 +474,27 @@ def __init__( "v2.list_cost_tag_metadata_months": False, "v2.list_cost_tag_metadata_orchestrators": False, "v2.search_cost_recommendations": False, + "v2.create_ownership_feedback": False, + "v2.get_ownership_evidence": False, + "v2.get_ownership_inference": False, + "v2.list_ownership_history": False, + "v2.list_ownership_history_by_owner_type": False, + "v2.list_ownership_inferences": False, + "v2.get_csm_agentless_host_facet_info": False, + "v2.get_csm_unified_host_facet_info": False, + "v2.list_csm_agentless_host_facets": False, + "v2.list_csm_agentless_hosts": False, + "v2.list_csm_unified_host_facets": False, + "v2.list_csm_unified_hosts": False, + "v2.list_shared_dashboards_by_dashboard_id": False, "v2.create_dashboard_secure_embed": False, "v2.delete_dashboard_secure_embed": False, "v2.get_dashboard_secure_embed": False, "v2.update_dashboard_secure_embed": False, "v2.get_dashboard_usage": False, "v2.list_dashboards_usage": False, + "v2.get_data_observability_monitor_run_status": False, + "v2.run_data_observability_monitor": False, "v2.create_dataset": False, "v2.delete_dataset": False, "v2.get_all_datasets": False, @@ -488,6 +515,17 @@ def __init__( "v2.trigger_deployment_gates_evaluation": False, "v2.update_deployment_gate": False, "v2.update_deployment_rule": False, + "v2.clone_form": False, + "v2.create_and_publish_form": False, + "v2.create_form": False, + "v2.delete_form": False, + "v2.get_form": False, + "v2.list_forms": False, + "v2.publish_form": False, + "v2.update_form": False, + "v2.upsert_and_publish_form_version": False, + "v2.upsert_form_version": False, + "v2.update_org_saml_configurations": False, "v2.create_hamr_org_connection": False, "v2.get_hamr_org_connection": False, "v2.delete_entity_integration_config": False, @@ -550,6 +588,7 @@ def __init__( "v2.delete_aws_account_ccm_config": False, "v2.get_aws_account_ccm_config": False, "v2.update_aws_account_ccm_config": False, + "v2.validate_awsccm_config": False, "v2.create_jira_issue_template": False, "v2.delete_jira_account": False, "v2.delete_jira_issue_template": False, @@ -593,12 +632,12 @@ def __init__( "v2.update_monitor_user_template": False, "v2.validate_existing_monitor_user_template": False, "v2.validate_monitor_user_template": False, + "v2.list_network_health_insights": False, "v2.delete_scopes_restriction": False, "v2.get_o_auth2_well_known_sites": False, "v2.get_scopes_restriction": False, "v2.register_o_auth_client": False, "v2.upsert_scopes_restriction": False, - "v2.update_org_saml_configurations": False, "v2.disable_customer_org": False, "v2.bulk_update_org_group_memberships": False, "v2.create_org_group": False, @@ -633,22 +672,22 @@ def __init__( "v2.update_connection": False, "v2.get_pruned_trace_by_id": False, "v2.get_trace_by_id": False, + "v2.create_report_schedule": False, + "v2.patch_report_schedule": False, "v2.delete_sourcemaps": False, "v2.get_service_repository_info": False, "v2.get_sourcemaps": False, "v2.list_sourcemaps": False, "v2.restore_sourcemaps": False, + "v2.delete_rum_rate_limit_config": False, + "v2.get_rum_rate_limit_config": False, + "v2.update_rum_rate_limit_config": False, "v2.query_aggregated_long_tasks": False, "v2.query_aggregated_signals_problems": False, "v2.query_aggregated_waterfall": False, "v2.create_scorecard_outcomes_batch": False, "v2.get_entity_risk_score": False, "v2.list_entity_risk_scores": False, - "v2.create_incident_service": False, - "v2.delete_incident_service": False, - "v2.get_incident_service": False, - "v2.list_incident_services": False, - "v2.update_incident_service": False, "v2.create_slo_report_job": False, "v2.get_slo_report": False, "v2.get_slo_report_job_status": False, @@ -687,6 +726,12 @@ def __init__( "v2.revert_custom_rule_revision": False, "v2.update_ai_custom_ruleset": False, "v2.update_custom_ruleset": False, + "v2.create_tag_policy": False, + "v2.delete_tag_policy": False, + "v2.get_tag_policy": False, + "v2.get_tag_policy_score": False, + "v2.list_tag_policies": False, + "v2.update_tag_policy": False, "v2.add_member_team": False, "v2.list_member_teams": False, "v2.remove_member_team": False, diff --git a/src/datadog_api_client/v1/model/synthetics_basic_auth.py b/src/datadog_api_client/v1/model/synthetics_basic_auth.py index 39ad197d45..2f48556692 100644 --- a/src/datadog_api_client/v1/model/synthetics_basic_auth.py +++ b/src/datadog_api_client/v1/model/synthetics_basic_auth.py @@ -65,6 +65,28 @@ def __init__(self, **kwargs): :param token_api_authentication: Type of token to use when performing the authentication. :type token_api_authentication: SyntheticsBasicAuthOauthTokenApiAuthentication + + :param add_claims: Standard JWT claims to automatically inject. + :type add_claims: SyntheticsBasicAuthJWTAddClaims, optional + + :param algorithm: Algorithm to use for the JWT authentication. + :type algorithm: SyntheticsBasicAuthJWTAlgorithm + + :param expires_in: Token time-to-live in seconds. + :type expires_in: int, optional + + :param header: Custom JWT header as a JSON string. + :type header: str, optional + + :param payload: JWT claims as a JSON string. + :type payload: str + + :param secret: Signing key for the JWT authentication. Use the shared secret for `HS256` + or the private key (PEM format) for `RS256` and `ES256`. + :type secret: str + + :param token_prefix: Prefix added before the token in the `Authorization` header. Defaults to `Bearer`. + :type token_prefix: str, optional """ super().__init__(kwargs) @@ -83,6 +105,7 @@ def _composed_schemas(_): from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP + from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT return { "oneOf": [ @@ -92,5 +115,6 @@ def _composed_schemas(_): SyntheticsBasicAuthDigest, SyntheticsBasicAuthOauthClient, SyntheticsBasicAuthOauthROP, + SyntheticsBasicAuthJWT, ], } diff --git a/src/datadog_api_client/v1/model/synthetics_basic_auth_jwt.py b/src/datadog_api_client/v1/model/synthetics_basic_auth_jwt.py new file mode 100644 index 0000000000..1717b17ff5 --- /dev/null +++ b/src/datadog_api_client/v1/model/synthetics_basic_auth_jwt.py @@ -0,0 +1,110 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v1.model.synthetics_basic_auth_jwt_add_claims import SyntheticsBasicAuthJWTAddClaims + from datadog_api_client.v1.model.synthetics_basic_auth_jwt_algorithm import SyntheticsBasicAuthJWTAlgorithm + from datadog_api_client.v1.model.synthetics_basic_auth_jwt_type import SyntheticsBasicAuthJWTType + + +class SyntheticsBasicAuthJWT(ModelNormal): + validations = { + "expires_in": { + "inclusive_minimum": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v1.model.synthetics_basic_auth_jwt_add_claims import SyntheticsBasicAuthJWTAddClaims + from datadog_api_client.v1.model.synthetics_basic_auth_jwt_algorithm import SyntheticsBasicAuthJWTAlgorithm + from datadog_api_client.v1.model.synthetics_basic_auth_jwt_type import SyntheticsBasicAuthJWTType + + return { + "add_claims": (SyntheticsBasicAuthJWTAddClaims,), + "algorithm": (SyntheticsBasicAuthJWTAlgorithm,), + "expires_in": (int,), + "header": (str,), + "payload": (str,), + "secret": (str,), + "token_prefix": (str,), + "type": (SyntheticsBasicAuthJWTType,), + } + + attribute_map = { + "add_claims": "addClaims", + "algorithm": "algorithm", + "expires_in": "expiresIn", + "header": "header", + "payload": "payload", + "secret": "secret", + "token_prefix": "tokenPrefix", + "type": "type", + } + + def __init__( + self_, + algorithm: SyntheticsBasicAuthJWTAlgorithm, + payload: str, + secret: str, + type: SyntheticsBasicAuthJWTType, + add_claims: Union[SyntheticsBasicAuthJWTAddClaims, UnsetType] = unset, + expires_in: Union[int, UnsetType] = unset, + header: Union[str, UnsetType] = unset, + token_prefix: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + Object to handle JWT authentication when performing the test. + + :param add_claims: Standard JWT claims to automatically inject. + :type add_claims: SyntheticsBasicAuthJWTAddClaims, optional + + :param algorithm: Algorithm to use for the JWT authentication. + :type algorithm: SyntheticsBasicAuthJWTAlgorithm + + :param expires_in: Token time-to-live in seconds. + :type expires_in: int, optional + + :param header: Custom JWT header as a JSON string. + :type header: str, optional + + :param payload: JWT claims as a JSON string. + :type payload: str + + :param secret: Signing key for the JWT authentication. Use the shared secret for ``HS256`` + or the private key (PEM format) for ``RS256`` and ``ES256``. + :type secret: str + + :param token_prefix: Prefix added before the token in the ``Authorization`` header. Defaults to ``Bearer``. + :type token_prefix: str, optional + + :param type: The type of authentication to use when performing the test. + :type type: SyntheticsBasicAuthJWTType + """ + if add_claims is not unset: + kwargs["add_claims"] = add_claims + if expires_in is not unset: + kwargs["expires_in"] = expires_in + if header is not unset: + kwargs["header"] = header + if token_prefix is not unset: + kwargs["token_prefix"] = token_prefix + super().__init__(kwargs) + + self_.algorithm = algorithm + self_.payload = payload + self_.secret = secret + self_.type = type diff --git a/src/datadog_api_client/v1/model/synthetics_basic_auth_jwt_add_claims.py b/src/datadog_api_client/v1/model/synthetics_basic_auth_jwt_add_claims.py new file mode 100644 index 0000000000..a563eab2b5 --- /dev/null +++ b/src/datadog_api_client/v1/model/synthetics_basic_auth_jwt_add_claims.py @@ -0,0 +1,43 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class SyntheticsBasicAuthJWTAddClaims(ModelNormal): + @cached_property + def openapi_types(_): + return { + "exp": (bool,), + "iat": (bool,), + } + + attribute_map = { + "exp": "exp", + "iat": "iat", + } + + def __init__(self_, exp: Union[bool, UnsetType] = unset, iat: Union[bool, UnsetType] = unset, **kwargs): + """ + Standard JWT claims to automatically inject. + + :param exp: Whether to inject the ``exp`` (expiration) claim. + :type exp: bool, optional + + :param iat: Whether to inject the ``iat`` (issued at) claim. + :type iat: bool, optional + """ + if exp is not unset: + kwargs["exp"] = exp + if iat is not unset: + kwargs["iat"] = iat + super().__init__(kwargs) diff --git a/src/datadog_api_client/v1/model/synthetics_basic_auth_jwt_algorithm.py b/src/datadog_api_client/v1/model/synthetics_basic_auth_jwt_algorithm.py new file mode 100644 index 0000000000..ff7fa118b3 --- /dev/null +++ b/src/datadog_api_client/v1/model/synthetics_basic_auth_jwt_algorithm.py @@ -0,0 +1,41 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SyntheticsBasicAuthJWTAlgorithm(ModelSimple): + """ + Algorithm to use for the JWT authentication. + + :param value: Must be one of ["HS256", "RS256", "ES256"]. + :type value: str + """ + + allowed_values = { + "HS256", + "RS256", + "ES256", + } + HS256: ClassVar["SyntheticsBasicAuthJWTAlgorithm"] + RS256: ClassVar["SyntheticsBasicAuthJWTAlgorithm"] + ES256: ClassVar["SyntheticsBasicAuthJWTAlgorithm"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SyntheticsBasicAuthJWTAlgorithm.HS256 = SyntheticsBasicAuthJWTAlgorithm("HS256") +SyntheticsBasicAuthJWTAlgorithm.RS256 = SyntheticsBasicAuthJWTAlgorithm("RS256") +SyntheticsBasicAuthJWTAlgorithm.ES256 = SyntheticsBasicAuthJWTAlgorithm("ES256") diff --git a/src/datadog_api_client/v1/model/synthetics_basic_auth_jwt_type.py b/src/datadog_api_client/v1/model/synthetics_basic_auth_jwt_type.py new file mode 100644 index 0000000000..73e37f40ed --- /dev/null +++ b/src/datadog_api_client/v1/model/synthetics_basic_auth_jwt_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SyntheticsBasicAuthJWTType(ModelSimple): + """ + The type of authentication to use when performing the test. + + :param value: If omitted defaults to "jwt". Must be one of ["jwt"]. + :type value: str + """ + + allowed_values = { + "jwt", + } + JWT: ClassVar["SyntheticsBasicAuthJWTType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SyntheticsBasicAuthJWTType.JWT = SyntheticsBasicAuthJWTType("jwt") diff --git a/src/datadog_api_client/v1/model/synthetics_ci_test.py b/src/datadog_api_client/v1/model/synthetics_ci_test.py index 2d7f429181..ebf13931f2 100644 --- a/src/datadog_api_client/v1/model/synthetics_ci_test.py +++ b/src/datadog_api_client/v1/model/synthetics_ci_test.py @@ -24,6 +24,7 @@ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP + from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT class SyntheticsCITest(ModelNormal): @@ -82,6 +83,7 @@ def __init__( SyntheticsBasicAuthDigest, SyntheticsBasicAuthOauthClient, SyntheticsBasicAuthOauthROP, + SyntheticsBasicAuthJWT, UnsetType, ] = unset, body: Union[str, UnsetType] = unset, diff --git a/src/datadog_api_client/v1/model/synthetics_test_request.py b/src/datadog_api_client/v1/model/synthetics_test_request.py index 70c08d679e..8dc8098bf4 100644 --- a/src/datadog_api_client/v1/model/synthetics_test_request.py +++ b/src/datadog_api_client/v1/model/synthetics_test_request.py @@ -36,6 +36,7 @@ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP + from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT class SyntheticsTestRequest(ModelNormal): @@ -169,6 +170,7 @@ def __init__( SyntheticsBasicAuthDigest, SyntheticsBasicAuthOauthClient, SyntheticsBasicAuthOauthROP, + SyntheticsBasicAuthJWT, UnsetType, ] = unset, body: Union[str, UnsetType] = unset, diff --git a/src/datadog_api_client/v1/model/usage_summary_date.py b/src/datadog_api_client/v1/model/usage_summary_date.py index 54032a2862..bc95b5ea0e 100644 --- a/src/datadog_api_client/v1/model/usage_summary_date.py +++ b/src/datadog_api_client/v1/model/usage_summary_date.py @@ -948,18 +948,23 @@ def __init__( :type agent_host_top99p: int, optional :param ai_credits_agent_builder_ai_credits_sum: Shows the sum of all AI credits used by Agent Builder over all hours in the current date for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_agent_builder_ai_credits_sum: int, optional :param ai_credits_bits_assistant_ai_credits_sum: Shows the sum of all AI credits used by Bits AI Assistant over all hours in the current date for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_bits_assistant_ai_credits_sum: int, optional :param ai_credits_bits_dev_ai_credits_sum: Shows the sum of all AI credits used by Bits AI Dev over all hours in the current date for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_bits_dev_ai_credits_sum: int, optional :param ai_credits_bits_sre_ai_credits_sum: Shows the sum of all AI credits used by Bits AI SRE over all hours in the current date for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_bits_sre_ai_credits_sum: int, optional :param ai_credits_sum: Shows the sum of all AI credits over all hours in the current date for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_sum: int, optional :param apm_azure_app_service_host_top99p: Shows the 99th percentile of all Azure app services using APM over all hours in the current date all organizations. @@ -1227,6 +1232,7 @@ def __init__( :type dbm_queries_count_avg: int, optional :param do_jobs_monitoring_orchestrators_job_hours_sum: Shows the sum of all orchestrator job hours over all hours in the current date for all organizations. + Values are returned in seconds. Divide by 3,600 to convert to hours. :type do_jobs_monitoring_orchestrators_job_hours_sum: int, optional :param eph_infra_host_agent_sum: Shows the sum of all ephemeral infrastructure hosts with the Datadog Agent over all hours in the current date for the given org. @@ -1365,93 +1371,123 @@ def __init__( :type indexed_points_sum: int, optional :param infra_cpu_avg: Shows the average of all Infrastructure vCPU cores over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_avg: int, optional :param infra_cpu_default_infra_host_vcpu_agent_avg: Shows the average of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_agent_avg: int, optional :param infra_cpu_default_infra_host_vcpu_agent_basic_avg: Shows the average of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_agent_basic_avg: int, optional :param infra_cpu_default_infra_host_vcpu_agent_basic_sum: Shows the sum of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_agent_basic_sum: int, optional :param infra_cpu_default_infra_host_vcpu_agent_sum: Shows the sum of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_agent_sum: int, optional :param infra_cpu_default_infra_host_vcpu_aws_avg: Shows the average of all default Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_aws_avg: int, optional :param infra_cpu_default_infra_host_vcpu_aws_sum: Shows the sum of all default Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_aws_sum: int, optional :param infra_cpu_default_infra_host_vcpu_azure_avg: Shows the average of all default Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_azure_avg: int, optional :param infra_cpu_default_infra_host_vcpu_azure_sum: Shows the sum of all default Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_azure_sum: int, optional :param infra_cpu_default_infra_host_vcpu_gcp_avg: Shows the average of all default Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_gcp_avg: int, optional :param infra_cpu_default_infra_host_vcpu_gcp_sum: Shows the sum of all default Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_gcp_sum: int, optional :param infra_cpu_default_infra_host_vcpu_nutanix_avg: Shows the average of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_nutanix_avg: int, optional :param infra_cpu_default_infra_host_vcpu_nutanix_basic_avg: Shows the average of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_nutanix_basic_avg: int, optional :param infra_cpu_default_infra_host_vcpu_nutanix_basic_sum: Shows the sum of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_nutanix_basic_sum: int, optional :param infra_cpu_default_infra_host_vcpu_nutanix_sum: Shows the sum of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_nutanix_sum: int, optional :param infra_cpu_default_infra_host_vcpu_opentelemetry_avg: Shows the average of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_opentelemetry_avg: int, optional :param infra_cpu_default_infra_host_vcpu_opentelemetry_sum: Shows the sum of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_opentelemetry_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_agent_avg: Shows the average of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_agent_avg: int, optional :param infra_cpu_observed_infra_host_vcpu_agent_sum: Shows the sum of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_agent_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_aws_avg: Shows the average of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_aws_avg: int, optional :param infra_cpu_observed_infra_host_vcpu_aws_sum: Shows the sum of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_aws_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_azure_avg: Shows the average of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_azure_avg: int, optional :param infra_cpu_observed_infra_host_vcpu_azure_sum: Shows the sum of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_azure_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_gcp_avg: Shows the average of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_gcp_avg: int, optional :param infra_cpu_observed_infra_host_vcpu_gcp_sum: Shows the sum of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_gcp_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_nutanix_avg: Shows the average of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_nutanix_avg: int, optional :param infra_cpu_observed_infra_host_vcpu_nutanix_sum: Shows the sum of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_nutanix_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_opentelemetry_avg: Shows the average of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_opentelemetry_avg: int, optional :param infra_cpu_observed_infra_host_vcpu_opentelemetry_sum: Shows the sum of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_opentelemetry_sum: int, optional :param infra_cpu_sum: Shows the sum of all Infrastructure vCPU cores over all hours in the current date for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_sum: int, optional :param infra_edge_monitoring_devices_top99p: Shows the 99th percentile of all Edge Devices Monitoring devices over all hours in the current date for all organizations. diff --git a/src/datadog_api_client/v1/model/usage_summary_date_org.py b/src/datadog_api_client/v1/model/usage_summary_date_org.py index df38ada398..3ddd464d39 100644 --- a/src/datadog_api_client/v1/model/usage_summary_date_org.py +++ b/src/datadog_api_client/v1/model/usage_summary_date_org.py @@ -965,18 +965,23 @@ def __init__( :type agent_host_top99p: int, optional :param ai_credits_agent_builder_ai_credits_sum: Shows the sum of all AI credits used by Agent Builder over all hours in the current date for the given org. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_agent_builder_ai_credits_sum: int, optional :param ai_credits_bits_assistant_ai_credits_sum: Shows the sum of all AI credits used by Bits AI Assistant over all hours in the current date for the given org. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_bits_assistant_ai_credits_sum: int, optional :param ai_credits_bits_dev_ai_credits_sum: Shows the sum of all AI credits used by Bits AI Dev over all hours in the current date for the given org. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_bits_dev_ai_credits_sum: int, optional :param ai_credits_bits_sre_ai_credits_sum: Shows the sum of all AI credits used by Bits AI SRE over all hours in the current date for the given org. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_bits_sre_ai_credits_sum: int, optional :param ai_credits_sum: Shows the sum of all AI credits over all hours in the current date for the given org. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_sum: int, optional :param apm_azure_app_service_host_top99p: Shows the 99th percentile of all Azure app services using APM over all hours in the current date for the given org. @@ -1247,6 +1252,7 @@ def __init__( :type dbm_queries_avg_sum: int, optional :param do_jobs_monitoring_orchestrators_job_hours_sum: Shows the sum of all orchestrator job hours over all hours in the current date for the given org. + Values are returned in seconds. Divide by 3,600 to convert to hours. :type do_jobs_monitoring_orchestrators_job_hours_sum: int, optional :param eph_infra_host_agent_sum: Shows the sum of all ephemeral infrastructure hosts with the Datadog Agent over all hours in the current date for the given org. @@ -1388,93 +1394,123 @@ def __init__( :type indexed_points_sum: int, optional :param infra_cpu_avg: Shows the average of all Infrastructure vCPU cores over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_avg: int, optional :param infra_cpu_default_infra_host_vcpu_agent_avg: Shows the average of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_agent_avg: int, optional :param infra_cpu_default_infra_host_vcpu_agent_basic_avg: Shows the average of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_agent_basic_avg: int, optional :param infra_cpu_default_infra_host_vcpu_agent_basic_sum: Shows the sum of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_agent_basic_sum: int, optional :param infra_cpu_default_infra_host_vcpu_agent_sum: Shows the sum of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_agent_sum: int, optional :param infra_cpu_default_infra_host_vcpu_aws_avg: Shows the average of all default Infrastructure host vCPU cores on AWS over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_aws_avg: int, optional :param infra_cpu_default_infra_host_vcpu_aws_sum: Shows the sum of all default Infrastructure host vCPU cores on AWS over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_aws_sum: int, optional :param infra_cpu_default_infra_host_vcpu_azure_avg: Shows the average of all default Infrastructure host vCPU cores on Azure over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_azure_avg: int, optional :param infra_cpu_default_infra_host_vcpu_azure_sum: Shows the sum of all default Infrastructure host vCPU cores on Azure over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_azure_sum: int, optional :param infra_cpu_default_infra_host_vcpu_gcp_avg: Shows the average of all default Infrastructure host vCPU cores on GCP over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_gcp_avg: int, optional :param infra_cpu_default_infra_host_vcpu_gcp_sum: Shows the sum of all default Infrastructure host vCPU cores on GCP over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_gcp_sum: int, optional :param infra_cpu_default_infra_host_vcpu_nutanix_avg: Shows the average of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_nutanix_avg: int, optional :param infra_cpu_default_infra_host_vcpu_nutanix_basic_avg: Shows the average of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_nutanix_basic_avg: int, optional :param infra_cpu_default_infra_host_vcpu_nutanix_basic_sum: Shows the sum of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_nutanix_basic_sum: int, optional :param infra_cpu_default_infra_host_vcpu_nutanix_sum: Shows the sum of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_nutanix_sum: int, optional :param infra_cpu_default_infra_host_vcpu_opentelemetry_avg: Shows the average of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_opentelemetry_avg: int, optional :param infra_cpu_default_infra_host_vcpu_opentelemetry_sum: Shows the sum of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_opentelemetry_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_agent_avg: Shows the average of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_agent_avg: int, optional :param infra_cpu_observed_infra_host_vcpu_agent_sum: Shows the sum of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_agent_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_aws_avg: Shows the average of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_aws_avg: int, optional :param infra_cpu_observed_infra_host_vcpu_aws_sum: Shows the sum of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_aws_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_azure_avg: Shows the average of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_azure_avg: int, optional :param infra_cpu_observed_infra_host_vcpu_azure_sum: Shows the sum of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_azure_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_gcp_avg: Shows the average of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_gcp_avg: int, optional :param infra_cpu_observed_infra_host_vcpu_gcp_sum: Shows the sum of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_gcp_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_nutanix_avg: Shows the average of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_nutanix_avg: int, optional :param infra_cpu_observed_infra_host_vcpu_nutanix_sum: Shows the sum of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_nutanix_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_opentelemetry_avg: Shows the average of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_opentelemetry_avg: int, optional :param infra_cpu_observed_infra_host_vcpu_opentelemetry_sum: Shows the sum of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_opentelemetry_sum: int, optional :param infra_cpu_sum: Shows the sum of all Infrastructure vCPU cores over all hours in the current date for the given org. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_sum: int, optional :param infra_edge_monitoring_devices_top99p: Shows the 99th percentile of all Edge Devices Monitoring devices over all hours in the current date for the given org. diff --git a/src/datadog_api_client/v1/model/usage_summary_response.py b/src/datadog_api_client/v1/model/usage_summary_response.py index 7414b74d21..5d9313d75f 100644 --- a/src/datadog_api_client/v1/model/usage_summary_response.py +++ b/src/datadog_api_client/v1/model/usage_summary_response.py @@ -984,18 +984,23 @@ def __init__( :type agent_host_top99p_sum: int, optional :param ai_credits_agent_builder_ai_credits_agg_sum: Shows the sum of all AI credits used by Agent Builder over all hours in the current month for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_agent_builder_ai_credits_agg_sum: int, optional :param ai_credits_agg_sum: Shows the sum of all AI credits over all hours in the current month for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_agg_sum: int, optional :param ai_credits_bits_assistant_ai_credits_agg_sum: Shows the sum of all AI credits used by Bits AI Assistant over all hours in the current month for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_bits_assistant_ai_credits_agg_sum: int, optional :param ai_credits_bits_dev_ai_credits_agg_sum: Shows the sum of all AI credits used by Bits AI Dev over all hours in the current month for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_bits_dev_ai_credits_agg_sum: int, optional :param ai_credits_bits_sre_ai_credits_agg_sum: Shows the sum of all AI credits used by Bits AI SRE over all hours in the current month for all organizations. + Values are returned in micro-credits. Divide by 1,000,000 to get AI credits. :type ai_credits_bits_sre_ai_credits_agg_sum: int, optional :param apm_azure_app_service_host_top99p_sum: Shows the 99th percentile of all Azure app services using APM over all hours in the current month all organizations. @@ -1269,6 +1274,7 @@ def __init__( :type dbm_queries_avg_sum: int, optional :param do_jobs_monitoring_orchestrators_job_hours_agg_sum: Shows the sum of all orchestrator job hours over all hours in the current month for all organizations. + Values are returned in seconds. Divide by 3,600 to convert to hours. :type do_jobs_monitoring_orchestrators_job_hours_agg_sum: int, optional :param end_date: Shows the last date of usage in the current month for all organizations. @@ -1410,93 +1416,123 @@ def __init__( :type indexed_points_agg_sum: int, optional :param infra_cpu_agg_sum: Shows the sum of all Infrastructure vCPU cores over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_agg_sum: int, optional :param infra_cpu_avg_sum: Shows the average of all Infrastructure vCPU cores over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_avg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_agent_agg_sum: Shows the sum of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_agent_agg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_agent_avg_sum: Shows the average of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_agent_avg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_agent_basic_agg_sum: Shows the sum of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_agent_basic_agg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_agent_basic_avg_sum: Shows the average of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_agent_basic_avg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_aws_agg_sum: Shows the sum of all default Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_aws_agg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_aws_avg_sum: Shows the average of all default Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_aws_avg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_azure_agg_sum: Shows the sum of all default Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_azure_agg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_azure_avg_sum: Shows the average of all default Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_azure_avg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_gcp_agg_sum: Shows the sum of all default Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_gcp_agg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_gcp_avg_sum: Shows the average of all default Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_gcp_avg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_nutanix_agg_sum: Shows the sum of all default Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_nutanix_agg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_nutanix_avg_sum: Shows the average of all default Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_nutanix_avg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_nutanix_basic_agg_sum: Shows the sum of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_nutanix_basic_agg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_nutanix_basic_avg_sum: Shows the average of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_nutanix_basic_avg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_opentelemetry_agg_sum: Shows the sum of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_opentelemetry_agg_sum: int, optional :param infra_cpu_default_infra_host_vcpu_opentelemetry_avg_sum: Shows the average of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_default_infra_host_vcpu_opentelemetry_avg_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_agent_agg_sum: Shows the sum of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_agent_agg_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_agent_avg_sum: Shows the average of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_agent_avg_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_aws_agg_sum: Shows the sum of all observed Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_aws_agg_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_aws_avg_sum: Shows the average of all observed Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_aws_avg_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_azure_agg_sum: Shows the sum of all observed Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_azure_agg_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_azure_avg_sum: Shows the average of all observed Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_azure_avg_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_gcp_agg_sum: Shows the sum of all observed Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_gcp_agg_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_gcp_avg_sum: Shows the average of all observed Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_gcp_avg_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_nutanix_agg_sum: Shows the sum of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_nutanix_agg_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_nutanix_avg_sum: Shows the average of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_nutanix_avg_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_opentelemetry_agg_sum: Shows the sum of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_opentelemetry_agg_sum: int, optional :param infra_cpu_observed_infra_host_vcpu_opentelemetry_avg_sum: Shows the average of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations. + Values are returned in millicores. Divide by 1,000 to convert to cores. :type infra_cpu_observed_infra_host_vcpu_opentelemetry_avg_sum: int, optional :param infra_edge_monitoring_devices_top99p_sum: Shows the 99th percentile of all Edge Devices Monitoring devices over all hours in the current month for all organizations. diff --git a/src/datadog_api_client/v1/models/__init__.py b/src/datadog_api_client/v1/models/__init__.py index 7f94ecdf40..85c9757ab5 100644 --- a/src/datadog_api_client/v1/models/__init__.py +++ b/src/datadog_api_client/v1/models/__init__.py @@ -959,6 +959,10 @@ from datadog_api_client.v1.model.synthetics_basic_auth import SyntheticsBasicAuth from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest from datadog_api_client.v1.model.synthetics_basic_auth_digest_type import SyntheticsBasicAuthDigestType +from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT +from datadog_api_client.v1.model.synthetics_basic_auth_jwt_add_claims import SyntheticsBasicAuthJWTAddClaims +from datadog_api_client.v1.model.synthetics_basic_auth_jwt_algorithm import SyntheticsBasicAuthJWTAlgorithm +from datadog_api_client.v1.model.synthetics_basic_auth_jwt_type import SyntheticsBasicAuthJWTType from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM from datadog_api_client.v1.model.synthetics_basic_auth_ntlm_type import SyntheticsBasicAuthNTLMType from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient @@ -2170,6 +2174,10 @@ "SyntheticsBasicAuth", "SyntheticsBasicAuthDigest", "SyntheticsBasicAuthDigestType", + "SyntheticsBasicAuthJWT", + "SyntheticsBasicAuthJWTAddClaims", + "SyntheticsBasicAuthJWTAlgorithm", + "SyntheticsBasicAuthJWTType", "SyntheticsBasicAuthNTLM", "SyntheticsBasicAuthNTLMType", "SyntheticsBasicAuthOauthClient", diff --git a/src/datadog_api_client/v2/api/aws_integration_api.py b/src/datadog_api_client/v2/api/aws_integration_api.py index 4cf94d9051..b10a190825 100644 --- a/src/datadog_api_client/v2/api/aws_integration_api.py +++ b/src/datadog_api_client/v2/api/aws_integration_api.py @@ -25,6 +25,8 @@ from datadog_api_client.v2.model.aws_event_bridge_create_request import AWSEventBridgeCreateRequest from datadog_api_client.v2.model.aws_new_external_id_response import AWSNewExternalIDResponse from datadog_api_client.v2.model.aws_integration_iam_permissions_response import AWSIntegrationIamPermissionsResponse +from datadog_api_client.v2.model.aws_ccm_config_validation_response import AWSCcmConfigValidationResponse +from datadog_api_client.v2.model.aws_ccm_config_validation_request import AWSCcmConfigValidationRequest class AWSIntegrationApi: @@ -386,6 +388,26 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._validate_awsccm_config_endpoint = _Endpoint( + settings={ + "response_type": (AWSCcmConfigValidationResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/aws/validate_ccm_config", + "operation_id": "validate_awsccm_config", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (AWSCcmConfigValidationRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + def create_aws_account( self, body: AWSAccountCreateRequest, @@ -678,3 +700,21 @@ def update_aws_account_ccm_config( kwargs["body"] = body return self._update_aws_account_ccm_config_endpoint.call_with_http_info(**kwargs) + + def validate_awsccm_config( + self, + body: AWSCcmConfigValidationRequest, + ) -> AWSCcmConfigValidationResponse: + """Validate AWS CCM config. + + Validate a Cloud Cost Management config for an AWS account using Cost and Usage Report + (CUR) 2.0 against Datadog's ingest requirements without persisting it. + + :param body: Validate a Cloud Cost Management config for an AWS account integration config. + :type body: AWSCcmConfigValidationRequest + :rtype: AWSCcmConfigValidationResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._validate_awsccm_config_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/cloud_cost_management_api.py b/src/datadog_api_client/v2/api/cloud_cost_management_api.py index 8bc5d60063..f2d35f381a 100644 --- a/src/datadog_api_client/v2/api/cloud_cost_management_api.py +++ b/src/datadog_api_client/v2/api/cloud_cost_management_api.py @@ -1287,6 +1287,11 @@ def __init__(self, api_client=None): "attribute": "filter[provider]", "location": "query", }, + "filter_metric": { + "openapi_types": (str,), + "attribute": "filter[metric]", + "location": "query", + }, }, headers_map={ "accept": ["application/json"], @@ -2884,6 +2889,7 @@ def list_cost_tag_key_sources( filter_month: str, *, filter_provider: Union[str, UnsetType] = unset, + filter_metric: Union[str, UnsetType] = unset, ) -> CostTagKeySourcesResponse: """List Cloud Cost Management tag sources. @@ -2893,6 +2899,8 @@ def list_cost_tag_key_sources( :type filter_month: str :param filter_provider: Filter results to a specific provider. Common cloud values are ``aws`` , ``azure`` , ``gcp`` , ``Oracle`` (OCI), and ``custom``. SaaS billing integrations (for example, ``Snowflake`` , ``MongoDB`` , ``Databricks`` ) are also accepted using their display-name string. Values are case-sensitive. :type filter_provider: str, optional + :param filter_metric: Filter results to tag keys that have data for a specific Cloud Cost Management metric (for example, ``aws.cost.net.amortized`` ). When omitted, all tag keys for the requested period are returned. + :type filter_metric: str, optional :rtype: CostTagKeySourcesResponse """ kwargs: Dict[str, Any] = {} @@ -2901,6 +2909,9 @@ def list_cost_tag_key_sources( if filter_provider is not unset: kwargs["filter_provider"] = filter_provider + if filter_metric is not unset: + kwargs["filter_metric"] = filter_metric + return self._list_cost_tag_key_sources_endpoint.call_with_http_info(**kwargs) def list_cost_tag_metadata( diff --git a/src/datadog_api_client/v2/api/csm_ownership_api.py b/src/datadog_api_client/v2/api/csm_ownership_api.py new file mode 100644 index 0000000000..bf7db77ae7 --- /dev/null +++ b/src/datadog_api_client/v2/api/csm_ownership_api.py @@ -0,0 +1,412 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Any, Dict, Union + +from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint +from datadog_api_client.configuration import Configuration +from datadog_api_client.model_utils import ( + UnsetType, + unset, +) +from datadog_api_client.v2.model.ownership_inference_list_response import OwnershipInferenceListResponse +from datadog_api_client.v2.model.ownership_history_response import OwnershipHistoryResponse +from datadog_api_client.v2.model.ownership_inference_response import OwnershipInferenceResponse +from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType +from datadog_api_client.v2.model.ownership_evidence_response import OwnershipEvidenceResponse +from datadog_api_client.v2.model.ownership_feedback_response import OwnershipFeedbackResponse +from datadog_api_client.v2.model.ownership_feedback_request import OwnershipFeedbackRequest + + +class CSMOwnershipApi: + """ + Datadog Cloud Security Management (CSM) Ownership infers the most likely owner + for a cloud resource by combining ownership signals from across the platform, + and lets you review the inference, inspect its evidence, and submit feedback to + persist, override, or correct the inferred owner. + For more information, see `Cloud Security Management `_. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient(Configuration()) + self.api_client = api_client + + self._create_ownership_feedback_endpoint = _Endpoint( + settings={ + "response_type": (OwnershipFeedbackResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/csm/ownership/{resource_id}/{owner_type}/feedback", + "operation_id": "create_ownership_feedback", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "resource_id": { + "required": True, + "openapi_types": (str,), + "attribute": "resource_id", + "location": "path", + }, + "owner_type": { + "required": True, + "openapi_types": (OwnershipOwnerType,), + "attribute": "owner_type", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (OwnershipFeedbackRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._get_ownership_evidence_endpoint = _Endpoint( + settings={ + "response_type": (OwnershipEvidenceResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/csm/ownership/{resource_id}/{owner_type}/evidence", + "operation_id": "get_ownership_evidence", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "resource_id": { + "required": True, + "openapi_types": (str,), + "attribute": "resource_id", + "location": "path", + }, + "owner_type": { + "required": True, + "openapi_types": (OwnershipOwnerType,), + "attribute": "owner_type", + "location": "path", + }, + "if_none_match": { + "openapi_types": (str,), + "attribute": "If-None-Match", + "location": "header", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._get_ownership_inference_endpoint = _Endpoint( + settings={ + "response_type": (OwnershipInferenceResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/csm/ownership/{resource_id}/{owner_type}", + "operation_id": "get_ownership_inference", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "resource_id": { + "required": True, + "openapi_types": (str,), + "attribute": "resource_id", + "location": "path", + }, + "owner_type": { + "required": True, + "openapi_types": (OwnershipOwnerType,), + "attribute": "owner_type", + "location": "path", + }, + "if_none_match": { + "openapi_types": (str,), + "attribute": "If-None-Match", + "location": "header", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_ownership_history_endpoint = _Endpoint( + settings={ + "response_type": (OwnershipHistoryResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/csm/ownership/{resource_id}/history", + "operation_id": "list_ownership_history", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "resource_id": { + "required": True, + "openapi_types": (str,), + "attribute": "resource_id", + "location": "path", + }, + "cursor": { + "openapi_types": (str,), + "attribute": "cursor", + "location": "query", + }, + "limit": { + "validation": { + "inclusive_maximum": 100, + "inclusive_minimum": 1, + }, + "openapi_types": (int,), + "attribute": "limit", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_ownership_history_by_owner_type_endpoint = _Endpoint( + settings={ + "response_type": (OwnershipHistoryResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/csm/ownership/{resource_id}/{owner_type}/history", + "operation_id": "list_ownership_history_by_owner_type", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "resource_id": { + "required": True, + "openapi_types": (str,), + "attribute": "resource_id", + "location": "path", + }, + "owner_type": { + "required": True, + "openapi_types": (OwnershipOwnerType,), + "attribute": "owner_type", + "location": "path", + }, + "cursor": { + "openapi_types": (str,), + "attribute": "cursor", + "location": "query", + }, + "limit": { + "validation": { + "inclusive_maximum": 100, + "inclusive_minimum": 1, + }, + "openapi_types": (int,), + "attribute": "limit", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_ownership_inferences_endpoint = _Endpoint( + settings={ + "response_type": (OwnershipInferenceListResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/csm/ownership/{resource_id}", + "operation_id": "list_ownership_inferences", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "resource_id": { + "required": True, + "openapi_types": (str,), + "attribute": "resource_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + def create_ownership_feedback( + self, + resource_id: str, + owner_type: OwnershipOwnerType, + body: OwnershipFeedbackRequest, + ) -> OwnershipFeedbackResponse: + """Submit feedback on an ownership inference. + + Submit feedback on the current ownership inference for a resource and owner type. Valid actions are ``confirm`` , ``reject`` , ``correct`` , and ``persist``. + + The request must include the current inference ``checksum`` in ``inference_checksum``. If the checksum does not match the current inference state, the endpoint returns ``409 Conflict``. + + When ``action`` is ``correct`` , ``corrected_owner_handle`` and ``corrected_owner_type`` are required. + + :param resource_id: The identifier of the resource that the feedback applies to. + :type resource_id: str + :param owner_type: The type of owner that the feedback applies to. + :type owner_type: OwnershipOwnerType + :type body: OwnershipFeedbackRequest + :rtype: OwnershipFeedbackResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["resource_id"] = resource_id + + kwargs["owner_type"] = owner_type + + kwargs["body"] = body + + return self._create_ownership_feedback_endpoint.call_with_http_info(**kwargs) + + def get_ownership_evidence( + self, + resource_id: str, + owner_type: OwnershipOwnerType, + *, + if_none_match: Union[str, UnsetType] = unset, + ) -> OwnershipEvidenceResponse: + """Get the evidence for an ownership inference. + + Get the evidence versions backing the current ownership inference for a resource and owner type. + + This endpoint supports weak ETag caching. Pass the previously returned ``ETag`` value in the ``If-None-Match`` request header to receive a ``304 Not Modified`` response when the evidence has not changed. + + :param resource_id: The identifier of the resource to retrieve evidence for. + :type resource_id: str + :param owner_type: The owner type of the inference to retrieve evidence for. + :type owner_type: OwnershipOwnerType + :param if_none_match: A previously returned weak ``ETag`` value. When supplied and the evidence has not changed, the endpoint returns ``304 Not Modified``. + :type if_none_match: str, optional + :rtype: OwnershipEvidenceResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["resource_id"] = resource_id + + kwargs["owner_type"] = owner_type + + if if_none_match is not unset: + kwargs["if_none_match"] = if_none_match + + return self._get_ownership_evidence_endpoint.call_with_http_info(**kwargs) + + def get_ownership_inference( + self, + resource_id: str, + owner_type: OwnershipOwnerType, + *, + if_none_match: Union[str, UnsetType] = unset, + ) -> OwnershipInferenceResponse: + """Get an ownership inference by owner type. + + Get the current ownership inference for a resource for a specific owner type. + + This endpoint supports ETag-based caching. Pass the previously returned ``ETag`` value in the ``If-None-Match`` request header to receive a ``304 Not Modified`` response when the inference has not changed. + + :param resource_id: The identifier of the resource to retrieve the ownership inference for. + :type resource_id: str + :param owner_type: The owner type of the inference to retrieve. + :type owner_type: OwnershipOwnerType + :param if_none_match: A previously returned ``ETag`` value. When supplied and the resource has not changed, the endpoint returns ``304 Not Modified``. + :type if_none_match: str, optional + :rtype: OwnershipInferenceResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["resource_id"] = resource_id + + kwargs["owner_type"] = owner_type + + if if_none_match is not unset: + kwargs["if_none_match"] = if_none_match + + return self._get_ownership_inference_endpoint.call_with_http_info(**kwargs) + + def list_ownership_history( + self, + resource_id: str, + *, + cursor: Union[str, UnsetType] = unset, + limit: Union[int, UnsetType] = unset, + ) -> OwnershipHistoryResponse: + """List ownership inference history for a resource. + + List inference history entries for a resource across all owner types, ordered from most recent to oldest. Uses cursor-based pagination. + + :param resource_id: The identifier of the resource to retrieve inference history for. + :type resource_id: str + :param cursor: An opaque, base64-encoded cursor token returned by a previous call in ``pagination.next_cursor``. Omit to fetch the first page. + :type cursor: str, optional + :param limit: The maximum number of history entries to return per page. + :type limit: int, optional + :rtype: OwnershipHistoryResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["resource_id"] = resource_id + + if cursor is not unset: + kwargs["cursor"] = cursor + + if limit is not unset: + kwargs["limit"] = limit + + return self._list_ownership_history_endpoint.call_with_http_info(**kwargs) + + def list_ownership_history_by_owner_type( + self, + resource_id: str, + owner_type: OwnershipOwnerType, + *, + cursor: Union[str, UnsetType] = unset, + limit: Union[int, UnsetType] = unset, + ) -> OwnershipHistoryResponse: + """List ownership history by owner type. + + List inference history entries for a resource filtered by owner type, ordered from most recent to oldest. Uses cursor-based pagination. + + :param resource_id: The identifier of the resource to retrieve inference history for. + :type resource_id: str + :param owner_type: The owner type to filter history by. + :type owner_type: OwnershipOwnerType + :param cursor: An opaque, base64-encoded cursor token returned by a previous call in ``pagination.next_cursor``. Omit to fetch the first page. + :type cursor: str, optional + :param limit: The maximum number of history entries to return per page. + :type limit: int, optional + :rtype: OwnershipHistoryResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["resource_id"] = resource_id + + kwargs["owner_type"] = owner_type + + if cursor is not unset: + kwargs["cursor"] = cursor + + if limit is not unset: + kwargs["limit"] = limit + + return self._list_ownership_history_by_owner_type_endpoint.call_with_http_info(**kwargs) + + def list_ownership_inferences( + self, + resource_id: str, + ) -> OwnershipInferenceListResponse: + """List ownership inferences for a resource. + + Get all current ownership inferences for a resource, one per owner type ( ``user`` , ``team`` , ``service`` , ``unknown`` ). + + :param resource_id: The identifier of the resource to retrieve ownership inferences for. + :type resource_id: str + :rtype: OwnershipInferenceListResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["resource_id"] = resource_id + + return self._list_ownership_inferences_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/csm_settings_api.py b/src/datadog_api_client/v2/api/csm_settings_api.py new file mode 100644 index 0000000000..ae041c3725 --- /dev/null +++ b/src/datadog_api_client/v2/api/csm_settings_api.py @@ -0,0 +1,355 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Any, Dict, Union + +from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint +from datadog_api_client.configuration import Configuration +from datadog_api_client.model_utils import ( + UnsetType, + unset, +) +from datadog_api_client.v2.model.csm_agentless_hosts_response import CsmAgentlessHostsResponse +from datadog_api_client.v2.model.csm_host_facet_info_response import CsmHostFacetInfoResponse +from datadog_api_client.v2.model.csm_agentless_host_facets_response import CsmAgentlessHostFacetsResponse +from datadog_api_client.v2.model.csm_unified_hosts_response import CsmUnifiedHostsResponse +from datadog_api_client.v2.model.csm_unified_host_facets_response import CsmUnifiedHostFacetsResponse + + +class CSMSettingsApi: + """ + Datadog Cloud Security Management (CSM) Settings APIs allow you to list and filter + your cloud hosts monitored by CSM, covering both agentless and agent-based discovery. + For more information, see `Cloud Security Management `_. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient(Configuration()) + self.api_client = api_client + + self._get_csm_agentless_host_facet_info_endpoint = _Endpoint( + settings={ + "response_type": (CsmHostFacetInfoResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/csm/settings/agentless_hosts/facet_info", + "operation_id": "get_csm_agentless_host_facet_info", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "facet": { + "required": True, + "openapi_types": (str,), + "attribute": "facet", + "location": "query", + }, + "search": { + "openapi_types": (str,), + "attribute": "search", + "location": "query", + }, + "query": { + "openapi_types": (str,), + "attribute": "query", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._get_csm_unified_host_facet_info_endpoint = _Endpoint( + settings={ + "response_type": (CsmHostFacetInfoResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/csm/settings/hosts/facet_info", + "operation_id": "get_csm_unified_host_facet_info", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "facet": { + "required": True, + "openapi_types": (str,), + "attribute": "facet", + "location": "query", + }, + "search": { + "openapi_types": (str,), + "attribute": "search", + "location": "query", + }, + "query": { + "openapi_types": (str,), + "attribute": "query", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_csm_agentless_host_facets_endpoint = _Endpoint( + settings={ + "response_type": (CsmAgentlessHostFacetsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/csm/settings/agentless_hosts/facets", + "operation_id": "list_csm_agentless_host_facets", + "http_method": "GET", + "version": "v2", + }, + params_map={}, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_csm_agentless_hosts_endpoint = _Endpoint( + settings={ + "response_type": (CsmAgentlessHostsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/csm/settings/agentless_hosts", + "operation_id": "list_csm_agentless_hosts", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "page": { + "validation": { + "inclusive_maximum": 1000000, + "inclusive_minimum": 0, + }, + "openapi_types": (int,), + "attribute": "page", + "location": "query", + }, + "size": { + "validation": { + "inclusive_maximum": 100, + "inclusive_minimum": 1, + }, + "openapi_types": (int,), + "attribute": "size", + "location": "query", + }, + "query": { + "openapi_types": (str,), + "attribute": "query", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_csm_unified_host_facets_endpoint = _Endpoint( + settings={ + "response_type": (CsmUnifiedHostFacetsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/csm/settings/hosts/facets", + "operation_id": "list_csm_unified_host_facets", + "http_method": "GET", + "version": "v2", + }, + params_map={}, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_csm_unified_hosts_endpoint = _Endpoint( + settings={ + "response_type": (CsmUnifiedHostsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/csm/settings/hosts", + "operation_id": "list_csm_unified_hosts", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "page": { + "validation": { + "inclusive_maximum": 1000000, + "inclusive_minimum": 0, + }, + "openapi_types": (int,), + "attribute": "page", + "location": "query", + }, + "size": { + "validation": { + "inclusive_maximum": 100, + "inclusive_minimum": 1, + }, + "openapi_types": (int,), + "attribute": "size", + "location": "query", + }, + "query": { + "openapi_types": (str,), + "attribute": "query", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + def get_csm_agentless_host_facet_info( + self, + facet: str, + *, + search: Union[str, UnsetType] = unset, + query: Union[str, UnsetType] = unset, + ) -> CsmHostFacetInfoResponse: + """Get agentless host facet info. + + Get the value distribution for a specific agentless host facet, with optional search and filtering. + + :param facet: The facet identifier to retrieve value distribution for. Valid values are ``resource_name`` , ``account_id`` , ``resource_type`` , ``cloud_provider`` , ``has_vulnerability_scanning`` , and ``has_posture_management``. + :type facet: str + :param search: A search string to filter the facet values. + :type search: str, optional + :param query: A filter query to scope the facet value counts. + :type query: str, optional + :rtype: CsmHostFacetInfoResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["facet"] = facet + + if search is not unset: + kwargs["search"] = search + + if query is not unset: + kwargs["query"] = query + + return self._get_csm_agentless_host_facet_info_endpoint.call_with_http_info(**kwargs) + + def get_csm_unified_host_facet_info( + self, + facet: str, + *, + search: Union[str, UnsetType] = unset, + query: Union[str, UnsetType] = unset, + ) -> CsmHostFacetInfoResponse: + """Get unified host facet info. + + Get the value distribution for a specific unified host facet, with optional search and filtering. + + :param facet: The facet identifier to retrieve value distribution for. Valid values include ``resource_name`` , ``account_id`` , ``resource_type`` , ``cloud_provider`` , ``agentless_vulnerability_scanning`` , ``agentless_posture_management`` , ``hostname`` , ``agent_version`` , ``os`` , ``cluster_name`` , ``agent_posture_management`` , ``agent_cws_enabled`` , ``agent_csm_vm_hosts_enabled`` , and ``agent_csm_vm_containers_enabled``. + :type facet: str + :param search: A search string to filter the facet values. + :type search: str, optional + :param query: A filter query to scope the facet value counts. + :type query: str, optional + :rtype: CsmHostFacetInfoResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["facet"] = facet + + if search is not unset: + kwargs["search"] = search + + if query is not unset: + kwargs["query"] = query + + return self._get_csm_unified_host_facet_info_endpoint.call_with_http_info(**kwargs) + + def list_csm_agentless_host_facets( + self, + ) -> CsmAgentlessHostFacetsResponse: + """List agentless host facets. + + Get the list of available facets for filtering agentless hosts. + + :rtype: CsmAgentlessHostFacetsResponse + """ + kwargs: Dict[str, Any] = {} + return self._list_csm_agentless_host_facets_endpoint.call_with_http_info(**kwargs) + + def list_csm_agentless_hosts( + self, + *, + page: Union[int, UnsetType] = unset, + size: Union[int, UnsetType] = unset, + query: Union[str, UnsetType] = unset, + ) -> CsmAgentlessHostsResponse: + """List agentless hosts. + + Get the list of agentless hosts for CSM, with optional pagination and filtering. + + :param page: The page index for pagination (zero-based). + :type page: int, optional + :param size: The number of agentless hosts to return per page. + :type size: int, optional + :param query: A search query string to filter agentless hosts. + :type query: str, optional + :rtype: CsmAgentlessHostsResponse + """ + kwargs: Dict[str, Any] = {} + if page is not unset: + kwargs["page"] = page + + if size is not unset: + kwargs["size"] = size + + if query is not unset: + kwargs["query"] = query + + return self._list_csm_agentless_hosts_endpoint.call_with_http_info(**kwargs) + + def list_csm_unified_host_facets( + self, + ) -> CsmUnifiedHostFacetsResponse: + """List unified host facets. + + Get the list of available facets for filtering unified hosts. + + :rtype: CsmUnifiedHostFacetsResponse + """ + kwargs: Dict[str, Any] = {} + return self._list_csm_unified_host_facets_endpoint.call_with_http_info(**kwargs) + + def list_csm_unified_hosts( + self, + *, + page: Union[int, UnsetType] = unset, + size: Union[int, UnsetType] = unset, + query: Union[str, UnsetType] = unset, + ) -> CsmUnifiedHostsResponse: + """List unified hosts. + + Get the list of unified hosts for CSM, combining agent and agentless host data, with optional pagination and filtering. + + :param page: The page index for pagination (zero-based). + :type page: int, optional + :param size: The number of hosts to return per page. + :type size: int, optional + :param query: A search query string to filter unified hosts. + :type query: str, optional + :rtype: CsmUnifiedHostsResponse + """ + kwargs: Dict[str, Any] = {} + if page is not unset: + kwargs["page"] = page + + if size is not unset: + kwargs["size"] = size + + if query is not unset: + kwargs["query"] = query + + return self._list_csm_unified_hosts_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/dashboard_sharing_api.py b/src/datadog_api_client/v2/api/dashboard_sharing_api.py new file mode 100644 index 0000000000..6422613af2 --- /dev/null +++ b/src/datadog_api_client/v2/api/dashboard_sharing_api.py @@ -0,0 +1,61 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Any, Dict + +from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint +from datadog_api_client.configuration import Configuration +from datadog_api_client.v2.model.list_shared_dashboards_response import ListSharedDashboardsResponse + + +class DashboardSharingApi: + """ + Manage dashboard sharing configurations. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient(Configuration()) + self.api_client = api_client + + self._list_shared_dashboards_by_dashboard_id_endpoint = _Endpoint( + settings={ + "response_type": (ListSharedDashboardsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/dashboard/{dashboard_id}/shared", + "operation_id": "list_shared_dashboards_by_dashboard_id", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "dashboard_id": { + "required": True, + "openapi_types": (str,), + "attribute": "dashboard_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + def list_shared_dashboards_by_dashboard_id( + self, + dashboard_id: str, + ) -> ListSharedDashboardsResponse: + """List shared dashboards for a dashboard. + + Retrieve shared dashboards associated with the specified dashboard. + + :param dashboard_id: ID of the dashboard. + :type dashboard_id: str + :rtype: ListSharedDashboardsResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["dashboard_id"] = dashboard_id + + return self._list_shared_dashboards_by_dashboard_id_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/data_observability_api.py b/src/datadog_api_client/v2/api/data_observability_api.py new file mode 100644 index 0000000000..87a4c8e5a5 --- /dev/null +++ b/src/datadog_api_client/v2/api/data_observability_api.py @@ -0,0 +1,104 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Any, Dict + +from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint +from datadog_api_client.configuration import Configuration +from datadog_api_client.v2.model.get_data_observability_monitor_run_status_response import ( + GetDataObservabilityMonitorRunStatusResponse, +) +from datadog_api_client.v2.model.run_data_observability_monitor_response import RunDataObservabilityMonitorResponse + + +class DataObservabilityApi: + """ + Manage and run data observability monitors. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient(Configuration()) + self.api_client = api_client + + self._get_data_observability_monitor_run_status_endpoint = _Endpoint( + settings={ + "response_type": (GetDataObservabilityMonitorRunStatusResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/data-observability/monitors/runs/{run_id}/status", + "operation_id": "get_data_observability_monitor_run_status", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "run_id": { + "required": True, + "openapi_types": (str,), + "attribute": "run_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._run_data_observability_monitor_endpoint = _Endpoint( + settings={ + "response_type": (RunDataObservabilityMonitorResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/data-observability/monitors/{monitor_id}/run", + "operation_id": "run_data_observability_monitor", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "monitor_id": { + "required": True, + "openapi_types": (int,), + "attribute": "monitor_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + def get_data_observability_monitor_run_status( + self, + run_id: str, + ) -> GetDataObservabilityMonitorRunStatusResponse: + """Get data observability monitor run status. + + Retrieves the current status of a data observability monitor run. Poll this endpoint after triggering a run to determine when evaluation is complete. + + :param run_id: The ID of the monitor run to retrieve status for. + :type run_id: str + :rtype: GetDataObservabilityMonitorRunStatusResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["run_id"] = run_id + + return self._get_data_observability_monitor_run_status_endpoint.call_with_http_info(**kwargs) + + def run_data_observability_monitor( + self, + monitor_id: int, + ) -> RunDataObservabilityMonitorResponse: + """Run a data observability monitor. + + Manually triggers a run for a data observability monitor. Only monitors that are not scheduled (manually-runnable) can be triggered this way. + + :param monitor_id: The ID of the data observability monitor to run. + :type monitor_id: int + :rtype: RunDataObservabilityMonitorResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["monitor_id"] = monitor_id + + return self._run_data_observability_monitor_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/fleet_automation_api.py b/src/datadog_api_client/v2/api/fleet_automation_api.py index 6b9cff2842..2accb3b6e9 100644 --- a/src/datadog_api_client/v2/api/fleet_automation_api.py +++ b/src/datadog_api_client/v2/api/fleet_automation_api.py @@ -15,8 +15,6 @@ from datadog_api_client.v2.model.fleet_agents_response import FleetAgentsResponse from datadog_api_client.v2.model.fleet_agent_info_response import FleetAgentInfoResponse from datadog_api_client.v2.model.fleet_tracers_response import FleetTracersResponse -from datadog_api_client.v2.model.fleet_clusters_response import FleetClustersResponse -from datadog_api_client.v2.model.fleet_instrumented_pods_response import FleetInstrumentedPodsResponse from datadog_api_client.v2.model.fleet_deployments_response import FleetDeploymentsResponse from datadog_api_client.v2.model.fleet_deployment_response import FleetDeploymentResponse from datadog_api_client.v2.model.fleet_deployment_configure_create_request import FleetDeploymentConfigureCreateRequest @@ -360,60 +358,6 @@ def __init__(self, api_client=None): api_client=api_client, ) - self._list_fleet_clusters_endpoint = _Endpoint( - settings={ - "response_type": (FleetClustersResponse,), - "auth": ["apiKeyAuth", "appKeyAuth"], - "endpoint_path": "/api/unstable/fleet/clusters", - "operation_id": "list_fleet_clusters", - "http_method": "GET", - "version": "v2", - }, - params_map={ - "page_number": { - "validation": { - "inclusive_minimum": 0, - }, - "openapi_types": (int,), - "attribute": "page_number", - "location": "query", - }, - "page_size": { - "validation": { - "inclusive_maximum": 100, - "inclusive_minimum": 1, - }, - "openapi_types": (int,), - "attribute": "page_size", - "location": "query", - }, - "sort_attribute": { - "openapi_types": (str,), - "attribute": "sort_attribute", - "location": "query", - }, - "sort_descending": { - "openapi_types": (bool,), - "attribute": "sort_descending", - "location": "query", - }, - "filter": { - "openapi_types": (str,), - "attribute": "filter", - "location": "query", - }, - "tags": { - "openapi_types": (str,), - "attribute": "tags", - "location": "query", - }, - }, - headers_map={ - "accept": ["application/json"], - }, - api_client=api_client, - ) - self._list_fleet_deployments_endpoint = _Endpoint( settings={ "response_type": (FleetDeploymentsResponse,), @@ -444,29 +388,6 @@ def __init__(self, api_client=None): api_client=api_client, ) - self._list_fleet_instrumented_pods_endpoint = _Endpoint( - settings={ - "response_type": (FleetInstrumentedPodsResponse,), - "auth": ["apiKeyAuth", "appKeyAuth"], - "endpoint_path": "/api/unstable/fleet/clusters/{cluster_name}/instrumented_pods", - "operation_id": "list_fleet_instrumented_pods", - "http_method": "GET", - "version": "v2", - }, - params_map={ - "cluster_name": { - "required": True, - "openapi_types": (str,), - "attribute": "cluster_name", - "location": "path", - }, - }, - headers_map={ - "accept": ["application/json"], - }, - api_client=api_client, - ) - self._list_fleet_schedules_endpoint = _Endpoint( settings={ "response_type": (FleetSchedulesResponse,), @@ -925,59 +846,6 @@ def list_fleet_agent_versions( kwargs: Dict[str, Any] = {} return self._list_fleet_agent_versions_endpoint.call_with_http_info(**kwargs) - def list_fleet_clusters( - self, - *, - page_number: Union[int, UnsetType] = unset, - page_size: Union[int, UnsetType] = unset, - sort_attribute: Union[str, UnsetType] = unset, - sort_descending: Union[bool, UnsetType] = unset, - filter: Union[str, UnsetType] = unset, - tags: Union[str, UnsetType] = unset, - ) -> FleetClustersResponse: - """List all fleet clusters. - - Retrieve a paginated list of Kubernetes clusters in the fleet. - - This endpoint returns clusters with metadata including node counts, agent versions, - enabled products, and associated services. Use the ``page_number`` and ``page_size`` - query parameters to paginate through results. - - :param page_number: Page number for pagination (starts at 0). - :type page_number: int, optional - :param page_size: Number of results per page (must be greater than 0 and less than or equal to 100). - :type page_size: int, optional - :param sort_attribute: Attribute to sort by. - :type sort_attribute: str, optional - :param sort_descending: Sort order (true for descending, false for ascending). - :type sort_descending: bool, optional - :param filter: Filter string for narrowing down cluster results. - :type filter: str, optional - :param tags: Comma-separated list of tags to filter clusters. - :type tags: str, optional - :rtype: FleetClustersResponse - """ - kwargs: Dict[str, Any] = {} - if page_number is not unset: - kwargs["page_number"] = page_number - - if page_size is not unset: - kwargs["page_size"] = page_size - - if sort_attribute is not unset: - kwargs["sort_attribute"] = sort_attribute - - if sort_descending is not unset: - kwargs["sort_descending"] = sort_descending - - if filter is not unset: - kwargs["filter"] = filter - - if tags is not unset: - kwargs["tags"] = tags - - return self._list_fleet_clusters_endpoint.call_with_http_info(**kwargs) - def list_fleet_deployments( self, *, @@ -1004,28 +872,6 @@ def list_fleet_deployments( return self._list_fleet_deployments_endpoint.call_with_http_info(**kwargs) - def list_fleet_instrumented_pods( - self, - cluster_name: str, - ) -> FleetInstrumentedPodsResponse: - """List instrumented pods for a cluster. - - Retrieve the list of pods targeted for Single Step Instrumentation (SSI) injection - in a specific Kubernetes cluster. - - This endpoint returns pod groups organized by owner reference (deployment, statefulset, etc.) - with their injection annotations and applied targets. Use the clusters list endpoint - to discover available cluster names. - - :param cluster_name: The name of the Kubernetes cluster. - :type cluster_name: str - :rtype: FleetInstrumentedPodsResponse - """ - kwargs: Dict[str, Any] = {} - kwargs["cluster_name"] = cluster_name - - return self._list_fleet_instrumented_pods_endpoint.call_with_http_info(**kwargs) - def list_fleet_schedules( self, ) -> FleetSchedulesResponse: diff --git a/src/datadog_api_client/v2/api/forms_api.py b/src/datadog_api_client/v2/api/forms_api.py new file mode 100644 index 0000000000..e2439b0563 --- /dev/null +++ b/src/datadog_api_client/v2/api/forms_api.py @@ -0,0 +1,465 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Any, Dict, Union + +from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint +from datadog_api_client.configuration import Configuration +from datadog_api_client.model_utils import ( + UnsetType, + unset, + UUID, +) +from datadog_api_client.v2.model.forms_response import FormsResponse +from datadog_api_client.v2.model.form_response import FormResponse +from datadog_api_client.v2.model.create_form_request import CreateFormRequest +from datadog_api_client.v2.model.delete_form_response import DeleteFormResponse +from datadog_api_client.v2.model.update_form_request import UpdateFormRequest +from datadog_api_client.v2.model.clone_form_request import CloneFormRequest +from datadog_api_client.v2.model.form_publication_response import FormPublicationResponse +from datadog_api_client.v2.model.publish_form_request import PublishFormRequest +from datadog_api_client.v2.model.form_version_response import FormVersionResponse +from datadog_api_client.v2.model.upsert_form_version_request import UpsertFormVersionRequest +from datadog_api_client.v2.model.upsert_and_publish_form_version_request import UpsertAndPublishFormVersionRequest + + +class FormsApi: + """ + The Datadog Forms API lets you create and manage forms within the App Builder platform. + You can configure form settings, manage versions, and publish forms. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient(Configuration()) + self.api_client = api_client + + self._clone_form_endpoint = _Endpoint( + settings={ + "response_type": (FormResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/forms/{form_id}/clone", + "operation_id": "clone_form", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "form_id": { + "required": True, + "openapi_types": (UUID,), + "attribute": "form_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (CloneFormRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._create_and_publish_form_endpoint = _Endpoint( + settings={ + "response_type": (FormResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/forms/create_and_publish", + "operation_id": "create_and_publish_form", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (CreateFormRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._create_form_endpoint = _Endpoint( + settings={ + "response_type": (FormResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/forms", + "operation_id": "create_form", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (CreateFormRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._delete_form_endpoint = _Endpoint( + settings={ + "response_type": (DeleteFormResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/forms/{form_id}", + "operation_id": "delete_form", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "form_id": { + "required": True, + "openapi_types": (UUID,), + "attribute": "form_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._get_form_endpoint = _Endpoint( + settings={ + "response_type": (FormResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/forms/{form_id}", + "operation_id": "get_form", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "form_id": { + "required": True, + "openapi_types": (UUID,), + "attribute": "form_id", + "location": "path", + }, + "version": { + "openapi_types": (str,), + "attribute": "version", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_forms_endpoint = _Endpoint( + settings={ + "response_type": (FormsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/forms", + "operation_id": "list_forms", + "http_method": "GET", + "version": "v2", + }, + params_map={}, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._publish_form_endpoint = _Endpoint( + settings={ + "response_type": (FormPublicationResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/forms/{form_id}/publish", + "operation_id": "publish_form", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "form_id": { + "required": True, + "openapi_types": (UUID,), + "attribute": "form_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (PublishFormRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._update_form_endpoint = _Endpoint( + settings={ + "response_type": (FormResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/forms/{form_id}", + "operation_id": "update_form", + "http_method": "PATCH", + "version": "v2", + }, + params_map={ + "form_id": { + "required": True, + "openapi_types": (UUID,), + "attribute": "form_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (UpdateFormRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._upsert_and_publish_form_version_endpoint = _Endpoint( + settings={ + "response_type": (FormResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/forms/{form_id}/versions/upsert_and_publish", + "operation_id": "upsert_and_publish_form_version", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "form_id": { + "required": True, + "openapi_types": (UUID,), + "attribute": "form_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (UpsertAndPublishFormVersionRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._upsert_form_version_endpoint = _Endpoint( + settings={ + "response_type": (FormVersionResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/forms/{form_id}/versions", + "operation_id": "upsert_form_version", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "form_id": { + "required": True, + "openapi_types": (UUID,), + "attribute": "form_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (UpsertFormVersionRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + def clone_form( + self, + form_id: UUID, + body: CloneFormRequest, + ) -> FormResponse: + """Clone a form. + + Clone an existing form. The clone is created in draft mode using the source form's latest version. + + :param form_id: The ID of the form to clone. + :type form_id: UUID + :type body: CloneFormRequest + :rtype: FormResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["form_id"] = form_id + + kwargs["body"] = body + + return self._clone_form_endpoint.call_with_http_info(**kwargs) + + def create_and_publish_form( + self, + body: CreateFormRequest, + ) -> FormResponse: + """Create and publish a form. + + Creates a new form and immediately publishes its initial version. This also creates a new datastore for form responses and links it to the form. + + :type body: CreateFormRequest + :rtype: FormResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._create_and_publish_form_endpoint.call_with_http_info(**kwargs) + + def create_form( + self, + body: CreateFormRequest, + ) -> FormResponse: + """Create a form. + + Create a new form. The form is created in draft mode and must be published before it can be used. This also creates a new datastore for form responses and links it to the form. + + :type body: CreateFormRequest + :rtype: FormResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._create_form_endpoint.call_with_http_info(**kwargs) + + def delete_form( + self, + form_id: UUID, + ) -> DeleteFormResponse: + """Delete a form. + + Delete a form by its ID. This will also try to delete the associated datastore. + + :param form_id: The ID of the form. + :type form_id: UUID + :rtype: DeleteFormResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["form_id"] = form_id + + return self._delete_form_endpoint.call_with_http_info(**kwargs) + + def get_form( + self, + form_id: UUID, + *, + version: Union[str, UnsetType] = unset, + ) -> FormResponse: + """Get a form. + + Get a form definition by its ID. + + :param form_id: The ID of the form. + :type form_id: UUID + :param version: The version of the form to retrieve. Use 'latest' for the most recent draft, 'published' for the last published version, or a specific version number. + :type version: str, optional + :rtype: FormResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["form_id"] = form_id + + if version is not unset: + kwargs["version"] = version + + return self._get_form_endpoint.call_with_http_info(**kwargs) + + def list_forms( + self, + ) -> FormsResponse: + """List forms. + + Get all forms for the authenticated user's organization. + + :rtype: FormsResponse + """ + kwargs: Dict[str, Any] = {} + return self._list_forms_endpoint.call_with_http_info(**kwargs) + + def publish_form( + self, + form_id: UUID, + body: PublishFormRequest, + ) -> FormPublicationResponse: + """Publish a form version. + + Publish a specific version of a form, making it available for submissions. + + :param form_id: The ID of the form. + :type form_id: UUID + :type body: PublishFormRequest + :rtype: FormPublicationResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["form_id"] = form_id + + kwargs["body"] = body + + return self._publish_form_endpoint.call_with_http_info(**kwargs) + + def update_form( + self, + form_id: UUID, + body: UpdateFormRequest, + ) -> FormResponse: + """Update a form. + + Update a form's properties such as its name, description, or datastore configuration. + + :param form_id: The ID of the form. + :type form_id: UUID + :type body: UpdateFormRequest + :rtype: FormResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["form_id"] = form_id + + kwargs["body"] = body + + return self._update_form_endpoint.call_with_http_info(**kwargs) + + def upsert_and_publish_form_version( + self, + form_id: UUID, + body: UpsertAndPublishFormVersionRequest, + ) -> FormResponse: + """Upsert and publish a form version. + + Upsert the latest form version and publish it in a single atomic transaction. + + :param form_id: The ID of the form. + :type form_id: UUID + :type body: UpsertAndPublishFormVersionRequest + :rtype: FormResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["form_id"] = form_id + + kwargs["body"] = body + + return self._upsert_and_publish_form_version_endpoint.call_with_http_info(**kwargs) + + def upsert_form_version( + self, + form_id: UUID, + body: UpsertFormVersionRequest, + ) -> FormVersionResponse: + """Create or update a form version. + + Create or update the latest draft version of a form. The ``upsert_params`` field controls + optimistic concurrency behavior. + + :param form_id: The ID of the form. + :type form_id: UUID + :type body: UpsertFormVersionRequest + :rtype: FormVersionResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["form_id"] = form_id + + kwargs["body"] = body + + return self._upsert_form_version_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/google_chat_integration_api.py b/src/datadog_api_client/v2/api/google_chat_integration_api.py index d01de12582..e8e72581d0 100644 --- a/src/datadog_api_client/v2/api/google_chat_integration_api.py +++ b/src/datadog_api_client/v2/api/google_chat_integration_api.py @@ -7,7 +7,10 @@ from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint from datadog_api_client.configuration import Configuration +from datadog_api_client.v2.model.google_chat_organizations_response import GoogleChatOrganizationsResponse from datadog_api_client.v2.model.google_chat_app_named_space_response import GoogleChatAppNamedSpaceResponse +from datadog_api_client.v2.model.google_chat_organization_response import GoogleChatOrganizationResponse +from datadog_api_client.v2.model.google_chat_delegated_user_response import GoogleChatDelegatedUserResponse from datadog_api_client.v2.model.google_chat_organization_handles_response import GoogleChatOrganizationHandlesResponse from datadog_api_client.v2.model.google_chat_organization_handle_response import GoogleChatOrganizationHandleResponse from datadog_api_client.v2.model.google_chat_create_organization_handle_request import ( @@ -16,6 +19,10 @@ from datadog_api_client.v2.model.google_chat_update_organization_handle_request import ( GoogleChatUpdateOrganizationHandleRequest, ) +from datadog_api_client.v2.model.google_chat_target_audiences_response import GoogleChatTargetAudiencesResponse +from datadog_api_client.v2.model.google_chat_target_audience_response import GoogleChatTargetAudienceResponse +from datadog_api_client.v2.model.google_chat_target_audience_create_request import GoogleChatTargetAudienceCreateRequest +from datadog_api_client.v2.model.google_chat_target_audience_update_request import GoogleChatTargetAudienceUpdateRequest class GoogleChatIntegrationApi: @@ -29,6 +36,32 @@ def __init__(self, api_client=None): api_client = ApiClient(Configuration()) self.api_client = api_client + self._create_google_chat_target_audience_endpoint = _Endpoint( + settings={ + "response_type": (GoogleChatTargetAudienceResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/target-audiences", + "operation_id": "create_google_chat_target_audience", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "organization_binding_id": { + "required": True, + "openapi_types": (str,), + "attribute": "organization_binding_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (GoogleChatTargetAudienceCreateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._create_organization_handle_endpoint = _Endpoint( settings={ "response_type": (GoogleChatOrganizationHandleResponse,), @@ -55,6 +88,81 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._delete_google_chat_delegated_user_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/delegated-user", + "operation_id": "delete_google_chat_delegated_user", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "organization_binding_id": { + "required": True, + "openapi_types": (str,), + "attribute": "organization_binding_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["*/*"], + }, + api_client=api_client, + ) + + self._delete_google_chat_organization_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}", + "operation_id": "delete_google_chat_organization", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "organization_binding_id": { + "required": True, + "openapi_types": (str,), + "attribute": "organization_binding_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["*/*"], + }, + api_client=api_client, + ) + + self._delete_google_chat_target_audience_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/target-audiences/{target_audience_id}", + "operation_id": "delete_google_chat_target_audience", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "organization_binding_id": { + "required": True, + "openapi_types": (str,), + "attribute": "organization_binding_id", + "location": "path", + }, + "target_audience_id": { + "required": True, + "openapi_types": (str,), + "attribute": "target_audience_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["*/*"], + }, + api_client=api_client, + ) + self._delete_organization_handle_endpoint = _Endpoint( settings={ "response_type": None, @@ -84,6 +192,81 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._get_google_chat_delegated_user_endpoint = _Endpoint( + settings={ + "response_type": (GoogleChatDelegatedUserResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/delegated-user", + "operation_id": "get_google_chat_delegated_user", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "organization_binding_id": { + "required": True, + "openapi_types": (str,), + "attribute": "organization_binding_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._get_google_chat_organization_endpoint = _Endpoint( + settings={ + "response_type": (GoogleChatOrganizationResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}", + "operation_id": "get_google_chat_organization", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "organization_binding_id": { + "required": True, + "openapi_types": (str,), + "attribute": "organization_binding_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._get_google_chat_target_audience_endpoint = _Endpoint( + settings={ + "response_type": (GoogleChatTargetAudienceResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/target-audiences/{target_audience_id}", + "operation_id": "get_google_chat_target_audience", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "organization_binding_id": { + "required": True, + "openapi_types": (str,), + "attribute": "organization_binding_id", + "location": "path", + }, + "target_audience_id": { + "required": True, + "openapi_types": (str,), + "attribute": "target_audience_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._get_organization_handle_endpoint = _Endpoint( settings={ "response_type": (GoogleChatOrganizationHandleResponse,), @@ -142,6 +325,45 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._list_google_chat_organizations_endpoint = _Endpoint( + settings={ + "response_type": (GoogleChatOrganizationsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/google-chat/organizations", + "operation_id": "list_google_chat_organizations", + "http_method": "GET", + "version": "v2", + }, + params_map={}, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_google_chat_target_audiences_endpoint = _Endpoint( + settings={ + "response_type": (GoogleChatTargetAudiencesResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/target-audiences", + "operation_id": "list_google_chat_target_audiences", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "organization_binding_id": { + "required": True, + "openapi_types": (str,), + "attribute": "organization_binding_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._list_organization_handles_endpoint = _Endpoint( settings={ "response_type": (GoogleChatOrganizationHandlesResponse,), @@ -165,6 +387,38 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._update_google_chat_target_audience_endpoint = _Endpoint( + settings={ + "response_type": (GoogleChatTargetAudienceResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/target-audiences/{target_audience_id}", + "operation_id": "update_google_chat_target_audience", + "http_method": "PATCH", + "version": "v2", + }, + params_map={ + "organization_binding_id": { + "required": True, + "openapi_types": (str,), + "attribute": "organization_binding_id", + "location": "path", + }, + "target_audience_id": { + "required": True, + "openapi_types": (str,), + "attribute": "target_audience_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (GoogleChatTargetAudienceUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._update_organization_handle_endpoint = _Endpoint( settings={ "response_type": (GoogleChatOrganizationHandleResponse,), @@ -197,6 +451,28 @@ def __init__(self, api_client=None): api_client=api_client, ) + def create_google_chat_target_audience( + self, + organization_binding_id: str, + body: GoogleChatTargetAudienceCreateRequest, + ) -> GoogleChatTargetAudienceResponse: + """Create a target audience. + + Create a target audience for a Google Chat organization binding in the Datadog Google Chat integration. + + :param organization_binding_id: Your organization binding ID. + :type organization_binding_id: str + :param body: Target audience payload. + :type body: GoogleChatTargetAudienceCreateRequest + :rtype: GoogleChatTargetAudienceResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["organization_binding_id"] = organization_binding_id + + kwargs["body"] = body + + return self._create_google_chat_target_audience_endpoint.call_with_http_info(**kwargs) + def create_organization_handle( self, organization_binding_id: str, @@ -219,6 +495,62 @@ def create_organization_handle( return self._create_organization_handle_endpoint.call_with_http_info(**kwargs) + def delete_google_chat_delegated_user( + self, + organization_binding_id: str, + ) -> None: + """Delete the delegated user. + + Delete the delegated user for a Google Chat organization binding from the Datadog Google Chat integration. + + :param organization_binding_id: Your organization binding ID. + :type organization_binding_id: str + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["organization_binding_id"] = organization_binding_id + + return self._delete_google_chat_delegated_user_endpoint.call_with_http_info(**kwargs) + + def delete_google_chat_organization( + self, + organization_binding_id: str, + ) -> None: + """Delete a Google Chat organization binding. + + Delete a Google Chat organization binding from the Datadog Google Chat integration. + + :param organization_binding_id: Your organization binding ID. + :type organization_binding_id: str + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["organization_binding_id"] = organization_binding_id + + return self._delete_google_chat_organization_endpoint.call_with_http_info(**kwargs) + + def delete_google_chat_target_audience( + self, + organization_binding_id: str, + target_audience_id: str, + ) -> None: + """Delete a target audience. + + Delete a target audience from a Google Chat organization binding in the Datadog Google Chat integration. + + :param organization_binding_id: Your organization binding ID. + :type organization_binding_id: str + :param target_audience_id: Your target audience ID. + :type target_audience_id: str + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["organization_binding_id"] = organization_binding_id + + kwargs["target_audience_id"] = target_audience_id + + return self._delete_google_chat_target_audience_endpoint.call_with_http_info(**kwargs) + def delete_organization_handle( self, organization_binding_id: str, @@ -241,6 +573,62 @@ def delete_organization_handle( return self._delete_organization_handle_endpoint.call_with_http_info(**kwargs) + def get_google_chat_delegated_user( + self, + organization_binding_id: str, + ) -> GoogleChatDelegatedUserResponse: + """Get the delegated user. + + Get the delegated user for a Google Chat organization binding in the Datadog Google Chat integration. + + :param organization_binding_id: Your organization binding ID. + :type organization_binding_id: str + :rtype: GoogleChatDelegatedUserResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["organization_binding_id"] = organization_binding_id + + return self._get_google_chat_delegated_user_endpoint.call_with_http_info(**kwargs) + + def get_google_chat_organization( + self, + organization_binding_id: str, + ) -> GoogleChatOrganizationResponse: + """Get a Google Chat organization binding. + + Get a Google Chat organization binding from the Datadog Google Chat integration. + + :param organization_binding_id: Your organization binding ID. + :type organization_binding_id: str + :rtype: GoogleChatOrganizationResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["organization_binding_id"] = organization_binding_id + + return self._get_google_chat_organization_endpoint.call_with_http_info(**kwargs) + + def get_google_chat_target_audience( + self, + organization_binding_id: str, + target_audience_id: str, + ) -> GoogleChatTargetAudienceResponse: + """Get a target audience. + + Get a target audience for a Google Chat organization binding in the Datadog Google Chat integration. + + :param organization_binding_id: Your organization binding ID. + :type organization_binding_id: str + :param target_audience_id: Your target audience ID. + :type target_audience_id: str + :rtype: GoogleChatTargetAudienceResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["organization_binding_id"] = organization_binding_id + + kwargs["target_audience_id"] = target_audience_id + + return self._get_google_chat_target_audience_endpoint.call_with_http_info(**kwargs) + def get_organization_handle( self, organization_binding_id: str, @@ -285,6 +673,35 @@ def get_space_by_display_name( return self._get_space_by_display_name_endpoint.call_with_http_info(**kwargs) + def list_google_chat_organizations( + self, + ) -> GoogleChatOrganizationsResponse: + """Get all Google Chat organization bindings. + + Get a list of all Google Chat organization bindings in the Datadog Google Chat integration. + + :rtype: GoogleChatOrganizationsResponse + """ + kwargs: Dict[str, Any] = {} + return self._list_google_chat_organizations_endpoint.call_with_http_info(**kwargs) + + def list_google_chat_target_audiences( + self, + organization_binding_id: str, + ) -> GoogleChatTargetAudiencesResponse: + """Get all target audiences. + + Get a list of all target audiences for a Google Chat organization binding in the Datadog Google Chat integration. + + :param organization_binding_id: Your organization binding ID. + :type organization_binding_id: str + :rtype: GoogleChatTargetAudiencesResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["organization_binding_id"] = organization_binding_id + + return self._list_google_chat_target_audiences_endpoint.call_with_http_info(**kwargs) + def list_organization_handles( self, organization_binding_id: str, @@ -302,6 +719,33 @@ def list_organization_handles( return self._list_organization_handles_endpoint.call_with_http_info(**kwargs) + def update_google_chat_target_audience( + self, + organization_binding_id: str, + target_audience_id: str, + body: GoogleChatTargetAudienceUpdateRequest, + ) -> GoogleChatTargetAudienceResponse: + """Update a target audience. + + Update a target audience for a Google Chat organization binding in the Datadog Google Chat integration. + + :param organization_binding_id: Your organization binding ID. + :type organization_binding_id: str + :param target_audience_id: Your target audience ID. + :type target_audience_id: str + :param body: Target audience payload. + :type body: GoogleChatTargetAudienceUpdateRequest + :rtype: GoogleChatTargetAudienceResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["organization_binding_id"] = organization_binding_id + + kwargs["target_audience_id"] = target_audience_id + + kwargs["body"] = body + + return self._update_google_chat_target_audience_endpoint.call_with_http_info(**kwargs) + def update_organization_handle( self, organization_binding_id: str, diff --git a/src/datadog_api_client/v2/api/incident_services_api.py b/src/datadog_api_client/v2/api/incident_services_api.py deleted file mode 100644 index c1b3aecc79..0000000000 --- a/src/datadog_api_client/v2/api/incident_services_api.py +++ /dev/null @@ -1,287 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Any, Dict, Union -import warnings - -from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint -from datadog_api_client.configuration import Configuration -from datadog_api_client.model_utils import ( - UnsetType, - unset, -) -from datadog_api_client.v2.model.incident_services_response import IncidentServicesResponse -from datadog_api_client.v2.model.incident_related_object import IncidentRelatedObject -from datadog_api_client.v2.model.incident_service_response import IncidentServiceResponse -from datadog_api_client.v2.model.incident_service_create_request import IncidentServiceCreateRequest -from datadog_api_client.v2.model.incident_service_update_request import IncidentServiceUpdateRequest - - -class IncidentServicesApi: - """ - Create, update, delete, and retrieve services which can be associated with incidents. See the `Incident Management page `_ for more information. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient(Configuration()) - self.api_client = api_client - - self._create_incident_service_endpoint = _Endpoint( - settings={ - "response_type": (IncidentServiceResponse,), - "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], - "endpoint_path": "/api/v2/services", - "operation_id": "create_incident_service", - "http_method": "POST", - "version": "v2", - }, - params_map={ - "body": { - "required": True, - "openapi_types": (IncidentServiceCreateRequest,), - "location": "body", - }, - }, - headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, - api_client=api_client, - ) - - self._delete_incident_service_endpoint = _Endpoint( - settings={ - "response_type": None, - "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], - "endpoint_path": "/api/v2/services/{service_id}", - "operation_id": "delete_incident_service", - "http_method": "DELETE", - "version": "v2", - }, - params_map={ - "service_id": { - "required": True, - "openapi_types": (str,), - "attribute": "service_id", - "location": "path", - }, - }, - headers_map={ - "accept": ["*/*"], - }, - api_client=api_client, - ) - - self._get_incident_service_endpoint = _Endpoint( - settings={ - "response_type": (IncidentServiceResponse,), - "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], - "endpoint_path": "/api/v2/services/{service_id}", - "operation_id": "get_incident_service", - "http_method": "GET", - "version": "v2", - }, - params_map={ - "service_id": { - "required": True, - "openapi_types": (str,), - "attribute": "service_id", - "location": "path", - }, - "include": { - "openapi_types": (IncidentRelatedObject,), - "attribute": "include", - "location": "query", - }, - }, - headers_map={ - "accept": ["application/json"], - }, - api_client=api_client, - ) - - self._list_incident_services_endpoint = _Endpoint( - settings={ - "response_type": (IncidentServicesResponse,), - "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], - "endpoint_path": "/api/v2/services", - "operation_id": "list_incident_services", - "http_method": "GET", - "version": "v2", - }, - params_map={ - "include": { - "openapi_types": (IncidentRelatedObject,), - "attribute": "include", - "location": "query", - }, - "page_size": { - "openapi_types": (int,), - "attribute": "page[size]", - "location": "query", - }, - "page_offset": { - "openapi_types": (int,), - "attribute": "page[offset]", - "location": "query", - }, - "filter": { - "openapi_types": (str,), - "attribute": "filter", - "location": "query", - }, - }, - headers_map={ - "accept": ["application/json"], - }, - api_client=api_client, - ) - - self._update_incident_service_endpoint = _Endpoint( - settings={ - "response_type": (IncidentServiceResponse,), - "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], - "endpoint_path": "/api/v2/services/{service_id}", - "operation_id": "update_incident_service", - "http_method": "PATCH", - "version": "v2", - }, - params_map={ - "service_id": { - "required": True, - "openapi_types": (str,), - "attribute": "service_id", - "location": "path", - }, - "body": { - "required": True, - "openapi_types": (IncidentServiceUpdateRequest,), - "location": "body", - }, - }, - headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, - api_client=api_client, - ) - - def create_incident_service( - self, - body: IncidentServiceCreateRequest, - ) -> IncidentServiceResponse: - """Create a new incident service. **Deprecated**. - - Creates a new incident service. - - :param body: Incident Service Payload. - :type body: IncidentServiceCreateRequest - :rtype: IncidentServiceResponse - """ - kwargs: Dict[str, Any] = {} - kwargs["body"] = body - - warnings.warn("create_incident_service is deprecated", DeprecationWarning, stacklevel=2) - return self._create_incident_service_endpoint.call_with_http_info(**kwargs) - - def delete_incident_service( - self, - service_id: str, - ) -> None: - """Delete an existing incident service. **Deprecated**. - - Deletes an existing incident service. - - :param service_id: The ID of the incident service. - :type service_id: str - :rtype: None - """ - kwargs: Dict[str, Any] = {} - kwargs["service_id"] = service_id - - warnings.warn("delete_incident_service is deprecated", DeprecationWarning, stacklevel=2) - return self._delete_incident_service_endpoint.call_with_http_info(**kwargs) - - def get_incident_service( - self, - service_id: str, - *, - include: Union[IncidentRelatedObject, UnsetType] = unset, - ) -> IncidentServiceResponse: - """Get details of an incident service. **Deprecated**. - - Get details of an incident service. If the ``include[users]`` query parameter is provided, - the included attribute will contain the users related to these incident services. - - :param service_id: The ID of the incident service. - :type service_id: str - :param include: Specifies which types of related objects should be included in the response. - :type include: IncidentRelatedObject, optional - :rtype: IncidentServiceResponse - """ - kwargs: Dict[str, Any] = {} - kwargs["service_id"] = service_id - - if include is not unset: - kwargs["include"] = include - - warnings.warn("get_incident_service is deprecated", DeprecationWarning, stacklevel=2) - return self._get_incident_service_endpoint.call_with_http_info(**kwargs) - - def list_incident_services( - self, - *, - include: Union[IncidentRelatedObject, UnsetType] = unset, - page_size: Union[int, UnsetType] = unset, - page_offset: Union[int, UnsetType] = unset, - filter: Union[str, UnsetType] = unset, - ) -> IncidentServicesResponse: - """Get a list of all incident services. **Deprecated**. - - Get all incident services uploaded for the requesting user's organization. If the ``include[users]`` query parameter is provided, the included attribute will contain the users related to these incident services. - - :param include: Specifies which types of related objects should be included in the response. - :type include: IncidentRelatedObject, optional - :param page_size: Size for a given page. The maximum allowed value is 100. - :type page_size: int, optional - :param page_offset: Specific offset to use as the beginning of the returned page. - :type page_offset: int, optional - :param filter: A search query that filters services by name. - :type filter: str, optional - :rtype: IncidentServicesResponse - """ - kwargs: Dict[str, Any] = {} - if include is not unset: - kwargs["include"] = include - - if page_size is not unset: - kwargs["page_size"] = page_size - - if page_offset is not unset: - kwargs["page_offset"] = page_offset - - if filter is not unset: - kwargs["filter"] = filter - - warnings.warn("list_incident_services is deprecated", DeprecationWarning, stacklevel=2) - return self._list_incident_services_endpoint.call_with_http_info(**kwargs) - - def update_incident_service( - self, - service_id: str, - body: IncidentServiceUpdateRequest, - ) -> IncidentServiceResponse: - """Update an existing incident service. **Deprecated**. - - Updates an existing incident service. Only provide the attributes which should be updated as this request is a partial update. - - :param service_id: The ID of the incident service. - :type service_id: str - :param body: Incident Service Payload. - :type body: IncidentServiceUpdateRequest - :rtype: IncidentServiceResponse - """ - kwargs: Dict[str, Any] = {} - kwargs["service_id"] = service_id - - kwargs["body"] = body - - warnings.warn("update_incident_service is deprecated", DeprecationWarning, stacklevel=2) - return self._update_incident_service_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/key_management_api.py b/src/datadog_api_client/v2/api/key_management_api.py index c06731c939..b2d51ccc80 100644 --- a/src/datadog_api_client/v2/api/key_management_api.py +++ b/src/datadog_api_client/v2/api/key_management_api.py @@ -390,6 +390,11 @@ def __init__(self, api_client=None): "attribute": "filter[created_at][end]", "location": "query", }, + "filter_owned_by": { + "openapi_types": (str,), + "attribute": "filter[owned_by]", + "location": "query", + }, "include": { "openapi_types": (str,), "attribute": "include", @@ -928,6 +933,7 @@ def list_application_keys( filter: Union[str, UnsetType] = unset, filter_created_at_start: Union[str, UnsetType] = unset, filter_created_at_end: Union[str, UnsetType] = unset, + filter_owned_by: Union[str, UnsetType] = unset, include: Union[str, UnsetType] = unset, ) -> ListApplicationKeysResponse: """Get all application keys. @@ -948,6 +954,8 @@ def list_application_keys( :type filter_created_at_start: str, optional :param filter_created_at_end: Only include application keys created on or before the specified date. :type filter_created_at_end: str, optional + :param filter_owned_by: Filter application keys by owner ID. + :type filter_owned_by: str, optional :param include: Resource path for related resources to include in the response. Only ``owned_by`` is supported. :type include: str, optional :rtype: ListApplicationKeysResponse @@ -971,6 +979,9 @@ def list_application_keys( if filter_created_at_end is not unset: kwargs["filter_created_at_end"] = filter_created_at_end + if filter_owned_by is not unset: + kwargs["filter_owned_by"] = filter_owned_by + if include is not unset: kwargs["include"] = include diff --git a/src/datadog_api_client/v2/api/llm_observability_api.py b/src/datadog_api_client/v2/api/llm_observability_api.py index bd1a5071f3..8286556462 100644 --- a/src/datadog_api_client/v2/api/llm_observability_api.py +++ b/src/datadog_api_client/v2/api/llm_observability_api.py @@ -25,6 +25,10 @@ from datadog_api_client.v2.model.llm_obs_annotation_queue_request import LLMObsAnnotationQueueRequest from datadog_api_client.v2.model.llm_obs_annotation_queue_update_request import LLMObsAnnotationQueueUpdateRequest from datadog_api_client.v2.model.llm_obs_annotated_interactions_response import LLMObsAnnotatedInteractionsResponse +from datadog_api_client.v2.model.llm_obs_annotations_response import LLMObsAnnotationsResponse +from datadog_api_client.v2.model.llm_obs_annotations_request import LLMObsAnnotationsRequest +from datadog_api_client.v2.model.llm_obs_delete_annotations_response import LLMObsDeleteAnnotationsResponse +from datadog_api_client.v2.model.llm_obs_delete_annotations_request import LLMObsDeleteAnnotationsRequest from datadog_api_client.v2.model.llm_obs_annotation_queue_interactions_response import ( LLMObsAnnotationQueueInteractionsResponse, ) @@ -71,6 +75,18 @@ from datadog_api_client.v2.model.llm_obs_project_update_request import LLMObsProjectUpdateRequest from datadog_api_client.v2.model.llm_obs_spans_response import LLMObsSpansResponse from datadog_api_client.v2.model.llm_obs_search_spans_request import LLMObsSearchSpansRequest +from datadog_api_client.v2.model.llm_obs_patterns_clustered_points_response import LLMObsPatternsClusteredPointsResponse +from datadog_api_client.v2.model.llm_obs_patterns_configs_response import LLMObsPatternsConfigsResponse +from datadog_api_client.v2.model.llm_obs_patterns_config_response import LLMObsPatternsConfigResponse +from datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request import LLMObsPatternsConfigUpsertRequest +from datadog_api_client.v2.model.llm_obs_patterns_runs_response import LLMObsPatternsRunsResponse +from datadog_api_client.v2.model.llm_obs_patterns_trigger_response import LLMObsPatternsTriggerResponse +from datadog_api_client.v2.model.llm_obs_patterns_trigger_request import LLMObsPatternsTriggerRequest +from datadog_api_client.v2.model.llm_obs_patterns_run_status_response import LLMObsPatternsRunStatusResponse +from datadog_api_client.v2.model.llm_obs_patterns_topics_response import LLMObsPatternsTopicsResponse +from datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_response import ( + LLMObsPatternsTopicsWithClusteredPointsResponse, +) from datadog_api_client.v2.model.llm_obs_datasets_response import LLMObsDatasetsResponse from datadog_api_client.v2.model.llm_obs_dataset_response import LLMObsDatasetResponse from datadog_api_client.v2.model.llm_obs_dataset_request import LLMObsDatasetRequest @@ -435,6 +451,32 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._delete_llm_obs_annotations_endpoint = _Endpoint( + settings={ + "response_type": (LLMObsDeleteAnnotationsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/llm-obs/v1/annotation-queues/{queue_id}/annotations/delete", + "operation_id": "delete_llm_obs_annotations", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "queue_id": { + "required": True, + "openapi_types": (str,), + "attribute": "queue_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (LLMObsDeleteAnnotationsRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._delete_llm_obs_custom_eval_config_endpoint = _Endpoint( settings={ "response_type": None, @@ -556,6 +598,29 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._delete_llm_obs_patterns_config_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-configs/{config_id}", + "operation_id": "delete_llm_obs_patterns_config", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "config_id": { + "required": True, + "openapi_types": (str,), + "attribute": "config_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["*/*"], + }, + api_client=api_client, + ) + self._delete_llm_obs_projects_endpoint = _Endpoint( settings={ "response_type": None, @@ -758,6 +823,45 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._get_llm_obs_patterns_config_endpoint = _Endpoint( + settings={ + "response_type": (LLMObsPatternsConfigResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-configs/latest", + "operation_id": "get_llm_obs_patterns_config", + "http_method": "GET", + "version": "v2", + }, + params_map={}, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._get_llm_obs_patterns_run_status_endpoint = _Endpoint( + settings={ + "response_type": (LLMObsPatternsRunStatusResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-runs/status", + "operation_id": "get_llm_obs_patterns_run_status", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "config_id": { + "required": True, + "openapi_types": (str,), + "attribute": "config_id", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._list_llm_obs_annotation_queues_endpoint = _Endpoint( settings={ "response_type": (LLMObsAnnotationQueuesResponse,), @@ -1113,6 +1217,139 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._list_llm_obs_patterns_clustered_points_endpoint = _Endpoint( + settings={ + "response_type": (LLMObsPatternsClusteredPointsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-clustered-points", + "operation_id": "list_llm_obs_patterns_clustered_points", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "topic_id": { + "required": True, + "openapi_types": (str,), + "attribute": "topic_id", + "location": "query", + }, + "page_size": { + "openapi_types": (int,), + "attribute": "page_size", + "location": "query", + }, + "page_token": { + "openapi_types": (str,), + "attribute": "page_token", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_llm_obs_patterns_configs_endpoint = _Endpoint( + settings={ + "response_type": (LLMObsPatternsConfigsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-configs", + "operation_id": "list_llm_obs_patterns_configs", + "http_method": "GET", + "version": "v2", + }, + params_map={}, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_llm_obs_patterns_runs_endpoint = _Endpoint( + settings={ + "response_type": (LLMObsPatternsRunsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-runs", + "operation_id": "list_llm_obs_patterns_runs", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "config_id": { + "required": True, + "openapi_types": (str,), + "attribute": "config_id", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_llm_obs_patterns_topics_endpoint = _Endpoint( + settings={ + "response_type": (LLMObsPatternsTopicsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-topics", + "operation_id": "list_llm_obs_patterns_topics", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "config_id": { + "required": True, + "openapi_types": (str,), + "attribute": "config_id", + "location": "query", + }, + "run_id": { + "openapi_types": (str,), + "attribute": "run_id", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_llm_obs_patterns_topics_with_clustered_points_endpoint = _Endpoint( + settings={ + "response_type": (LLMObsPatternsTopicsWithClusteredPointsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-topics/with-cluster-points", + "operation_id": "list_llm_obs_patterns_topics_with_clustered_points", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "config_id": { + "required": True, + "openapi_types": (str,), + "attribute": "config_id", + "location": "query", + }, + "run_id": { + "openapi_types": (str,), + "attribute": "run_id", + "location": "query", + }, + "include_metrics": { + "openapi_types": (bool,), + "attribute": "include_metrics", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._list_llm_obs_projects_endpoint = _Endpoint( settings={ "response_type": (LLMObsProjectsResponse,), @@ -1348,6 +1585,26 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._trigger_llm_obs_patterns_endpoint = _Endpoint( + settings={ + "response_type": (LLMObsPatternsTriggerResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-runs", + "operation_id": "trigger_llm_obs_patterns", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (LLMObsPatternsTriggerRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._unlock_llm_obs_dataset_draft_state_endpoint = _Endpoint( settings={ "response_type": None, @@ -1624,6 +1881,52 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._upsert_llm_obs_annotations_endpoint = _Endpoint( + settings={ + "response_type": (LLMObsAnnotationsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/llm-obs/v1/annotation-queues/{queue_id}/annotations", + "operation_id": "upsert_llm_obs_annotations", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "queue_id": { + "required": True, + "openapi_types": (str,), + "attribute": "queue_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (LLMObsAnnotationsRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._upsert_llm_obs_patterns_config_endpoint = _Endpoint( + settings={ + "response_type": (LLMObsPatternsConfigResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-configs", + "operation_id": "upsert_llm_obs_patterns_config", + "http_method": "PUT", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (LLMObsPatternsConfigUpsertRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + def aggregate_llm_obs_experimentation( self, body: LLMObsExperimentationAnalyticsRequest, @@ -1920,6 +2223,28 @@ def delete_llm_obs_annotation_queue_interactions( return self._delete_llm_obs_annotation_queue_interactions_endpoint.call_with_http_info(**kwargs) + def delete_llm_obs_annotations( + self, + queue_id: str, + body: LLMObsDeleteAnnotationsRequest, + ) -> LLMObsDeleteAnnotationsResponse: + """Delete annotations. + + Delete one or more annotations from an annotation queue. + + :param queue_id: The ID of the LLM Observability annotation queue. + :type queue_id: str + :param body: Delete annotations payload. + :type body: LLMObsDeleteAnnotationsRequest + :rtype: LLMObsDeleteAnnotationsResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["queue_id"] = queue_id + + kwargs["body"] = body + + return self._delete_llm_obs_annotations_endpoint.call_with_http_info(**kwargs) + def delete_llm_obs_custom_eval_config( self, eval_name: str, @@ -2020,6 +2345,23 @@ def delete_llm_obs_experiments( return self._delete_llm_obs_experiments_endpoint.call_with_http_info(**kwargs) + def delete_llm_obs_patterns_config( + self, + config_id: str, + ) -> None: + """Delete a patterns configuration. + + Delete a patterns configuration by its ID. + + :param config_id: The ID of the patterns configuration. + :type config_id: str + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["config_id"] = config_id + + return self._delete_llm_obs_patterns_config_endpoint.call_with_http_info(**kwargs) + def delete_llm_obs_projects( self, body: LLMObsDeleteProjectsRequest, @@ -2098,7 +2440,8 @@ def get_llm_obs_annotated_interactions_by_trace_i_ds( ) -> LLMObsAnnotatedInteractionsByTraceResponse: """Get annotated interactions by content IDs. - Returns annotated interactions across all annotation queues for the given content IDs. Results include queue metadata (ID and name) for each interaction. + Returns annotated interactions across all annotation queues for the given content IDs. + Results include queue metadata (ID and name) for each interaction. :param content_ids: One or more content IDs to retrieve annotated interactions for. At least one is required. :type content_ids: [str] @@ -2175,6 +2518,36 @@ def get_llm_obs_dataset_draft_state( return self._get_llm_obs_dataset_draft_state_endpoint.call_with_http_info(**kwargs) + def get_llm_obs_patterns_config( + self, + ) -> LLMObsPatternsConfigResponse: + """Get a patterns configuration. + + Retrieve the patterns configuration for the organization. + + :rtype: LLMObsPatternsConfigResponse + """ + kwargs: Dict[str, Any] = {} + return self._get_llm_obs_patterns_config_endpoint.call_with_http_info(**kwargs) + + def get_llm_obs_patterns_run_status( + self, + config_id: str, + ) -> LLMObsPatternsRunStatusResponse: + """Get patterns run status. + + Retrieve the status and step-by-step progress of the current or most recent + patterns run for a configuration. + + :param config_id: The ID of the patterns configuration. + :type config_id: str + :rtype: LLMObsPatternsRunStatusResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["config_id"] = config_id + + return self._get_llm_obs_patterns_run_status_endpoint.call_with_http_info(**kwargs) + def list_llm_obs_annotation_queues( self, *, @@ -2499,6 +2872,124 @@ def list_llm_obs_integration_models( return self._list_llm_obs_integration_models_endpoint.call_with_http_info(**kwargs) + def list_llm_obs_patterns_clustered_points( + self, + topic_id: str, + *, + page_size: Union[int, UnsetType] = unset, + page_token: Union[str, UnsetType] = unset, + ) -> LLMObsPatternsClusteredPointsResponse: + """List patterns clustered points. + + List the data points grouped into a topic. For a parent topic, points from all + of its leaf topics are returned. + + :param topic_id: The ID of the topic to retrieve clustered points for. + :type topic_id: str + :param page_size: Maximum number of clustered points to return per page. + :type page_size: int, optional + :param page_token: Pagination token to retrieve the next page of clustered points. + :type page_token: str, optional + :rtype: LLMObsPatternsClusteredPointsResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["topic_id"] = topic_id + + if page_size is not unset: + kwargs["page_size"] = page_size + + if page_token is not unset: + kwargs["page_token"] = page_token + + return self._list_llm_obs_patterns_clustered_points_endpoint.call_with_http_info(**kwargs) + + def list_llm_obs_patterns_configs( + self, + ) -> LLMObsPatternsConfigsResponse: + """List patterns configurations. + + List all patterns configurations for the organization. + + :rtype: LLMObsPatternsConfigsResponse + """ + kwargs: Dict[str, Any] = {} + return self._list_llm_obs_patterns_configs_endpoint.call_with_http_info(**kwargs) + + def list_llm_obs_patterns_runs( + self, + config_id: str, + ) -> LLMObsPatternsRunsResponse: + """List patterns runs. + + List the completed patterns runs for a configuration. + + :param config_id: The ID of the patterns configuration. + :type config_id: str + :rtype: LLMObsPatternsRunsResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["config_id"] = config_id + + return self._list_llm_obs_patterns_runs_endpoint.call_with_http_info(**kwargs) + + def list_llm_obs_patterns_topics( + self, + config_id: str, + *, + run_id: Union[str, UnsetType] = unset, + ) -> LLMObsPatternsTopicsResponse: + """List patterns topics. + + List the topics discovered by a patterns run. When no run is specified, + the most recent completed run is used. + + :param config_id: The ID of the patterns configuration. + :type config_id: str + :param run_id: The ID of a specific patterns run. Defaults to the most recent completed run. + :type run_id: str, optional + :rtype: LLMObsPatternsTopicsResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["config_id"] = config_id + + if run_id is not unset: + kwargs["run_id"] = run_id + + return self._list_llm_obs_patterns_topics_endpoint.call_with_http_info(**kwargs) + + def list_llm_obs_patterns_topics_with_clustered_points( + self, + config_id: str, + *, + run_id: Union[str, UnsetType] = unset, + include_metrics: Union[bool, UnsetType] = unset, + ) -> LLMObsPatternsTopicsWithClusteredPointsResponse: + """List patterns topics with clustered points. + + List the topics discovered by a patterns run, with the clustered points attached + inline to each leaf topic. When no run is specified, the most recent completed + run is used. + + :param config_id: The ID of the patterns configuration. + :type config_id: str + :param run_id: The ID of a specific patterns run. Defaults to the most recent completed run. + :type run_id: str, optional + :param include_metrics: When true, enrich each clustered point with span metrics such as status, + duration, token counts, estimated cost, and evaluations. + :type include_metrics: bool, optional + :rtype: LLMObsPatternsTopicsWithClusteredPointsResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["config_id"] = config_id + + if run_id is not unset: + kwargs["run_id"] = run_id + + if include_metrics is not unset: + kwargs["include_metrics"] = include_metrics + + return self._list_llm_obs_patterns_topics_with_clustered_points_endpoint.call_with_http_info(**kwargs) + def list_llm_obs_projects( self, *, @@ -2728,6 +3219,23 @@ def simple_search_llm_obs_experimentation( return self._simple_search_llm_obs_experimentation_endpoint.call_with_http_info(**kwargs) + def trigger_llm_obs_patterns( + self, + body: LLMObsPatternsTriggerRequest, + ) -> LLMObsPatternsTriggerResponse: + """Trigger a patterns run. + + Start a patterns run for a given configuration. The run executes asynchronously. + + :param body: Trigger patterns payload. + :type body: LLMObsPatternsTriggerRequest + :rtype: LLMObsPatternsTriggerResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._trigger_llm_obs_patterns_endpoint.call_with_http_info(**kwargs) + def unlock_llm_obs_dataset_draft_state( self, project_id: str, @@ -2976,3 +3484,45 @@ def upload_llm_obs_dataset_records_file( kwargs["file"] = file return self._upload_llm_obs_dataset_records_file_endpoint.call_with_http_info(**kwargs) + + def upsert_llm_obs_annotations( + self, + queue_id: str, + body: LLMObsAnnotationsRequest, + ) -> LLMObsAnnotationsResponse: + """Create or update annotations. + + Create or update annotations on interactions in a queue. Each annotation is matched + by ``interaction_id`` and the requesting user's identity. + Results and errors in the response are linked to request items by ``interaction_id``. + Errors for individual items are returned in the ``errors`` field without blocking the rest of the batch. + + :param queue_id: The ID of the LLM Observability annotation queue. + :type queue_id: str + :param body: Payload for creating or updating annotations. + :type body: LLMObsAnnotationsRequest + :rtype: LLMObsAnnotationsResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["queue_id"] = queue_id + + kwargs["body"] = body + + return self._upsert_llm_obs_annotations_endpoint.call_with_http_info(**kwargs) + + def upsert_llm_obs_patterns_config( + self, + body: LLMObsPatternsConfigUpsertRequest, + ) -> LLMObsPatternsConfigResponse: + """Create or update a patterns configuration. + + Create a new patterns configuration, or update an existing one when a configuration ID is provided. + + :param body: Patterns configuration payload. + :type body: LLMObsPatternsConfigUpsertRequest + :rtype: LLMObsPatternsConfigResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._upsert_llm_obs_patterns_config_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/metrics_api.py b/src/datadog_api_client/v2/api/metrics_api.py index b66ab4503f..82dbb511b4 100644 --- a/src/datadog_api_client/v2/api/metrics_api.py +++ b/src/datadog_api_client/v2/api/metrics_api.py @@ -5,6 +5,7 @@ import collections from typing import Any, Dict, Union +import warnings from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint from datadog_api_client.configuration import Configuration @@ -24,6 +25,11 @@ from datadog_api_client.v2.model.metric_bulk_tag_config_response import MetricBulkTagConfigResponse from datadog_api_client.v2.model.metric_bulk_tag_config_delete_request import MetricBulkTagConfigDeleteRequest from datadog_api_client.v2.model.metric_bulk_tag_config_create_request import MetricBulkTagConfigCreateRequest +from datadog_api_client.v2.model.tag_indexing_rules_response import TagIndexingRulesResponse +from datadog_api_client.v2.model.tag_indexing_rule_response import TagIndexingRuleResponse +from datadog_api_client.v2.model.tag_indexing_rule_create_request import TagIndexingRuleCreateRequest +from datadog_api_client.v2.model.tag_indexing_rule_order_request import TagIndexingRuleOrderRequest +from datadog_api_client.v2.model.tag_indexing_rule_update_request import TagIndexingRuleUpdateRequest from datadog_api_client.v2.model.metric_suggested_tags_and_aggregations_response import ( MetricSuggestedTagsAndAggregationsResponse, ) @@ -31,6 +37,8 @@ from datadog_api_client.v2.model.metric_assets_response import MetricAssetsResponse from datadog_api_client.v2.model.metric_estimate_response import MetricEstimateResponse from datadog_api_client.v2.model.metric_tag_cardinalities_response import MetricTagCardinalitiesResponse +from datadog_api_client.v2.model.tag_indexing_rule_exemption_response import TagIndexingRuleExemptionResponse +from datadog_api_client.v2.model.tag_indexing_rule_exemption_create_request import TagIndexingRuleExemptionCreateRequest from datadog_api_client.v2.model.metric_tag_configuration_response import MetricTagConfigurationResponse from datadog_api_client.v2.model.metric_tag_configuration_update_request import MetricTagConfigurationUpdateRequest from datadog_api_client.v2.model.metric_tag_configuration_create_request import MetricTagConfigurationCreateRequest @@ -114,6 +122,52 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._create_tag_indexing_rule_endpoint = _Endpoint( + settings={ + "response_type": (TagIndexingRuleResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/metrics/tag-indexing-rules", + "operation_id": "create_tag_indexing_rule", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (TagIndexingRuleCreateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._create_tag_indexing_rule_exemption_endpoint = _Endpoint( + settings={ + "response_type": (TagIndexingRuleExemptionResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/metrics/{metric_name}/tag-indexing-rule-exemptions", + "operation_id": "create_tag_indexing_rule_exemption", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "metric_name": { + "required": True, + "openapi_types": (str,), + "attribute": "metric_name", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (TagIndexingRuleExemptionCreateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._delete_bulk_tags_metrics_configuration_endpoint = _Endpoint( settings={ "response_type": (MetricBulkTagConfigResponse,), @@ -157,6 +211,52 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._delete_tag_indexing_rule_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/metrics/tag-indexing-rules/{id}", + "operation_id": "delete_tag_indexing_rule", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "id": { + "required": True, + "openapi_types": (str,), + "attribute": "id", + "location": "path", + }, + }, + headers_map={ + "accept": ["*/*"], + }, + api_client=api_client, + ) + + self._delete_tag_indexing_rule_exemption_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/metrics/{metric_name}/tag-indexing-rule-exemptions", + "operation_id": "delete_tag_indexing_rule_exemption", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "metric_name": { + "required": True, + "openapi_types": (str,), + "attribute": "metric_name", + "location": "path", + }, + }, + headers_map={ + "accept": ["*/*"], + }, + api_client=api_client, + ) + self._estimate_metrics_output_series_endpoint = _Endpoint( settings={ "response_type": (MetricEstimateResponse,), @@ -238,6 +338,52 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._get_tag_indexing_rule_endpoint = _Endpoint( + settings={ + "response_type": (TagIndexingRuleResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/metrics/tag-indexing-rules/{id}", + "operation_id": "get_tag_indexing_rule", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "id": { + "required": True, + "openapi_types": (str,), + "attribute": "id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._get_tag_indexing_rule_exemption_endpoint = _Endpoint( + settings={ + "response_type": (TagIndexingRuleExemptionResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/metrics/{metric_name}/tag-indexing-rule-exemptions", + "operation_id": "get_tag_indexing_rule_exemption", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "metric_name": { + "required": True, + "openapi_types": (str,), + "attribute": "metric_name", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._list_active_metric_configurations_endpoint = _Endpoint( settings={ "response_type": (MetricSuggestedTagsAndAggregationsResponse,), @@ -396,6 +542,61 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._list_tag_indexing_rules_endpoint = _Endpoint( + settings={ + "response_type": (TagIndexingRulesResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/metrics/tag-indexing-rules", + "operation_id": "list_tag_indexing_rules", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "page_limit": { + "openapi_types": (int,), + "attribute": "page[limit]", + "location": "query", + }, + "page_offset": { + "openapi_types": (int,), + "attribute": "page[offset]", + "location": "query", + }, + "search": { + "openapi_types": (str,), + "attribute": "search", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_tag_indexing_rules_for_metric_endpoint = _Endpoint( + settings={ + "response_type": (TagIndexingRulesResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/metrics/{metric_name}/tag-indexing-rules", + "operation_id": "list_tag_indexing_rules_for_metric", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "metric_name": { + "required": True, + "openapi_types": (str,), + "attribute": "metric_name", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._list_tags_by_metric_name_endpoint = _Endpoint( settings={ "response_type": (MetricAllTagsResponse,), @@ -521,6 +722,26 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._reorder_tag_indexing_rules_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/metrics/tag-indexing-rules/order", + "operation_id": "reorder_tag_indexing_rules", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (TagIndexingRuleOrderRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["*/*"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._submit_metrics_endpoint = _Endpoint( settings={ "response_type": (IntakePayloadAccepted,), @@ -572,11 +793,39 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._update_tag_indexing_rule_endpoint = _Endpoint( + settings={ + "response_type": (TagIndexingRuleResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/metrics/tag-indexing-rules/{id}", + "operation_id": "update_tag_indexing_rule", + "http_method": "PUT", + "version": "v2", + }, + params_map={ + "id": { + "required": True, + "openapi_types": (str,), + "attribute": "id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (TagIndexingRuleUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + def create_bulk_tags_metrics_configuration( self, body: MetricBulkTagConfigCreateRequest, ) -> MetricBulkTagConfigResponse: - """Configure tags for multiple metrics. + """Configure tags for multiple metrics. **Deprecated**. + + **Note** : This endpoint is deprecated. Use `Tag Indexing Rules `_ ( ``POST /api/v2/metrics/tag-indexing-rules`` ) instead. Create and define a list of queryable tag keys for a set of existing count, gauge, rate, and distribution metrics. Metrics are selected by passing a metric name prefix. Use the Delete method of this API path to remove tag configurations. @@ -592,6 +841,7 @@ def create_bulk_tags_metrics_configuration( kwargs: Dict[str, Any] = {} kwargs["body"] = body + warnings.warn("create_bulk_tags_metrics_configuration is deprecated", DeprecationWarning, stacklevel=2) return self._create_bulk_tags_metrics_configuration_endpoint.call_with_http_info(**kwargs) def create_tag_configuration( @@ -619,11 +869,53 @@ def create_tag_configuration( return self._create_tag_configuration_endpoint.call_with_http_info(**kwargs) + def create_tag_indexing_rule( + self, + body: TagIndexingRuleCreateRequest, + ) -> TagIndexingRuleResponse: + """Create a tag indexing rule. + + Create a tag indexing rule for the org. ``rule_order`` is assigned server-side as max+1 + among existing rules; use the reorder endpoint to change the evaluation order. + Requires the ``Manage Tags for Metrics`` permission. + + :type body: TagIndexingRuleCreateRequest + :rtype: TagIndexingRuleResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._create_tag_indexing_rule_endpoint.call_with_http_info(**kwargs) + + def create_tag_indexing_rule_exemption( + self, + metric_name: str, + body: TagIndexingRuleExemptionCreateRequest, + ) -> TagIndexingRuleExemptionResponse: + """Create a tag indexing rule exemption. + + Exempt a metric from all tag indexing rules. The response includes the created + exemption resource. Requires the ``Manage Tags for Metrics`` permission. + + :param metric_name: The name of the metric. + :type metric_name: str + :type body: TagIndexingRuleExemptionCreateRequest + :rtype: TagIndexingRuleExemptionResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["metric_name"] = metric_name + + kwargs["body"] = body + + return self._create_tag_indexing_rule_exemption_endpoint.call_with_http_info(**kwargs) + def delete_bulk_tags_metrics_configuration( self, body: MetricBulkTagConfigDeleteRequest, ) -> MetricBulkTagConfigResponse: - """Delete tags for multiple metrics. + """Delete tags for multiple metrics. **Deprecated**. + + **Note** : This endpoint is deprecated. Use `Tag Indexing Rules `_ ( ``POST /api/v2/metrics/tag-indexing-rules`` ) instead. Delete all custom lists of queryable tag keys for a set of existing count, gauge, rate, and distribution metrics. Metrics are selected by passing a metric name prefix. @@ -636,6 +928,7 @@ def delete_bulk_tags_metrics_configuration( kwargs: Dict[str, Any] = {} kwargs["body"] = body + warnings.warn("delete_bulk_tags_metrics_configuration is deprecated", DeprecationWarning, stacklevel=2) return self._delete_bulk_tags_metrics_configuration_endpoint.call_with_http_info(**kwargs) def delete_tag_configuration( @@ -657,6 +950,44 @@ def delete_tag_configuration( return self._delete_tag_configuration_endpoint.call_with_http_info(**kwargs) + def delete_tag_indexing_rule( + self, + id: str, + ) -> None: + """Delete a tag indexing rule. + + Soft-delete a tag indexing rule. Idempotent: returns 204 whether the rule existed or was already deleted. + Remaining rules in the org are automatically re-sequenced to keep ``rule_order`` dense and 1-based. + Requires the ``Manage Tags for Metrics`` permission. + + :param id: ID of the tag indexing rule. + :type id: str + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["id"] = id + + return self._delete_tag_indexing_rule_endpoint.call_with_http_info(**kwargs) + + def delete_tag_indexing_rule_exemption( + self, + metric_name: str, + ) -> None: + """Delete a tag indexing rule exemption. + + Remove a metric's exemption from tag indexing rules. Idempotent: returns 204 whether or not + an exemption existed. Any associated legacy tag configuration record is also removed. + Requires the ``Manage Tags for Metrics`` permission. + + :param metric_name: The name of the metric. + :type metric_name: str + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["metric_name"] = metric_name + + return self._delete_tag_indexing_rule_exemption_endpoint.call_with_http_info(**kwargs) + def estimate_metrics_output_series( self, metric_name: str, @@ -722,6 +1053,43 @@ def get_metric_tag_cardinality_details( return self._get_metric_tag_cardinality_details_endpoint.call_with_http_info(**kwargs) + def get_tag_indexing_rule( + self, + id: str, + ) -> TagIndexingRuleResponse: + """Get a tag indexing rule. + + Get a single tag indexing rule by its UUID. + + :param id: ID of the tag indexing rule. + :type id: str + :rtype: TagIndexingRuleResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["id"] = id + + return self._get_tag_indexing_rule_endpoint.call_with_http_info(**kwargs) + + def get_tag_indexing_rule_exemption( + self, + metric_name: str, + ) -> TagIndexingRuleExemptionResponse: + """Get a tag indexing rule exemption. + + Returns why a metric is excluded from tag indexing rules. + Returns 200 with ``kind=exemption`` when an explicit exemption exists, 200 with + ``kind=legacy_tag_configuration`` when the metric has a legacy tag configuration acting as an + implicit exclusion, or 404 when neither applies. + + :param metric_name: The name of the metric. + :type metric_name: str + :rtype: TagIndexingRuleExemptionResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["metric_name"] = metric_name + + return self._get_tag_indexing_rule_exemption_endpoint.call_with_http_info(**kwargs) + def list_active_metric_configurations( self, metric_name: str, @@ -954,6 +1322,55 @@ def list_tag_configurations_with_pagination( } return endpoint.call_with_http_info_paginated(pagination) + def list_tag_indexing_rules( + self, + *, + page_limit: Union[int, UnsetType] = unset, + page_offset: Union[int, UnsetType] = unset, + search: Union[str, UnsetType] = unset, + ) -> TagIndexingRulesResponse: + """List tag indexing rules. + + List tag indexing rules for an org, sorted by ``rule_order`` , with offset/limit pagination. + + :param page_limit: Page size (1–1000, default 100). + :type page_limit: int, optional + :param page_offset: Page offset from the start of the list (default 0). + :type page_offset: int, optional + :param search: Substring filter on rule name. + :type search: str, optional + :rtype: TagIndexingRulesResponse + """ + kwargs: Dict[str, Any] = {} + if page_limit is not unset: + kwargs["page_limit"] = page_limit + + if page_offset is not unset: + kwargs["page_offset"] = page_offset + + if search is not unset: + kwargs["search"] = search + + return self._list_tag_indexing_rules_endpoint.call_with_http_info(**kwargs) + + def list_tag_indexing_rules_for_metric( + self, + metric_name: str, + ) -> TagIndexingRulesResponse: + """List tag indexing rules for a metric. + + List the tag indexing rules that apply to a given metric, sorted by ``rule_order``. + Matching is performed server-side using each rule's ``metric_name_matches`` glob patterns. + + :param metric_name: The name of the metric. + :type metric_name: str + :rtype: TagIndexingRulesResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["metric_name"] = metric_name + + return self._list_tag_indexing_rules_for_metric_endpoint.call_with_http_info(**kwargs) + def list_tags_by_metric_name( self, metric_name: str, @@ -1076,6 +1493,24 @@ def query_timeseries_data( return self._query_timeseries_data_endpoint.call_with_http_info(**kwargs) + def reorder_tag_indexing_rules( + self, + body: TagIndexingRuleOrderRequest, + ) -> None: + """Reorder tag indexing rules. + + Atomically re-sequence the tag indexing rules for an org to match the supplied list of rule UUIDs. + The server assigns ``rule_order`` 1, 2, … matching each rule UUID by position in the list. + Requires the ``Manage Tags for Metrics`` permission. + + :type body: TagIndexingRuleOrderRequest + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._reorder_tag_indexing_rules_endpoint.call_with_http_info(**kwargs) + def submit_metrics( self, body: MetricPayload, @@ -1134,3 +1569,26 @@ def update_tag_configuration( kwargs["body"] = body return self._update_tag_configuration_endpoint.call_with_http_info(**kwargs) + + def update_tag_indexing_rule( + self, + id: str, + body: TagIndexingRuleUpdateRequest, + ) -> TagIndexingRuleResponse: + """Update a tag indexing rule. + + Partially update a tag indexing rule. Fields omitted from the request body are left unchanged. + Setting ``rule_order`` to a value already used by another rule returns 409; use the + reorder endpoint for atomic re-sequencing. Requires the ``Manage Tags for Metrics`` permission. + + :param id: ID of the tag indexing rule. + :type id: str + :type body: TagIndexingRuleUpdateRequest + :rtype: TagIndexingRuleResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["id"] = id + + kwargs["body"] = body + + return self._update_tag_indexing_rule_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/microsoft_teams_integration_api.py b/src/datadog_api_client/v2/api/microsoft_teams_integration_api.py index 5d466f96ca..e3527a2db1 100644 --- a/src/datadog_api_client/v2/api/microsoft_teams_integration_api.py +++ b/src/datadog_api_client/v2/api/microsoft_teams_integration_api.py @@ -91,6 +91,29 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._delete_ms_teams_user_binding_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/ms-teams/configuration/user-binding/{tenant_id}", + "operation_id": "delete_ms_teams_user_binding", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "tenant_id": { + "required": True, + "openapi_types": (str,), + "attribute": "tenant_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["*/*"], + }, + api_client=api_client, + ) + self._delete_tenant_based_handle_endpoint = _Endpoint( settings={ "response_type": None, @@ -353,6 +376,23 @@ def create_workflows_webhook_handle( return self._create_workflows_webhook_handle_endpoint.call_with_http_info(**kwargs) + def delete_ms_teams_user_binding( + self, + tenant_id: str, + ) -> None: + """Delete user binding. + + Delete the user binding for a given tenant from the Datadog Microsoft Teams integration. + + :param tenant_id: Your tenant id. + :type tenant_id: str + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["tenant_id"] = tenant_id + + return self._delete_ms_teams_user_binding_endpoint.call_with_http_info(**kwargs) + def delete_tenant_based_handle( self, handle_id: str, diff --git a/src/datadog_api_client/v2/api/network_health_insights_api.py b/src/datadog_api_client/v2/api/network_health_insights_api.py new file mode 100644 index 0000000000..028cc29201 --- /dev/null +++ b/src/datadog_api_client/v2/api/network_health_insights_api.py @@ -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. +from __future__ import annotations + +from typing import Any, Dict, Union + +from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint +from datadog_api_client.configuration import Configuration +from datadog_api_client.model_utils import ( + UnsetType, + unset, +) +from datadog_api_client.v2.model.network_health_insights_response import NetworkHealthInsightsResponse + + +class NetworkHealthInsightsApi: + """ + Analyze network health by surfacing actionable insights for services experiencing connectivity issues. + Insights are derived from DNS failure data (timeouts, NXDOMAIN, SERVFAIL, general failures), + TLS certificate health (expired, expiring soon), and security group denials. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient(Configuration()) + self.api_client = api_client + + self._list_network_health_insights_endpoint = _Endpoint( + settings={ + "response_type": (NetworkHealthInsightsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/network-health-insights", + "operation_id": "list_network_health_insights", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "_from": { + "openapi_types": (str,), + "attribute": "from", + "location": "query", + }, + "to": { + "openapi_types": (str,), + "attribute": "to", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + def list_network_health_insights( + self, + *, + _from: Union[str, UnsetType] = unset, + to: Union[str, UnsetType] = unset, + ) -> NetworkHealthInsightsResponse: + """List network health insights. + + Return network health insights for the organization within the given time window. + Insights are produced by analyzing DNS failures pre-classified by ``network-dns-logger`` , + TLS certificate metrics, and denied security group connections. Each insight + identifies the client and server services involved, the type of issue, and the + magnitude of the failure observed during the query window. + + :param _from: Unix timestamp (number of seconds since epoch) of the start of the query window. + If not provided, the start of the query window will be 15 minutes before the ``to`` timestamp. + If neither ``from`` nor ``to`` are provided, the query window will be ``[now - 15m, now]``. + :type _from: str, optional + :param to: Unix timestamp (number of seconds since epoch) of the end of the query window. + If not provided, the end of the query window will be the current time. + If neither ``from`` nor ``to`` are provided, the query window will be ``[now - 15m, now]``. + :type to: str, optional + :rtype: NetworkHealthInsightsResponse + """ + kwargs: Dict[str, Any] = {} + if _from is not unset: + kwargs["_from"] = _from + + if to is not unset: + kwargs["to"] = to + + return self._list_network_health_insights_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/organizations_api.py b/src/datadog_api_client/v2/api/organizations_api.py index f7900485e7..a89d433a18 100644 --- a/src/datadog_api_client/v2/api/organizations_api.py +++ b/src/datadog_api_client/v2/api/organizations_api.py @@ -3,15 +3,21 @@ # Copyright 2019-Present Datadog, Inc. from __future__ import annotations +import collections from typing import Any, Dict, Union from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint from datadog_api_client.configuration import Configuration from datadog_api_client.model_utils import ( + set_attribute_from_path, + get_attribute_from_path, file_type, UnsetType, unset, ) +from datadog_api_client.v2.model.global_orgs_response import GlobalOrgsResponse +from datadog_api_client.v2.model.global_org_data import GlobalOrgData +from datadog_api_client.v2.model.max_session_duration_update_request import MaxSessionDurationUpdateRequest from datadog_api_client.v2.model.managed_orgs_response import ManagedOrgsResponse from datadog_api_client.v2.model.org_saml_preferences_update_request import OrgSAMLPreferencesUpdateRequest from datadog_api_client.v2.model.org_config_list_response import OrgConfigListResponse @@ -78,6 +84,43 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._list_global_orgs_endpoint = _Endpoint( + settings={ + "response_type": (GlobalOrgsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/global_orgs", + "operation_id": "list_global_orgs", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "user_handle": { + "required": True, + "openapi_types": (str,), + "attribute": "user_handle", + "location": "query", + }, + "page_limit": { + "validation": { + "inclusive_maximum": 1000, + "inclusive_minimum": 1, + }, + "openapi_types": (int,), + "attribute": "page[limit]", + "location": "query", + }, + "page_cursor": { + "openapi_types": (str,), + "attribute": "page[cursor]", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._list_org_configs_endpoint = _Endpoint( settings={ "response_type": (OrgConfigListResponse,), @@ -132,6 +175,26 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._update_login_org_configs_max_session_duration_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/login/org_configs/max_session_duration", + "operation_id": "update_login_org_configs_max_session_duration", + "http_method": "PUT", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (MaxSessionDurationUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["*/*"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._update_org_config_endpoint = _Endpoint( settings={ "response_type": (OrgConfigGetResponse,), @@ -258,6 +321,81 @@ def get_saml_configuration( return self._get_saml_configuration_endpoint.call_with_http_info(**kwargs) + def list_global_orgs( + self, + user_handle: str, + *, + page_limit: Union[int, UnsetType] = unset, + page_cursor: Union[str, UnsetType] = unset, + ) -> GlobalOrgsResponse: + """List global orgs. + + Returns organizations across regions for the authenticated user. The ``user_handle`` query parameter must match the authenticated user's handle. + + :param user_handle: The handle of the authenticated user. + :type user_handle: str + :param page_limit: Maximum number of results returned. + :type page_limit: int, optional + :param page_cursor: String to query the next page of results. + This key is provided with each valid response from the API in ``meta.page.next_cursor``. + :type page_cursor: str, optional + :rtype: GlobalOrgsResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["user_handle"] = user_handle + + if page_limit is not unset: + kwargs["page_limit"] = page_limit + + if page_cursor is not unset: + kwargs["page_cursor"] = page_cursor + + return self._list_global_orgs_endpoint.call_with_http_info(**kwargs) + + def list_global_orgs_with_pagination( + self, + user_handle: str, + *, + page_limit: Union[int, UnsetType] = unset, + page_cursor: Union[str, UnsetType] = unset, + ) -> collections.abc.Iterable[GlobalOrgData]: + """List global orgs. + + Provide a paginated version of :meth:`list_global_orgs`, returning all items. + + :param user_handle: The handle of the authenticated user. + :type user_handle: str + :param page_limit: Maximum number of results returned. + :type page_limit: int, optional + :param page_cursor: String to query the next page of results. + This key is provided with each valid response from the API in ``meta.page.next_cursor``. + :type page_cursor: str, optional + + :return: A generator of paginated results. + :rtype: collections.abc.Iterable[GlobalOrgData] + """ + kwargs: Dict[str, Any] = {} + kwargs["user_handle"] = user_handle + + if page_limit is not unset: + kwargs["page_limit"] = page_limit + + if page_cursor is not unset: + kwargs["page_cursor"] = page_cursor + + local_page_size = get_attribute_from_path(kwargs, "page_limit", 100) + endpoint = self._list_global_orgs_endpoint + set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map) + pagination = { + "limit_value": local_page_size, + "results_path": "data", + "cursor_param": "page_cursor", + "cursor_path": "meta.page.next_cursor", + "endpoint": endpoint, + "kwargs": kwargs, + } + return endpoint.call_with_http_info_paginated(pagination) + def list_org_configs( self, ) -> OrgConfigListResponse: @@ -301,6 +439,23 @@ def list_saml_configurations( kwargs: Dict[str, Any] = {} return self._list_saml_configurations_endpoint.call_with_http_info(**kwargs) + def update_login_org_configs_max_session_duration( + self, + body: MaxSessionDurationUpdateRequest, + ) -> None: + """Update the maximum session duration. + + Update the maximum session duration for the current organization. + The duration is specified in seconds. + + :type body: MaxSessionDurationUpdateRequest + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._update_login_org_configs_max_session_duration_endpoint.call_with_http_info(**kwargs) + def update_org_config( self, org_config_name: str, diff --git a/src/datadog_api_client/v2/api/report_schedules_api.py b/src/datadog_api_client/v2/api/report_schedules_api.py new file mode 100644 index 0000000000..53bf0abb1e --- /dev/null +++ b/src/datadog_api_client/v2/api/report_schedules_api.py @@ -0,0 +1,117 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Any, Dict + +from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint +from datadog_api_client.configuration import Configuration +from datadog_api_client.model_utils import ( + UUID, +) +from datadog_api_client.v2.model.report_schedule_response import ReportScheduleResponse +from datadog_api_client.v2.model.report_schedule_create_request import ReportScheduleCreateRequest +from datadog_api_client.v2.model.report_schedule_patch_request import ReportSchedulePatchRequest + + +class ReportSchedulesApi: + """ + Create and manage scheduled reports. A scheduled report renders a dashboard or integration + dashboard on a recurring cadence and delivers it to a set of recipients over email, Slack, + or Microsoft Teams. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient(Configuration()) + self.api_client = api_client + + self._create_report_schedule_endpoint = _Endpoint( + settings={ + "response_type": (ReportScheduleResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/reporting/schedule", + "operation_id": "create_report_schedule", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (ReportScheduleCreateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._patch_report_schedule_endpoint = _Endpoint( + settings={ + "response_type": (ReportScheduleResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/reporting/schedule/{schedule_uuid}", + "operation_id": "patch_report_schedule", + "http_method": "PATCH", + "version": "v2", + }, + params_map={ + "schedule_uuid": { + "required": True, + "openapi_types": (UUID,), + "attribute": "schedule_uuid", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (ReportSchedulePatchRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + def create_report_schedule( + self, + body: ReportScheduleCreateRequest, + ) -> ReportScheduleResponse: + """Create a report schedule. + + Create a new scheduled report. A schedule renders a dashboard or integration dashboard + on a recurring cadence and delivers it to the configured recipients over email, Slack, + or Microsoft Teams. + Requires the ``generate_dashboard_reports`` permission. + + :type body: ReportScheduleCreateRequest + :rtype: ReportScheduleResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._create_report_schedule_endpoint.call_with_http_info(**kwargs) + + def patch_report_schedule( + self, + schedule_uuid: UUID, + body: ReportSchedulePatchRequest, + ) -> ReportScheduleResponse: + """Update a report schedule. + + Update an existing scheduled report by its identifier. The editable attributes + are replaced with the supplied values; the targeted resource ( ``resource_id`` and + ``resource_type`` ) cannot be changed after creation. + Requires the ``generate_dashboard_reports`` permission and schedule ownership. + + :param schedule_uuid: The unique identifier of the report schedule to update. + :type schedule_uuid: UUID + :type body: ReportSchedulePatchRequest + :rtype: ReportScheduleResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["schedule_uuid"] = schedule_uuid + + kwargs["body"] = body + + return self._patch_report_schedule_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/rum_rate_limit_api.py b/src/datadog_api_client/v2/api/rum_rate_limit_api.py new file mode 100644 index 0000000000..54dbb83398 --- /dev/null +++ b/src/datadog_api_client/v2/api/rum_rate_limit_api.py @@ -0,0 +1,188 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Any, Dict + +from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint +from datadog_api_client.configuration import Configuration +from datadog_api_client.v2.model.rum_rate_limit_scope_type import RumRateLimitScopeType +from datadog_api_client.v2.model.rum_rate_limit_config_response import RumRateLimitConfigResponse +from datadog_api_client.v2.model.rum_rate_limit_config_update_request import RumRateLimitConfigUpdateRequest + + +class RumRateLimitApi: + """ + Manage RUM rate limit configurations for your organization's RUM applications. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient(Configuration()) + self.api_client = api_client + + self._delete_rum_rate_limit_config_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/rum/config/rate-limit/{scope_type}/{scope_id}", + "operation_id": "delete_rum_rate_limit_config", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "scope_type": { + "required": True, + "openapi_types": (RumRateLimitScopeType,), + "attribute": "scope_type", + "location": "path", + }, + "scope_id": { + "required": True, + "openapi_types": (str,), + "attribute": "scope_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["*/*"], + }, + api_client=api_client, + ) + + self._get_rum_rate_limit_config_endpoint = _Endpoint( + settings={ + "response_type": (RumRateLimitConfigResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/rum/config/rate-limit/{scope_type}/{scope_id}", + "operation_id": "get_rum_rate_limit_config", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "scope_type": { + "required": True, + "openapi_types": (RumRateLimitScopeType,), + "attribute": "scope_type", + "location": "path", + }, + "scope_id": { + "required": True, + "openapi_types": (str,), + "attribute": "scope_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._update_rum_rate_limit_config_endpoint = _Endpoint( + settings={ + "response_type": (RumRateLimitConfigResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/rum/config/rate-limit/{scope_type}/{scope_id}", + "operation_id": "update_rum_rate_limit_config", + "http_method": "PUT", + "version": "v2", + }, + params_map={ + "scope_type": { + "required": True, + "openapi_types": (RumRateLimitScopeType,), + "attribute": "scope_type", + "location": "path", + }, + "scope_id": { + "required": True, + "openapi_types": (str,), + "attribute": "scope_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (RumRateLimitConfigUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + def delete_rum_rate_limit_config( + self, + scope_type: RumRateLimitScopeType, + scope_id: str, + ) -> None: + """Delete a RUM rate limit configuration. + + Delete the RUM rate limit configuration for a given scope. + + :param scope_type: The type of scope the rate limit configuration applies to. + :type scope_type: RumRateLimitScopeType + :param scope_id: The identifier of the scope the rate limit configuration applies to. + For the ``application`` scope, this is the RUM application ID. + :type scope_id: str + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["scope_type"] = scope_type + + kwargs["scope_id"] = scope_id + + return self._delete_rum_rate_limit_config_endpoint.call_with_http_info(**kwargs) + + def get_rum_rate_limit_config( + self, + scope_type: RumRateLimitScopeType, + scope_id: str, + ) -> RumRateLimitConfigResponse: + """Get a RUM rate limit configuration. + + Get the RUM rate limit configuration for a given scope. + + :param scope_type: The type of scope the rate limit configuration applies to. + :type scope_type: RumRateLimitScopeType + :param scope_id: The identifier of the scope the rate limit configuration applies to. + For the ``application`` scope, this is the RUM application ID. + :type scope_id: str + :rtype: RumRateLimitConfigResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["scope_type"] = scope_type + + kwargs["scope_id"] = scope_id + + return self._get_rum_rate_limit_config_endpoint.call_with_http_info(**kwargs) + + def update_rum_rate_limit_config( + self, + scope_type: RumRateLimitScopeType, + scope_id: str, + body: RumRateLimitConfigUpdateRequest, + ) -> RumRateLimitConfigResponse: + """Create or update a RUM rate limit configuration. + + Create or update the RUM rate limit configuration for a given scope. + Returns the rate limit configuration object when the request is successful. + + :param scope_type: The type of scope the rate limit configuration applies to. + :type scope_type: RumRateLimitScopeType + :param scope_id: The identifier of the scope the rate limit configuration applies to. + For the ``application`` scope, this is the RUM application ID. + :type scope_id: str + :param body: The definition of the RUM rate limit configuration to create or update. + :type body: RumRateLimitConfigUpdateRequest + :rtype: RumRateLimitConfigResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["scope_type"] = scope_type + + kwargs["scope_id"] = scope_id + + kwargs["body"] = body + + return self._update_rum_rate_limit_config_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/rum_retention_filters_hardcoded_api.py b/src/datadog_api_client/v2/api/rum_retention_filters_hardcoded_api.py deleted file mode 100644 index 31b4ca3347..0000000000 --- a/src/datadog_api_client/v2/api/rum_retention_filters_hardcoded_api.py +++ /dev/null @@ -1,178 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Any, Dict - -from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint -from datadog_api_client.configuration import Configuration -from datadog_api_client.v2.model.rum_hardcoded_retention_filters_response import RumHardcodedRetentionFiltersResponse -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_response import RumHardcodedRetentionFilterResponse -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_request import ( - RumHardcodedRetentionFilterUpdateRequest, -) - - -class RUMRetentionFiltersHardcodedApi: - """ - Manage hardcoded retention filters through `Manage Applications `_ in RUM. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient(Configuration()) - self.api_client = api_client - - self._get_hardcoded_retention_filter_endpoint = _Endpoint( - settings={ - "response_type": (RumHardcodedRetentionFilterResponse,), - "auth": ["apiKeyAuth", "appKeyAuth"], - "endpoint_path": "/api/v2/rum/applications/{app_id}/hardcoded_retention_filters/{rf_id}", - "operation_id": "get_hardcoded_retention_filter", - "http_method": "GET", - "version": "v2", - }, - params_map={ - "app_id": { - "required": True, - "openapi_types": (str,), - "attribute": "app_id", - "location": "path", - }, - "rf_id": { - "required": True, - "openapi_types": (str,), - "attribute": "rf_id", - "location": "path", - }, - }, - headers_map={ - "accept": ["application/json"], - }, - api_client=api_client, - ) - - self._list_hardcoded_retention_filters_endpoint = _Endpoint( - settings={ - "response_type": (RumHardcodedRetentionFiltersResponse,), - "auth": ["apiKeyAuth", "appKeyAuth"], - "endpoint_path": "/api/v2/rum/applications/{app_id}/hardcoded_retention_filters", - "operation_id": "list_hardcoded_retention_filters", - "http_method": "GET", - "version": "v2", - }, - params_map={ - "app_id": { - "required": True, - "openapi_types": (str,), - "attribute": "app_id", - "location": "path", - }, - }, - headers_map={ - "accept": ["application/json"], - }, - api_client=api_client, - ) - - self._update_hardcoded_retention_filter_endpoint = _Endpoint( - settings={ - "response_type": (RumHardcodedRetentionFilterResponse,), - "auth": ["apiKeyAuth", "appKeyAuth"], - "endpoint_path": "/api/v2/rum/applications/{app_id}/hardcoded_retention_filters/{rf_id}", - "operation_id": "update_hardcoded_retention_filter", - "http_method": "PATCH", - "version": "v2", - }, - params_map={ - "app_id": { - "required": True, - "openapi_types": (str,), - "attribute": "app_id", - "location": "path", - }, - "rf_id": { - "required": True, - "openapi_types": (str,), - "attribute": "rf_id", - "location": "path", - }, - "body": { - "required": True, - "openapi_types": (RumHardcodedRetentionFilterUpdateRequest,), - "location": "body", - }, - }, - headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, - api_client=api_client, - ) - - def get_hardcoded_retention_filter( - self, - app_id: str, - rf_id: str, - ) -> RumHardcodedRetentionFilterResponse: - """Get a hardcoded retention filter. - - Get a single hardcoded retention filter for a RUM application. - - :param app_id: RUM application ID. - :type app_id: str - :param rf_id: Hardcoded retention filter ID. - :type rf_id: str - :rtype: RumHardcodedRetentionFilterResponse - """ - kwargs: Dict[str, Any] = {} - kwargs["app_id"] = app_id - - kwargs["rf_id"] = rf_id - - return self._get_hardcoded_retention_filter_endpoint.call_with_http_info(**kwargs) - - def list_hardcoded_retention_filters( - self, - app_id: str, - ) -> RumHardcodedRetentionFiltersResponse: - """Get all hardcoded retention filters. - - Get the list of hardcoded retention filters for a RUM application. - - :param app_id: RUM application ID. - :type app_id: str - :rtype: RumHardcodedRetentionFiltersResponse - """ - kwargs: Dict[str, Any] = {} - kwargs["app_id"] = app_id - - return self._list_hardcoded_retention_filters_endpoint.call_with_http_info(**kwargs) - - def update_hardcoded_retention_filter( - self, - app_id: str, - rf_id: str, - body: RumHardcodedRetentionFilterUpdateRequest, - ) -> RumHardcodedRetentionFilterResponse: - """Update a hardcoded retention filter. - - Update the cross-product sample rates of a hardcoded retention filter for a RUM application. - Only fields whose matching flag in ``cross_product_sampling_editability`` is ``true`` can be updated. - Any other field is read-only and cannot be sent in the payload. - Returns the updated hardcoded retention filter when the request is successful. - - :param app_id: RUM application ID. - :type app_id: str - :param rf_id: Hardcoded retention filter ID. - :type rf_id: str - :param body: New cross-product sample rates for the hardcoded retention filter. - :type body: RumHardcodedRetentionFilterUpdateRequest - :rtype: RumHardcodedRetentionFilterResponse - """ - kwargs: Dict[str, Any] = {} - kwargs["app_id"] = app_id - - kwargs["rf_id"] = rf_id - - kwargs["body"] = body - - return self._update_hardcoded_retention_filter_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/security_monitoring_api.py b/src/datadog_api_client/v2/api/security_monitoring_api.py index ff04f6317b..aff5fad811 100644 --- a/src/datadog_api_client/v2/api/security_monitoring_api.py +++ b/src/datadog_api_client/v2/api/security_monitoring_api.py @@ -64,6 +64,7 @@ from datadog_api_client.v2.model.cloud_asset_type import CloudAssetType from datadog_api_client.v2.model.io_c_explorer_list_response import IoCExplorerListResponse from datadog_api_client.v2.model.get_io_c_indicator_response import GetIoCIndicatorResponse +from datadog_api_client.v2.model.notification_rules_list_response import NotificationRulesListResponse from datadog_api_client.v2.model.notification_rule_response import NotificationRuleResponse from datadog_api_client.v2.model.create_notification_rule_parameters import CreateNotificationRuleParameters from datadog_api_client.v2.model.patch_notification_rule_parameters import PatchNotificationRuleParameters @@ -102,6 +103,7 @@ from datadog_api_client.v2.model.security_monitoring_integration_config_update_request import ( SecurityMonitoringIntegrationConfigUpdateRequest, ) +from datadog_api_client.v2.model.notification_rule_preview_response import NotificationRulePreviewResponse from datadog_api_client.v2.model.security_filters_response import SecurityFiltersResponse from datadog_api_client.v2.model.security_filter_response import SecurityFilterResponse from datadog_api_client.v2.model.security_filter_create_request import SecurityFilterCreateRequest @@ -154,6 +156,7 @@ SecurityMonitoringDatasetVersionHistoryResponse, ) from datadog_api_client.v2.model.entity_context_response import EntityContextResponse +from datadog_api_client.v2.model.single_entity_context_response import SingleEntityContextResponse from datadog_api_client.v2.model.security_monitoring_list_rules_response import SecurityMonitoringListRulesResponse from datadog_api_client.v2.model.security_monitoring_rule_sort import SecurityMonitoringRuleSort from datadog_api_client.v2.model.security_monitoring_rule_response import SecurityMonitoringRuleResponse @@ -2086,7 +2089,7 @@ def __init__(self, api_client=None): self._get_signal_notification_rules_endpoint = _Endpoint( settings={ - "response_type": (dict,), + "response_type": (NotificationRulesListResponse,), "auth": ["apiKeyAuth", "appKeyAuth"], "endpoint_path": "/api/v2/security/signals/notification_rules", "operation_id": "get_signal_notification_rules", @@ -2100,6 +2103,44 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._get_single_entity_context_endpoint = _Endpoint( + settings={ + "response_type": (SingleEntityContextResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/security_monitoring/entity_context/{id}", + "operation_id": "get_single_entity_context", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "id": { + "required": True, + "openapi_types": (str,), + "attribute": "id", + "location": "path", + }, + "_from": { + "openapi_types": (str,), + "attribute": "from", + "location": "query", + }, + "to": { + "openapi_types": (str,), + "attribute": "to", + "location": "query", + }, + "as_of": { + "openapi_types": (str,), + "attribute": "as_of", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._get_static_analysis_default_rulesets_endpoint = _Endpoint( settings={ "response_type": (DefaultRulesetsPerLanguageResponse,), @@ -2326,7 +2367,7 @@ def __init__(self, api_client=None): self._get_vulnerability_notification_rules_endpoint = _Endpoint( settings={ - "response_type": (dict,), + "response_type": (NotificationRulesListResponse,), "auth": ["apiKeyAuth", "appKeyAuth"], "endpoint_path": "/api/v2/security/vulnerabilities/notification_rules", "operation_id": "get_vulnerability_notification_rules", @@ -3469,6 +3510,35 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._restore_security_monitoring_rule_endpoint = _Endpoint( + settings={ + "response_type": (SecurityMonitoringRuleResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/security_monitoring/rules/{rule_id}/restore/{version}", + "operation_id": "restore_security_monitoring_rule", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "rule_id": { + "required": True, + "openapi_types": (str,), + "attribute": "rule_id", + "location": "path", + }, + "version": { + "required": True, + "openapi_types": (int,), + "attribute": "version", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._run_historical_job_endpoint = _Endpoint( settings={ "response_type": (JobCreateResponse,), @@ -3547,6 +3617,26 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._send_security_monitoring_notification_preview_endpoint = _Endpoint( + settings={ + "response_type": (NotificationRulePreviewResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/security_monitoring/configuration/notification_rules/send_notification_preview", + "operation_id": "send_security_monitoring_notification_preview", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (CreateNotificationRuleParameters,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._test_existing_security_monitoring_rule_endpoint = _Endpoint( settings={ "response_type": (SecurityMonitoringRuleTestResponse,), @@ -5456,16 +5546,59 @@ def get_signal_notification_rule( def get_signal_notification_rules( self, - ) -> dict: + ) -> NotificationRulesListResponse: """Get the list of signal-based notification rules. Returns the list of notification rules for security signals. - :rtype: dict + :rtype: NotificationRulesListResponse """ kwargs: Dict[str, Any] = {} return self._get_signal_notification_rules_endpoint.call_with_http_info(**kwargs) + def get_single_entity_context( + self, + id: str, + *, + _from: Union[str, UnsetType] = unset, + to: Union[str, UnsetType] = unset, + as_of: Union[str, UnsetType] = unset, + ) -> SingleEntityContextResponse: + """Get a single entity context. + + Get a single entity from the Cloud SIEM entity context store by its identifier, returning the historical + revisions of the entity in the requested time range. The endpoint can either return revisions across an + interval ( ``from`` / ``to`` ) or the snapshot of the entity at a single point in time ( ``as_of`` ); the two modes + are mutually exclusive. + + :param id: The unique identifier of the entity to retrieve. + :type id: str + :param _from: The start of the time range to query, as an RFC3339 timestamp or a relative time (for example, ``now-7d`` ). + Defaults to ``now-7d``. Ignored when ``as_of`` is set. + :type _from: str, optional + :param to: The end of the time range to query, as an RFC3339 timestamp or a relative time (for example, ``now`` ). + Defaults to ``now``. Ignored when ``as_of`` is set. + :type to: str, optional + :param as_of: A point in time at which to query the entity revisions, as an RFC3339 timestamp, a Unix timestamp + (in seconds), or a relative time (for example, ``now-1d`` ). When set, ``from`` and ``to`` are ignored. + Cannot be combined with custom ``from`` / ``to`` values. + :type as_of: str, optional + :rtype: SingleEntityContextResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["id"] = id + + if _from is not unset: + kwargs["_from"] = _from + + if to is not unset: + kwargs["to"] = to + + if as_of is not unset: + kwargs["as_of"] = as_of + + return self._get_single_entity_context_endpoint.call_with_http_info(**kwargs) + def get_static_analysis_default_rulesets( self, language: str, @@ -5651,12 +5784,12 @@ def get_vulnerability_notification_rule( def get_vulnerability_notification_rules( self, - ) -> dict: + ) -> NotificationRulesListResponse: """Get the list of vulnerability notification rules. Returns the list of notification rules for security vulnerabilities. - :rtype: dict + :rtype: NotificationRulesListResponse """ kwargs: Dict[str, Any] = {} return self._get_vulnerability_notification_rules_endpoint.call_with_http_info(**kwargs) @@ -7266,6 +7399,30 @@ def patch_vulnerability_notification_rule( return self._patch_vulnerability_notification_rule_endpoint.call_with_http_info(**kwargs) + def restore_security_monitoring_rule( + self, + rule_id: str, + version: int, + ) -> SecurityMonitoringRuleResponse: + """Restore a rule to a historical version. + + Restores a custom detection rule to a previously saved historical version. + Only custom rules can be restored. Default and partner rules return 400. + The restore creates a new version entry; it does not overwrite history. + + :param rule_id: The ID of the rule. + :type rule_id: str + :param version: The historical version number of the rule. + :type version: int + :rtype: SecurityMonitoringRuleResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["rule_id"] = rule_id + + kwargs["version"] = version + + return self._restore_security_monitoring_rule_endpoint.call_with_http_info(**kwargs) + def run_historical_job( self, body: RunHistoricalJobRequest, @@ -7402,6 +7559,22 @@ def search_security_monitoring_signals_with_pagination( } return endpoint.call_with_http_info_paginated(pagination) + def send_security_monitoring_notification_preview( + self, + body: CreateNotificationRuleParameters, + ) -> NotificationRulePreviewResponse: + """Test a notification rule. + + Send a notification preview to test that a notification rule's targets are properly configured. + + :type body: CreateNotificationRuleParameters + :rtype: NotificationRulePreviewResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._send_security_monitoring_notification_preview_endpoint.call_with_http_info(**kwargs) + def test_existing_security_monitoring_rule( self, rule_id: str, diff --git a/src/datadog_api_client/v2/api/slack_integration_api.py b/src/datadog_api_client/v2/api/slack_integration_api.py new file mode 100644 index 0000000000..8f0fe573b2 --- /dev/null +++ b/src/datadog_api_client/v2/api/slack_integration_api.py @@ -0,0 +1,65 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Any, Dict + +from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint +from datadog_api_client.configuration import Configuration +from datadog_api_client.model_utils import ( + UUID, +) +from datadog_api_client.v2.model.slack_user_bindings_response import SlackUserBindingsResponse + + +class SlackIntegrationApi: + """ + Configure your `Datadog Slack integration `_ + directly through the Datadog API. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient(Configuration()) + self.api_client = api_client + + self._list_slack_user_bindings_endpoint = _Endpoint( + settings={ + "response_type": (SlackUserBindingsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/integration/slack/user-bindings", + "operation_id": "list_slack_user_bindings", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "user_uuid": { + "required": True, + "openapi_types": (UUID,), + "attribute": "user_uuid", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + def list_slack_user_bindings( + self, + user_uuid: UUID, + ) -> SlackUserBindingsResponse: + """List Slack user bindings. + + List all Slack user bindings for a given Datadog user from the Datadog Slack integration. + + :param user_uuid: The UUID of the Datadog user to list Slack bindings for. + :type user_uuid: UUID + :rtype: SlackUserBindingsResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["user_uuid"] = user_uuid + + return self._list_slack_user_bindings_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/api/tag_policies_api.py b/src/datadog_api_client/v2/api/tag_policies_api.py new file mode 100644 index 0000000000..0abc665a5e --- /dev/null +++ b/src/datadog_api_client/v2/api/tag_policies_api.py @@ -0,0 +1,416 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Any, Dict, Union + +from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint +from datadog_api_client.configuration import Configuration +from datadog_api_client.model_utils import ( + UnsetType, + unset, +) +from datadog_api_client.v2.model.tag_policies_list_response import TagPoliciesListResponse +from datadog_api_client.v2.model.tag_policy_include import TagPolicyInclude +from datadog_api_client.v2.model.tag_policy_source import TagPolicySource +from datadog_api_client.v2.model.tag_policy_response import TagPolicyResponse +from datadog_api_client.v2.model.tag_policy_create_request import TagPolicyCreateRequest +from datadog_api_client.v2.model.tag_policy_update_request import TagPolicyUpdateRequest +from datadog_api_client.v2.model.tag_policy_score_response import TagPolicyScoreResponse + + +class TagPoliciesApi: + """ + Tag Policies define rules that govern which tag values are accepted for a given tag key, + scoped to a particular telemetry source (such as logs, spans, or metrics). Policies can be + ``blocking`` (data not matching the policy is rejected) or ``surfacing`` (matching data is + highlighted but not blocked). Each policy reports a compliance ``score`` derived from how + much recent telemetry adheres to the policy. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient(Configuration()) + self.api_client = api_client + + self._create_tag_policy_endpoint = _Endpoint( + settings={ + "response_type": (TagPolicyResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/tag-policies", + "operation_id": "create_tag_policy", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (TagPolicyCreateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._delete_tag_policy_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/tag-policies/{policy_id}", + "operation_id": "delete_tag_policy", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "policy_id": { + "required": True, + "openapi_types": (str,), + "attribute": "policy_id", + "location": "path", + }, + "hard_delete": { + "openapi_types": (bool,), + "attribute": "hard_delete", + "location": "query", + }, + }, + headers_map={ + "accept": ["*/*"], + }, + api_client=api_client, + ) + + self._get_tag_policy_endpoint = _Endpoint( + settings={ + "response_type": (TagPolicyResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/tag-policies/{policy_id}", + "operation_id": "get_tag_policy", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "policy_id": { + "required": True, + "openapi_types": (str,), + "attribute": "policy_id", + "location": "path", + }, + "include": { + "openapi_types": (TagPolicyInclude,), + "attribute": "include", + "location": "query", + }, + "ts_start": { + "openapi_types": (int,), + "attribute": "ts_start", + "location": "query", + }, + "ts_end": { + "openapi_types": (int,), + "attribute": "ts_end", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._get_tag_policy_score_endpoint = _Endpoint( + settings={ + "response_type": (TagPolicyScoreResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/tag-policies/{policy_id}/score", + "operation_id": "get_tag_policy_score", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "policy_id": { + "required": True, + "openapi_types": (str,), + "attribute": "policy_id", + "location": "path", + }, + "ts_start": { + "openapi_types": (int,), + "attribute": "ts_start", + "location": "query", + }, + "ts_end": { + "openapi_types": (int,), + "attribute": "ts_end", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_tag_policies_endpoint = _Endpoint( + settings={ + "response_type": (TagPoliciesListResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/tag-policies", + "operation_id": "list_tag_policies", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "include_disabled": { + "openapi_types": (bool,), + "attribute": "include_disabled", + "location": "query", + }, + "include_deleted": { + "openapi_types": (bool,), + "attribute": "include_deleted", + "location": "query", + }, + "include": { + "openapi_types": (TagPolicyInclude,), + "attribute": "include", + "location": "query", + }, + "filter_source": { + "openapi_types": (TagPolicySource,), + "attribute": "filter[source]", + "location": "query", + }, + "ts_start": { + "openapi_types": (int,), + "attribute": "ts_start", + "location": "query", + }, + "ts_end": { + "openapi_types": (int,), + "attribute": "ts_end", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._update_tag_policy_endpoint = _Endpoint( + settings={ + "response_type": (TagPolicyResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/tag-policies/{policy_id}", + "operation_id": "update_tag_policy", + "http_method": "PATCH", + "version": "v2", + }, + params_map={ + "policy_id": { + "required": True, + "openapi_types": (str,), + "attribute": "policy_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (TagPolicyUpdateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + def create_tag_policy( + self, + body: TagPolicyCreateRequest, + ) -> TagPolicyResponse: + """Create a tag policy. + + Create a new tag policy for the organization. The caller's organization is derived from + the authenticated user; cross-organization creation is not supported. Fields such as + ``policy_id`` , ``version`` , and the timestamp/audit fields are assigned by the server. + + :type body: TagPolicyCreateRequest + :rtype: TagPolicyResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._create_tag_policy_endpoint.call_with_http_info(**kwargs) + + def delete_tag_policy( + self, + policy_id: str, + *, + hard_delete: Union[bool, UnsetType] = unset, + ) -> None: + """Delete a tag policy. + + Delete a tag policy. By default the policy is soft-deleted so it can be recovered later + and so that historical score data remains queryable. Pass ``hard_delete=true`` to remove + the policy permanently. + + :param policy_id: The unique identifier of the tag policy to delete. + :type policy_id: str + :param hard_delete: Whether to permanently delete the policy instead of performing a soft delete. Defaults to ``false``. + :type hard_delete: bool, optional + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["policy_id"] = policy_id + + if hard_delete is not unset: + kwargs["hard_delete"] = hard_delete + + return self._delete_tag_policy_endpoint.call_with_http_info(**kwargs) + + def get_tag_policy( + self, + policy_id: str, + *, + include: Union[TagPolicyInclude, UnsetType] = unset, + ts_start: Union[int, UnsetType] = unset, + ts_end: Union[int, UnsetType] = unset, + ) -> TagPolicyResponse: + """Get a tag policy. + + Retrieve a single tag policy by ID. Optionally include the policy's current compliance + score via the ``include=score`` query parameter. Policies belonging to other organizations + cannot be retrieved. + + :param policy_id: The unique identifier of the tag policy. + :type policy_id: str + :param include: Comma-separated list of related resources to include alongside the policy. Currently the only supported value is ``score``. + :type include: TagPolicyInclude, optional + :param ts_start: Start of the time window used for compliance score computation, as a Unix timestamp in milliseconds. + :type ts_start: int, optional + :param ts_end: End of the time window used for compliance score computation, as a Unix timestamp in milliseconds. Must be in the past and greater than ``ts_start``. + :type ts_end: int, optional + :rtype: TagPolicyResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["policy_id"] = policy_id + + if include is not unset: + kwargs["include"] = include + + if ts_start is not unset: + kwargs["ts_start"] = ts_start + + if ts_end is not unset: + kwargs["ts_end"] = ts_end + + return self._get_tag_policy_endpoint.call_with_http_info(**kwargs) + + def get_tag_policy_score( + self, + policy_id: str, + *, + ts_start: Union[int, UnsetType] = unset, + ts_end: Union[int, UnsetType] = unset, + ) -> TagPolicyScoreResponse: + """Get a tag policy compliance score. + + Retrieve the compliance score for a single tag policy. The score is computed over the + requested time window (or a source-appropriate default) and represents the percentage of + telemetry within that window that conforms to the policy. A ``null`` score indicates that + no relevant telemetry was found. + + :param policy_id: The unique identifier of the tag policy. + :type policy_id: str + :param ts_start: Start of the time window used for compliance score computation, as a Unix timestamp in milliseconds. + :type ts_start: int, optional + :param ts_end: End of the time window used for compliance score computation, as a Unix timestamp in milliseconds. Must be in the past and greater than ``ts_start``. + :type ts_end: int, optional + :rtype: TagPolicyScoreResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["policy_id"] = policy_id + + if ts_start is not unset: + kwargs["ts_start"] = ts_start + + if ts_end is not unset: + kwargs["ts_end"] = ts_end + + return self._get_tag_policy_score_endpoint.call_with_http_info(**kwargs) + + def list_tag_policies( + self, + *, + include_disabled: Union[bool, UnsetType] = unset, + include_deleted: Union[bool, UnsetType] = unset, + include: Union[TagPolicyInclude, UnsetType] = unset, + filter_source: Union[TagPolicySource, UnsetType] = unset, + ts_start: Union[int, UnsetType] = unset, + ts_end: Union[int, UnsetType] = unset, + ) -> TagPoliciesListResponse: + """List tag policies. + + Retrieve all tag policies for the organization. Optionally include disabled or deleted + policies, filter by telemetry source, and include each policy's current compliance score + via the ``include=score`` query parameter. + + :param include_disabled: Whether to include policies that are currently disabled. Defaults to ``false``. + :type include_disabled: bool, optional + :param include_deleted: Whether to include policies that have been soft-deleted. Defaults to ``false``. + :type include_deleted: bool, optional + :param include: Comma-separated list of related resources to include alongside each policy in the response. Currently the only supported value is ``score``. + :type include: TagPolicyInclude, optional + :param filter_source: Restrict the result set to policies whose source matches the given value. + :type filter_source: TagPolicySource, optional + :param ts_start: Start of the time window used for compliance score computation, as a Unix timestamp in milliseconds. Defaults to a recent window appropriate for the source. + :type ts_start: int, optional + :param ts_end: End of the time window used for compliance score computation, as a Unix timestamp in milliseconds. Must be in the past and greater than ``ts_start``. + :type ts_end: int, optional + :rtype: TagPoliciesListResponse + """ + kwargs: Dict[str, Any] = {} + if include_disabled is not unset: + kwargs["include_disabled"] = include_disabled + + if include_deleted is not unset: + kwargs["include_deleted"] = include_deleted + + if include is not unset: + kwargs["include"] = include + + if filter_source is not unset: + kwargs["filter_source"] = filter_source + + if ts_start is not unset: + kwargs["ts_start"] = ts_start + + if ts_end is not unset: + kwargs["ts_end"] = ts_end + + return self._list_tag_policies_endpoint.call_with_http_info(**kwargs) + + def update_tag_policy( + self, + policy_id: str, + body: TagPolicyUpdateRequest, + ) -> TagPolicyResponse: + """Update a tag policy. + + Update one or more attributes of an existing tag policy. Only the fields supplied in the + request body are modified; omitted fields retain their current values. The policy's + ``source`` cannot be changed after creation. + + :param policy_id: The unique identifier of the tag policy to update. + :type policy_id: str + :type body: TagPolicyUpdateRequest + :rtype: TagPolicyResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["policy_id"] = policy_id + + kwargs["body"] = body + + return self._update_tag_policy_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/apis/__init__.py b/src/datadog_api_client/v2/apis/__init__.py index c8e6400d06..25241f4cfa 100644 --- a/src/datadog_api_client/v2/apis/__init__.py +++ b/src/datadog_api_client/v2/apis/__init__.py @@ -17,6 +17,8 @@ from datadog_api_client.v2.api.ci_visibility_tests_api import CIVisibilityTestsApi from datadog_api_client.v2.api.csm_agents_api import CSMAgentsApi from datadog_api_client.v2.api.csm_coverage_analysis_api import CSMCoverageAnalysisApi +from datadog_api_client.v2.api.csm_ownership_api import CSMOwnershipApi +from datadog_api_client.v2.api.csm_settings_api import CSMSettingsApi from datadog_api_client.v2.api.csm_threats_api import CSMThreatsApi from datadog_api_client.v2.api.case_management_api import CaseManagementApi from datadog_api_client.v2.api.case_management_attribute_api import CaseManagementAttributeApi @@ -35,8 +37,10 @@ from datadog_api_client.v2.api.dora_metrics_api import DORAMetricsApi from datadog_api_client.v2.api.dashboard_lists_api import DashboardListsApi from datadog_api_client.v2.api.dashboard_secure_embed_api import DashboardSecureEmbedApi +from datadog_api_client.v2.api.dashboard_sharing_api import DashboardSharingApi from datadog_api_client.v2.api.dashboards_api import DashboardsApi from datadog_api_client.v2.api.data_deletion_api import DataDeletionApi +from datadog_api_client.v2.api.data_observability_api import DataObservabilityApi from datadog_api_client.v2.api.datasets_api import DatasetsApi from datadog_api_client.v2.api.deployment_gates_api import DeploymentGatesApi from datadog_api_client.v2.api.domain_allowlist_api import DomainAllowlistApi @@ -48,11 +52,11 @@ from datadog_api_client.v2.api.fastly_integration_api import FastlyIntegrationApi from datadog_api_client.v2.api.feature_flags_api import FeatureFlagsApi from datadog_api_client.v2.api.fleet_automation_api import FleetAutomationApi +from datadog_api_client.v2.api.forms_api import FormsApi from datadog_api_client.v2.api.gcp_integration_api import GCPIntegrationApi from datadog_api_client.v2.api.google_chat_integration_api import GoogleChatIntegrationApi from datadog_api_client.v2.api.high_availability_multi_region_api import HighAvailabilityMultiRegionApi from datadog_api_client.v2.api.ip_allowlist_api import IPAllowlistApi -from datadog_api_client.v2.api.incident_services_api import IncidentServicesApi from datadog_api_client.v2.api.incidents_api import IncidentsApi from datadog_api_client.v2.api.integrations_api import IntegrationsApi from datadog_api_client.v2.api.jira_integration_api import JiraIntegrationApi @@ -68,6 +72,7 @@ from datadog_api_client.v2.api.model_lab_api_api import ModelLabAPIApi from datadog_api_client.v2.api.monitors_api import MonitorsApi from datadog_api_client.v2.api.network_device_monitoring_api import NetworkDeviceMonitoringApi +from datadog_api_client.v2.api.network_health_insights_api import NetworkHealthInsightsApi from datadog_api_client.v2.api.o_auth2_client_public_api import OAuth2ClientPublicApi from datadog_api_client.v2.api.oci_integration_api import OCIIntegrationApi from datadog_api_client.v2.api.observability_pipelines_api import ObservabilityPipelinesApi @@ -83,12 +88,13 @@ from datadog_api_client.v2.api.product_analytics_api import ProductAnalyticsApi from datadog_api_client.v2.api.rum_api import RUMApi from datadog_api_client.v2.api.rum_insights_api import RUMInsightsApi -from datadog_api_client.v2.api.rum_retention_filters_hardcoded_api import RUMRetentionFiltersHardcodedApi from datadog_api_client.v2.api.reference_tables_api import ReferenceTablesApi +from datadog_api_client.v2.api.report_schedules_api import ReportSchedulesApi from datadog_api_client.v2.api.restriction_policies_api import RestrictionPoliciesApi from datadog_api_client.v2.api.roles_api import RolesApi from datadog_api_client.v2.api.rum_audience_management_api import RumAudienceManagementApi from datadog_api_client.v2.api.rum_metrics_api import RumMetricsApi +from datadog_api_client.v2.api.rum_rate_limit_api import RumRateLimitApi from datadog_api_client.v2.api.rum_replay_heatmaps_api import RumReplayHeatmapsApi from datadog_api_client.v2.api.rum_replay_playlists_api import RumReplayPlaylistsApi from datadog_api_client.v2.api.rum_replay_sessions_api import RumReplaySessionsApi @@ -103,6 +109,7 @@ from datadog_api_client.v2.api.service_definition_api import ServiceDefinitionApi from datadog_api_client.v2.api.service_level_objectives_api import ServiceLevelObjectivesApi from datadog_api_client.v2.api.service_now_integration_api import ServiceNowIntegrationApi +from datadog_api_client.v2.api.slack_integration_api import SlackIntegrationApi from datadog_api_client.v2.api.software_catalog_api import SoftwareCatalogApi from datadog_api_client.v2.api.spa_api import SpaApi from datadog_api_client.v2.api.spans_api import SpansApi @@ -113,6 +120,7 @@ from datadog_api_client.v2.api.stegadography_api import StegadographyApi from datadog_api_client.v2.api.storage_management_api import StorageManagementApi from datadog_api_client.v2.api.synthetics_api import SyntheticsApi +from datadog_api_client.v2.api.tag_policies_api import TagPoliciesApi from datadog_api_client.v2.api.teams_api import TeamsApi from datadog_api_client.v2.api.test_optimization_api import TestOptimizationApi from datadog_api_client.v2.api.usage_metering_api import UsageMeteringApi @@ -143,6 +151,8 @@ "CIVisibilityTestsApi", "CSMAgentsApi", "CSMCoverageAnalysisApi", + "CSMOwnershipApi", + "CSMSettingsApi", "CSMThreatsApi", "CaseManagementApi", "CaseManagementAttributeApi", @@ -161,8 +171,10 @@ "DORAMetricsApi", "DashboardListsApi", "DashboardSecureEmbedApi", + "DashboardSharingApi", "DashboardsApi", "DataDeletionApi", + "DataObservabilityApi", "DatasetsApi", "DeploymentGatesApi", "DomainAllowlistApi", @@ -174,11 +186,11 @@ "FastlyIntegrationApi", "FeatureFlagsApi", "FleetAutomationApi", + "FormsApi", "GCPIntegrationApi", "GoogleChatIntegrationApi", "HighAvailabilityMultiRegionApi", "IPAllowlistApi", - "IncidentServicesApi", "IncidentsApi", "IntegrationsApi", "JiraIntegrationApi", @@ -194,6 +206,7 @@ "ModelLabAPIApi", "MonitorsApi", "NetworkDeviceMonitoringApi", + "NetworkHealthInsightsApi", "OAuth2ClientPublicApi", "OCIIntegrationApi", "ObservabilityPipelinesApi", @@ -209,12 +222,13 @@ "ProductAnalyticsApi", "RUMApi", "RUMInsightsApi", - "RUMRetentionFiltersHardcodedApi", "ReferenceTablesApi", + "ReportSchedulesApi", "RestrictionPoliciesApi", "RolesApi", "RumAudienceManagementApi", "RumMetricsApi", + "RumRateLimitApi", "RumReplayHeatmapsApi", "RumReplayPlaylistsApi", "RumReplaySessionsApi", @@ -229,6 +243,7 @@ "ServiceDefinitionApi", "ServiceLevelObjectivesApi", "ServiceNowIntegrationApi", + "SlackIntegrationApi", "SoftwareCatalogApi", "SpaApi", "SpansApi", @@ -239,6 +254,7 @@ "StegadographyApi", "StorageManagementApi", "SyntheticsApi", + "TagPoliciesApi", "TeamsApi", "TestOptimizationApi", "UsageMeteringApi", diff --git a/src/datadog_api_client/v2/model/assignment_result.py b/src/datadog_api_client/v2/model/assignment_result.py index 0d6cf76548..0606c549f1 100644 --- a/src/datadog_api_client/v2/model/assignment_result.py +++ b/src/datadog_api_client/v2/model/assignment_result.py @@ -11,6 +11,12 @@ class AssignmentResult(ModelNormal): + validations = { + "status": { + "inclusive_maximum": 599, + }, + } + @cached_property def openapi_types(_): return { diff --git a/src/datadog_api_client/v2/model/aws_ccm_config_validation_issue.py b/src/datadog_api_client/v2/model/aws_ccm_config_validation_issue.py new file mode 100644 index 0000000000..556ca7fc4d --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_ccm_config_validation_issue.py @@ -0,0 +1,46 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.aws_ccm_config_validation_issue_code import AWSCcmConfigValidationIssueCode + + +class AWSCcmConfigValidationIssue(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.aws_ccm_config_validation_issue_code import AWSCcmConfigValidationIssueCode + + return { + "code": (AWSCcmConfigValidationIssueCode,), + "description": (str,), + } + + attribute_map = { + "code": "code", + "description": "description", + } + + def __init__(self_, code: AWSCcmConfigValidationIssueCode, description: str, **kwargs): + """ + A single validation issue found while validating an AWS Cost and Usage Report (CUR) 2.0 configuration. + + :param code: Identifies the specific reason a Cost and Usage Report (CUR) 2.0 configuration failed validation. + :type code: AWSCcmConfigValidationIssueCode + + :param description: Human-readable description of the validation issue. + :type description: str + """ + super().__init__(kwargs) + + self_.code = code + self_.description = description diff --git a/src/datadog_api_client/v2/model/aws_ccm_config_validation_issue_code.py b/src/datadog_api_client/v2/model/aws_ccm_config_validation_issue_code.py new file mode 100644 index 0000000000..f508833f4e --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_ccm_config_validation_issue_code.py @@ -0,0 +1,93 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class AWSCcmConfigValidationIssueCode(ModelSimple): + """ + Identifies the specific reason a Cost and Usage Report (CUR) 2.0 configuration failed validation. + + :param value: Must be one of ["ISSUE_CODE_UNSPECIFIED", "CREDENTIAL_ERROR", "BUCKET_NAME_INVALID_GOVCLOUD", "S3_LIST_PERMISSION_MISSING", "S3_GET_PERMISSION_MISSING", "S3_BUCKET_REGION_MISMATCH", "S3_BUCKET_NOT_ACCESSIBLE", "EXPORT_LIST_PERMISSION_MISSING", "EXPORT_GET_PERMISSION_MISSING", "EXPORT_NOT_FOUND", "EXPORT_STATUS_UNHEALTHY", "TIME_GRANULARITY_INVALID", "FILE_FORMAT_INVALID", "INCLUDE_RESOURCES_DISABLED", "REFRESH_CADENCE_INVALID", "OVERWRITE_MODE_INVALID", "QUERY_STATEMENT_INVALID"]. + :type value: str + """ + + allowed_values = { + "ISSUE_CODE_UNSPECIFIED", + "CREDENTIAL_ERROR", + "BUCKET_NAME_INVALID_GOVCLOUD", + "S3_LIST_PERMISSION_MISSING", + "S3_GET_PERMISSION_MISSING", + "S3_BUCKET_REGION_MISMATCH", + "S3_BUCKET_NOT_ACCESSIBLE", + "EXPORT_LIST_PERMISSION_MISSING", + "EXPORT_GET_PERMISSION_MISSING", + "EXPORT_NOT_FOUND", + "EXPORT_STATUS_UNHEALTHY", + "TIME_GRANULARITY_INVALID", + "FILE_FORMAT_INVALID", + "INCLUDE_RESOURCES_DISABLED", + "REFRESH_CADENCE_INVALID", + "OVERWRITE_MODE_INVALID", + "QUERY_STATEMENT_INVALID", + } + ISSUE_CODE_UNSPECIFIED: ClassVar["AWSCcmConfigValidationIssueCode"] + CREDENTIAL_ERROR: ClassVar["AWSCcmConfigValidationIssueCode"] + BUCKET_NAME_INVALID_GOVCLOUD: ClassVar["AWSCcmConfigValidationIssueCode"] + S3_LIST_PERMISSION_MISSING: ClassVar["AWSCcmConfigValidationIssueCode"] + S3_GET_PERMISSION_MISSING: ClassVar["AWSCcmConfigValidationIssueCode"] + S3_BUCKET_REGION_MISMATCH: ClassVar["AWSCcmConfigValidationIssueCode"] + S3_BUCKET_NOT_ACCESSIBLE: ClassVar["AWSCcmConfigValidationIssueCode"] + EXPORT_LIST_PERMISSION_MISSING: ClassVar["AWSCcmConfigValidationIssueCode"] + EXPORT_GET_PERMISSION_MISSING: ClassVar["AWSCcmConfigValidationIssueCode"] + EXPORT_NOT_FOUND: ClassVar["AWSCcmConfigValidationIssueCode"] + EXPORT_STATUS_UNHEALTHY: ClassVar["AWSCcmConfigValidationIssueCode"] + TIME_GRANULARITY_INVALID: ClassVar["AWSCcmConfigValidationIssueCode"] + FILE_FORMAT_INVALID: ClassVar["AWSCcmConfigValidationIssueCode"] + INCLUDE_RESOURCES_DISABLED: ClassVar["AWSCcmConfigValidationIssueCode"] + REFRESH_CADENCE_INVALID: ClassVar["AWSCcmConfigValidationIssueCode"] + OVERWRITE_MODE_INVALID: ClassVar["AWSCcmConfigValidationIssueCode"] + QUERY_STATEMENT_INVALID: ClassVar["AWSCcmConfigValidationIssueCode"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +AWSCcmConfigValidationIssueCode.ISSUE_CODE_UNSPECIFIED = AWSCcmConfigValidationIssueCode("ISSUE_CODE_UNSPECIFIED") +AWSCcmConfigValidationIssueCode.CREDENTIAL_ERROR = AWSCcmConfigValidationIssueCode("CREDENTIAL_ERROR") +AWSCcmConfigValidationIssueCode.BUCKET_NAME_INVALID_GOVCLOUD = AWSCcmConfigValidationIssueCode( + "BUCKET_NAME_INVALID_GOVCLOUD" +) +AWSCcmConfigValidationIssueCode.S3_LIST_PERMISSION_MISSING = AWSCcmConfigValidationIssueCode( + "S3_LIST_PERMISSION_MISSING" +) +AWSCcmConfigValidationIssueCode.S3_GET_PERMISSION_MISSING = AWSCcmConfigValidationIssueCode("S3_GET_PERMISSION_MISSING") +AWSCcmConfigValidationIssueCode.S3_BUCKET_REGION_MISMATCH = AWSCcmConfigValidationIssueCode("S3_BUCKET_REGION_MISMATCH") +AWSCcmConfigValidationIssueCode.S3_BUCKET_NOT_ACCESSIBLE = AWSCcmConfigValidationIssueCode("S3_BUCKET_NOT_ACCESSIBLE") +AWSCcmConfigValidationIssueCode.EXPORT_LIST_PERMISSION_MISSING = AWSCcmConfigValidationIssueCode( + "EXPORT_LIST_PERMISSION_MISSING" +) +AWSCcmConfigValidationIssueCode.EXPORT_GET_PERMISSION_MISSING = AWSCcmConfigValidationIssueCode( + "EXPORT_GET_PERMISSION_MISSING" +) +AWSCcmConfigValidationIssueCode.EXPORT_NOT_FOUND = AWSCcmConfigValidationIssueCode("EXPORT_NOT_FOUND") +AWSCcmConfigValidationIssueCode.EXPORT_STATUS_UNHEALTHY = AWSCcmConfigValidationIssueCode("EXPORT_STATUS_UNHEALTHY") +AWSCcmConfigValidationIssueCode.TIME_GRANULARITY_INVALID = AWSCcmConfigValidationIssueCode("TIME_GRANULARITY_INVALID") +AWSCcmConfigValidationIssueCode.FILE_FORMAT_INVALID = AWSCcmConfigValidationIssueCode("FILE_FORMAT_INVALID") +AWSCcmConfigValidationIssueCode.INCLUDE_RESOURCES_DISABLED = AWSCcmConfigValidationIssueCode( + "INCLUDE_RESOURCES_DISABLED" +) +AWSCcmConfigValidationIssueCode.REFRESH_CADENCE_INVALID = AWSCcmConfigValidationIssueCode("REFRESH_CADENCE_INVALID") +AWSCcmConfigValidationIssueCode.OVERWRITE_MODE_INVALID = AWSCcmConfigValidationIssueCode("OVERWRITE_MODE_INVALID") +AWSCcmConfigValidationIssueCode.QUERY_STATEMENT_INVALID = AWSCcmConfigValidationIssueCode("QUERY_STATEMENT_INVALID") diff --git a/src/datadog_api_client/v2/model/fleet_instrumented_pods_response.py b/src/datadog_api_client/v2/model/aws_ccm_config_validation_request.py similarity index 50% rename from src/datadog_api_client/v2/model/fleet_instrumented_pods_response.py rename to src/datadog_api_client/v2/model/aws_ccm_config_validation_request.py index 1d4917f364..040b30e015 100644 --- a/src/datadog_api_client/v2/model/fleet_instrumented_pods_response.py +++ b/src/datadog_api_client/v2/model/aws_ccm_config_validation_request.py @@ -12,28 +12,28 @@ if TYPE_CHECKING: - from datadog_api_client.v2.model.fleet_instrumented_pods_response_data import FleetInstrumentedPodsResponseData + from datadog_api_client.v2.model.aws_ccm_config_validation_request_data import AWSCcmConfigValidationRequestData -class FleetInstrumentedPodsResponse(ModelNormal): +class AWSCcmConfigValidationRequest(ModelNormal): @cached_property def openapi_types(_): - from datadog_api_client.v2.model.fleet_instrumented_pods_response_data import FleetInstrumentedPodsResponseData + from datadog_api_client.v2.model.aws_ccm_config_validation_request_data import AWSCcmConfigValidationRequestData return { - "data": (FleetInstrumentedPodsResponseData,), + "data": (AWSCcmConfigValidationRequestData,), } attribute_map = { "data": "data", } - def __init__(self_, data: FleetInstrumentedPodsResponseData, **kwargs): + def __init__(self_, data: AWSCcmConfigValidationRequestData, **kwargs): """ - Response containing instrumented pods for a Kubernetes cluster. + AWS CCM config validation request body. - :param data: The response data containing the cluster name and instrumented pod groups. - :type data: FleetInstrumentedPodsResponseData + :param data: AWS CCM config validation request data. + :type data: AWSCcmConfigValidationRequestData """ super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/aws_ccm_config_validation_request_attributes.py b/src/datadog_api_client/v2/model/aws_ccm_config_validation_request_attributes.py new file mode 100644 index 0000000000..c118a3e56b --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_ccm_config_validation_request_attributes.py @@ -0,0 +1,69 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class AWSCcmConfigValidationRequestAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "account_id": (str,), + "bucket_name": (str,), + "bucket_region": (str,), + "report_name": (str,), + "report_prefix": (str,), + } + + attribute_map = { + "account_id": "account_id", + "bucket_name": "bucket_name", + "bucket_region": "bucket_region", + "report_name": "report_name", + "report_prefix": "report_prefix", + } + + def __init__( + self_, + account_id: str, + bucket_name: str, + bucket_region: str, + report_name: str, + report_prefix: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + Attributes for an AWS CCM config validation request. + + :param account_id: Your AWS Account ID without dashes. + :type account_id: str + + :param bucket_name: Name of the S3 bucket where the Cost and Usage Report is stored. + :type bucket_name: str + + :param bucket_region: AWS region of the S3 bucket. + :type bucket_region: str + + :param report_name: Name of the Cost and Usage Report. + :type report_name: str + + :param report_prefix: S3 prefix where the Cost and Usage Report is stored. + :type report_prefix: str, optional + """ + if report_prefix is not unset: + kwargs["report_prefix"] = report_prefix + super().__init__(kwargs) + + self_.account_id = account_id + self_.bucket_name = bucket_name + self_.bucket_region = bucket_region + self_.report_name = report_name diff --git a/src/datadog_api_client/v2/model/aws_ccm_config_validation_request_data.py b/src/datadog_api_client/v2/model/aws_ccm_config_validation_request_data.py new file mode 100644 index 0000000000..ad51523a02 --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_ccm_config_validation_request_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.aws_ccm_config_validation_request_attributes import ( + AWSCcmConfigValidationRequestAttributes, + ) + from datadog_api_client.v2.model.aws_ccm_config_validation_type import AWSCcmConfigValidationType + + +class AWSCcmConfigValidationRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.aws_ccm_config_validation_request_attributes import ( + AWSCcmConfigValidationRequestAttributes, + ) + from datadog_api_client.v2.model.aws_ccm_config_validation_type import AWSCcmConfigValidationType + + return { + "attributes": (AWSCcmConfigValidationRequestAttributes,), + "type": (AWSCcmConfigValidationType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, attributes: AWSCcmConfigValidationRequestAttributes, type: AWSCcmConfigValidationType, **kwargs + ): + """ + AWS CCM config validation request data. + + :param attributes: Attributes for an AWS CCM config validation request. + :type attributes: AWSCcmConfigValidationRequestAttributes + + :param type: AWS CCM config validation resource type. + :type type: AWSCcmConfigValidationType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/aws_ccm_config_validation_response.py b/src/datadog_api_client/v2/model/aws_ccm_config_validation_response.py new file mode 100644 index 0000000000..0e5c4dfaad --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_ccm_config_validation_response.py @@ -0,0 +1,42 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.aws_ccm_config_validation_response_data import AWSCcmConfigValidationResponseData + + +class AWSCcmConfigValidationResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.aws_ccm_config_validation_response_data import ( + AWSCcmConfigValidationResponseData, + ) + + return { + "data": (AWSCcmConfigValidationResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: AWSCcmConfigValidationResponseData, **kwargs): + """ + AWS CCM config validation response body. + + :param data: AWS CCM config validation response data. + :type data: AWSCcmConfigValidationResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/aws_ccm_config_validation_response_attributes.py b/src/datadog_api_client/v2/model/aws_ccm_config_validation_response_attributes.py new file mode 100644 index 0000000000..b4bc8cb32d --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_ccm_config_validation_response_attributes.py @@ -0,0 +1,46 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.aws_ccm_config_validation_issue import AWSCcmConfigValidationIssue + + +class AWSCcmConfigValidationResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.aws_ccm_config_validation_issue import AWSCcmConfigValidationIssue + + return { + "account_id": (str,), + "issues": ([AWSCcmConfigValidationIssue],), + } + + attribute_map = { + "account_id": "account_id", + "issues": "issues", + } + + def __init__(self_, account_id: str, issues: List[AWSCcmConfigValidationIssue], **kwargs): + """ + Attributes for an AWS CCM config validation response. + + :param account_id: Your AWS Account ID without dashes. + :type account_id: str + + :param issues: List of validation issues found for the Cost and Usage Report (CUR) 2.0 configuration. Empty when the configuration is valid. + :type issues: [AWSCcmConfigValidationIssue] + """ + super().__init__(kwargs) + + self_.account_id = account_id + self_.issues = issues diff --git a/src/datadog_api_client/v2/model/aws_ccm_config_validation_response_data.py b/src/datadog_api_client/v2/model/aws_ccm_config_validation_response_data.py new file mode 100644 index 0000000000..f902587b04 --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_ccm_config_validation_response_data.py @@ -0,0 +1,60 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.aws_ccm_config_validation_response_attributes import ( + AWSCcmConfigValidationResponseAttributes, + ) + from datadog_api_client.v2.model.aws_ccm_config_validation_type import AWSCcmConfigValidationType + + +class AWSCcmConfigValidationResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.aws_ccm_config_validation_response_attributes import ( + AWSCcmConfigValidationResponseAttributes, + ) + from datadog_api_client.v2.model.aws_ccm_config_validation_type import AWSCcmConfigValidationType + + return { + "attributes": (AWSCcmConfigValidationResponseAttributes,), + "id": (str,), + "type": (AWSCcmConfigValidationType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, attributes: AWSCcmConfigValidationResponseAttributes, id: str, type: AWSCcmConfigValidationType, **kwargs + ): + """ + AWS CCM config validation response data. + + :param attributes: Attributes for an AWS CCM config validation response. + :type attributes: AWSCcmConfigValidationResponseAttributes + + :param id: AWS CCM config validation resource identifier. + :type id: str + + :param type: AWS CCM config validation resource type. + :type type: AWSCcmConfigValidationType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/aws_ccm_config_validation_type.py b/src/datadog_api_client/v2/model/aws_ccm_config_validation_type.py new file mode 100644 index 0000000000..4ce303ecd0 --- /dev/null +++ b/src/datadog_api_client/v2/model/aws_ccm_config_validation_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class AWSCcmConfigValidationType(ModelSimple): + """ + AWS CCM config validation resource type. + + :param value: If omitted defaults to "ccm_config_validation". Must be one of ["ccm_config_validation"]. + :type value: str + """ + + allowed_values = { + "ccm_config_validation", + } + CCM_CONFIG_VALIDATION: ClassVar["AWSCcmConfigValidationType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +AWSCcmConfigValidationType.CCM_CONFIG_VALIDATION = AWSCcmConfigValidationType("ccm_config_validation") diff --git a/src/datadog_api_client/v2/model/clone_form_data.py b/src/datadog_api_client/v2/model/clone_form_data.py new file mode 100644 index 0000000000..1b67fd0ad8 --- /dev/null +++ b/src/datadog_api_client/v2/model/clone_form_data.py @@ -0,0 +1,51 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.clone_form_data_attributes import CloneFormDataAttributes + from datadog_api_client.v2.model.form_type import FormType + + +class CloneFormData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.clone_form_data_attributes import CloneFormDataAttributes + from datadog_api_client.v2.model.form_type import FormType + + return { + "attributes": (CloneFormDataAttributes,), + "type": (FormType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, type: FormType, attributes: Union[CloneFormDataAttributes, UnsetType] = unset, **kwargs): + """ + The data for cloning a form. + + :param attributes: The attributes for cloning a form. + :type attributes: CloneFormDataAttributes, optional + + :param type: The resource type for a form. + :type type: FormType + """ + if attributes is not unset: + kwargs["attributes"] = attributes + super().__init__(kwargs) + + self_.type = type diff --git a/src/datadog_api_client/v2/model/fleet_clusters_response_meta.py b/src/datadog_api_client/v2/model/clone_form_data_attributes.py similarity index 50% rename from src/datadog_api_client/v2/model/fleet_clusters_response_meta.py rename to src/datadog_api_client/v2/model/clone_form_data_attributes.py index 6ea841f9f4..f7b3443077 100644 --- a/src/datadog_api_client/v2/model/fleet_clusters_response_meta.py +++ b/src/datadog_api_client/v2/model/clone_form_data_attributes.py @@ -13,24 +13,24 @@ ) -class FleetClustersResponseMeta(ModelNormal): +class CloneFormDataAttributes(ModelNormal): @cached_property def openapi_types(_): return { - "total_filtered_count": (int,), + "name": (str,), } attribute_map = { - "total_filtered_count": "total_filtered_count", + "name": "name", } - def __init__(self_, total_filtered_count: Union[int, UnsetType] = unset, **kwargs): + def __init__(self_, name: Union[str, UnsetType] = unset, **kwargs): """ - Metadata for the list of clusters response. + The attributes for cloning a form. - :param total_filtered_count: Total number of clusters matching the filter criteria across all pages. - :type total_filtered_count: int, optional + :param name: The name for the cloned form. Defaults to "Copy of (source form name)" if not provided. + :type name: str, optional """ - if total_filtered_count is not unset: - kwargs["total_filtered_count"] = total_filtered_count + if name is not unset: + kwargs["name"] = name super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/clone_form_request.py b/src/datadog_api_client/v2/model/clone_form_request.py new file mode 100644 index 0000000000..680a6b7095 --- /dev/null +++ b/src/datadog_api_client/v2/model/clone_form_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.clone_form_data import CloneFormData + + +class CloneFormRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.clone_form_data import CloneFormData + + return { + "data": (CloneFormData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: CloneFormData, **kwargs): + """ + A request to clone a form. + + :param data: The data for cloning a form. + :type data: CloneFormData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/create_form_data.py b/src/datadog_api_client/v2/model/create_form_data.py new file mode 100644 index 0000000000..554bfd1fbe --- /dev/null +++ b/src/datadog_api_client/v2/model/create_form_data.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.create_form_data_attributes import CreateFormDataAttributes + from datadog_api_client.v2.model.form_type import FormType + + +class CreateFormData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.create_form_data_attributes import CreateFormDataAttributes + from datadog_api_client.v2.model.form_type import FormType + + return { + "attributes": (CreateFormDataAttributes,), + "type": (FormType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: CreateFormDataAttributes, type: FormType, **kwargs): + """ + The data for creating a form. + + :param attributes: The attributes for creating a form. + :type attributes: CreateFormDataAttributes + + :param type: The resource type for a form. + :type type: FormType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/create_form_data_attributes.py b/src/datadog_api_client/v2/model/create_form_data_attributes.py new file mode 100644 index 0000000000..f4bf060db2 --- /dev/null +++ b/src/datadog_api_client/v2/model/create_form_data_attributes.py @@ -0,0 +1,94 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_data_definition import FormDataDefinition + from datadog_api_client.v2.model.form_ui_definition import FormUiDefinition + + +class CreateFormDataAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_data_definition import FormDataDefinition + from datadog_api_client.v2.model.form_ui_definition import FormUiDefinition + + return { + "anonymous": (bool,), + "data_definition": (FormDataDefinition,), + "description": (str,), + "idp_survey": (bool,), + "name": (str,), + "single_response": (bool,), + "ui_definition": (FormUiDefinition,), + } + + attribute_map = { + "anonymous": "anonymous", + "data_definition": "data_definition", + "description": "description", + "idp_survey": "idp_survey", + "name": "name", + "single_response": "single_response", + "ui_definition": "ui_definition", + } + + def __init__( + self_, + data_definition: FormDataDefinition, + name: str, + ui_definition: FormUiDefinition, + anonymous: Union[bool, UnsetType] = unset, + description: Union[str, UnsetType] = unset, + idp_survey: Union[bool, UnsetType] = unset, + single_response: Union[bool, UnsetType] = unset, + **kwargs, + ): + """ + The attributes for creating a form. + + :param anonymous: Whether the form accepts anonymous submissions. + :type anonymous: bool, optional + + :param data_definition: A JSON Schema definition that describes the form's data fields. + :type data_definition: FormDataDefinition + + :param description: The description of the form. + :type description: str, optional + + :param idp_survey: Whether the form is an IDP survey. + :type idp_survey: bool, optional + + :param name: The name of the form. + :type name: str + + :param single_response: Whether each user can only submit one response. + :type single_response: bool, optional + + :param ui_definition: UI configuration for rendering form fields, including widget overrides, field ordering, and themes. + :type ui_definition: FormUiDefinition + """ + if anonymous is not unset: + kwargs["anonymous"] = anonymous + if description is not unset: + kwargs["description"] = description + if idp_survey is not unset: + kwargs["idp_survey"] = idp_survey + if single_response is not unset: + kwargs["single_response"] = single_response + super().__init__(kwargs) + + self_.data_definition = data_definition + self_.name = name + self_.ui_definition = ui_definition diff --git a/src/datadog_api_client/v2/model/create_form_request.py b/src/datadog_api_client/v2/model/create_form_request.py new file mode 100644 index 0000000000..2c4b71f157 --- /dev/null +++ b/src/datadog_api_client/v2/model/create_form_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.create_form_data import CreateFormData + + +class CreateFormRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.create_form_data import CreateFormData + + return { + "data": (CreateFormData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: CreateFormData, **kwargs): + """ + A request to create a form. + + :param data: The data for creating a form. + :type data: CreateFormData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/create_notification_rule_parameters_data_attributes.py b/src/datadog_api_client/v2/model/create_notification_rule_parameters_data_attributes.py index 5bb5837e38..5fb9b7be1d 100644 --- a/src/datadog_api_client/v2/model/create_notification_rule_parameters_data_attributes.py +++ b/src/datadog_api_client/v2/model/create_notification_rule_parameters_data_attributes.py @@ -14,17 +14,20 @@ if TYPE_CHECKING: + from datadog_api_client.v2.model.notification_rule_routing import NotificationRuleRouting from datadog_api_client.v2.model.selectors import Selectors class CreateNotificationRuleParametersDataAttributes(ModelNormal): @cached_property def openapi_types(_): + from datadog_api_client.v2.model.notification_rule_routing import NotificationRuleRouting from datadog_api_client.v2.model.selectors import Selectors return { "enabled": (bool,), "name": (str,), + "routing": (NotificationRuleRouting,), "selectors": (Selectors,), "targets": ([str],), "time_aggregation": (int,), @@ -33,6 +36,7 @@ def openapi_types(_): attribute_map = { "enabled": "enabled", "name": "name", + "routing": "routing", "selectors": "selectors", "targets": "targets", "time_aggregation": "time_aggregation", @@ -44,6 +48,7 @@ def __init__( selectors: Selectors, targets: List[str], enabled: Union[bool, UnsetType] = unset, + routing: Union[NotificationRuleRouting, UnsetType] = unset, time_aggregation: Union[int, UnsetType] = unset, **kwargs, ): @@ -56,6 +61,9 @@ def __init__( :param name: Name of the notification rule. :type name: str + :param routing: Routing configuration for the notification rule. + :type routing: NotificationRuleRouting, optional + :param selectors: Selectors are used to filter security issues for which notifications should be generated. Users can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source. Only the trigger_source field is required. @@ -75,6 +83,8 @@ def __init__( """ if enabled is not unset: kwargs["enabled"] = enabled + if routing is not unset: + kwargs["routing"] = routing if time_aggregation is not unset: kwargs["time_aggregation"] = time_aggregation super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/csm_agentless_host_attributes.py b/src/datadog_api_client/v2/model/csm_agentless_host_attributes.py new file mode 100644 index 0000000000..aa416f3c1c --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_agentless_host_attributes.py @@ -0,0 +1,74 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.csm_cloud_provider import CsmCloudProvider + from datadog_api_client.v2.model.csm_agentless_host_resource_type import CsmAgentlessHostResourceType + + +class CsmAgentlessHostAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.csm_cloud_provider import CsmCloudProvider + from datadog_api_client.v2.model.csm_agentless_host_resource_type import CsmAgentlessHostResourceType + + return { + "account_id": (str,), + "cloud_provider": (CsmCloudProvider,), + "has_posture_management": (bool,), + "has_vulnerability_scanning": (bool,), + "resource_type": (CsmAgentlessHostResourceType,), + } + + attribute_map = { + "account_id": "account_id", + "cloud_provider": "cloud_provider", + "has_posture_management": "has_posture_management", + "has_vulnerability_scanning": "has_vulnerability_scanning", + "resource_type": "resource_type", + } + + def __init__( + self_, + account_id: str, + cloud_provider: CsmCloudProvider, + has_posture_management: bool, + has_vulnerability_scanning: bool, + resource_type: CsmAgentlessHostResourceType, + **kwargs, + ): + """ + Attributes of an agentless host. + + :param account_id: The ID of the cloud account that the host belongs to. + :type account_id: str + + :param cloud_provider: The cloud provider of a host resource. + :type cloud_provider: CsmCloudProvider + + :param has_posture_management: Whether CSM Misconfigurations is enabled for this host. ``true`` if enabled; ``false`` if disabled. + :type has_posture_management: bool + + :param has_vulnerability_scanning: Whether CSM Vulnerabilities is enabled for this host. ``true`` if enabled; ``false`` if disabled. + :type has_vulnerability_scanning: bool + + :param resource_type: The type of cloud resource for an agentless host. + :type resource_type: CsmAgentlessHostResourceType + """ + super().__init__(kwargs) + + self_.account_id = account_id + self_.cloud_provider = cloud_provider + self_.has_posture_management = has_posture_management + self_.has_vulnerability_scanning = has_vulnerability_scanning + self_.resource_type = resource_type diff --git a/src/datadog_api_client/v2/model/csm_agentless_host_data.py b/src/datadog_api_client/v2/model/csm_agentless_host_data.py new file mode 100644 index 0000000000..2e2faed313 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_agentless_host_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.csm_agentless_host_attributes import CsmAgentlessHostAttributes + from datadog_api_client.v2.model.csm_agentless_host_type import CsmAgentlessHostType + + +class CsmAgentlessHostData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.csm_agentless_host_attributes import CsmAgentlessHostAttributes + from datadog_api_client.v2.model.csm_agentless_host_type import CsmAgentlessHostType + + return { + "attributes": (CsmAgentlessHostAttributes,), + "id": (str,), + "type": (CsmAgentlessHostType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: CsmAgentlessHostAttributes, id: str, type: CsmAgentlessHostType, **kwargs): + """ + A single agentless host resource. + + :param attributes: Attributes of an agentless host. + :type attributes: CsmAgentlessHostAttributes + + :param id: The resource identifier of the agentless host. + :type id: str + + :param type: The JSON:API type for agentless host resources. The value should always be ``agentless_host``. + :type type: CsmAgentlessHostType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/csm_agentless_host_facet_attributes.py b/src/datadog_api_client/v2/model/csm_agentless_host_facet_attributes.py new file mode 100644 index 0000000000..80984aa4be --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_agentless_host_facet_attributes.py @@ -0,0 +1,122 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class CsmAgentlessHostFacetAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "bounded": (bool,), + "bundled": (bool,), + "bundled_and_used": (bool,), + "default_values": ([str],), + "description": (str,), + "editable": (bool,), + "facet_type": (str,), + "groups": ([str],), + "name": (str,), + "path": (str,), + "source": (str,), + "type": (str,), + "values": ([str],), + } + + attribute_map = { + "bounded": "bounded", + "bundled": "bundled", + "bundled_and_used": "bundledAndUsed", + "default_values": "defaultValues", + "description": "description", + "editable": "editable", + "facet_type": "facetType", + "groups": "groups", + "name": "name", + "path": "path", + "source": "source", + "type": "type", + "values": "values", + } + + def __init__( + self_, + bounded: bool, + bundled: bool, + bundled_and_used: bool, + default_values: List[str], + description: str, + editable: bool, + facet_type: str, + groups: List[str], + name: str, + path: str, + source: str, + type: str, + values: List[str], + **kwargs, + ): + """ + Attributes of an agentless host facet. + + :param bounded: Whether the facet has a bounded set of allowed values. ``true`` indicates a fixed value set and ``false`` indicates free-form values. + :type bounded: bool + + :param bundled: Whether the facet is bundled as part of the default facet set. ``true`` indicates bundled and ``false`` indicates custom. + :type bundled: bool + + :param bundled_and_used: Whether the facet is both bundled and actively used. ``true`` indicates in use; ``false`` indicates unused. + :type bundled_and_used: bool + + :param default_values: The list of default filter values for the facet. + :type default_values: [str] + + :param description: A human-readable description of what the facet represents. + :type description: str + + :param editable: Whether the facet can be edited by users. ``true`` indicates editable; ``false`` indicates read-only. + :type editable: bool + + :param facet_type: The UI display type for the facet, such as ``list``. + :type facet_type: str + + :param groups: The list of UI groups that this facet belongs to. + :type groups: [str] + + :param name: The display name of the facet. + :type name: str + + :param path: The field path used when filtering by this facet. + :type path: str + + :param source: The data source that provides the facet values. + :type source: str + + :param type: The data type of the facet values. + :type type: str + + :param values: The list of allowed filter values for bounded facets. Empty for unbounded facets. + :type values: [str] + """ + super().__init__(kwargs) + + self_.bounded = bounded + self_.bundled = bundled + self_.bundled_and_used = bundled_and_used + self_.default_values = default_values + self_.description = description + self_.editable = editable + self_.facet_type = facet_type + self_.groups = groups + self_.name = name + self_.path = path + self_.source = source + self_.type = type + self_.values = values diff --git a/src/datadog_api_client/v2/model/csm_agentless_host_facet_data.py b/src/datadog_api_client/v2/model/csm_agentless_host_facet_data.py new file mode 100644 index 0000000000..f6bcb0f951 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_agentless_host_facet_data.py @@ -0,0 +1,56 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.csm_agentless_host_facet_attributes import CsmAgentlessHostFacetAttributes + from datadog_api_client.v2.model.csm_agentless_host_facet_type import CsmAgentlessHostFacetType + + +class CsmAgentlessHostFacetData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.csm_agentless_host_facet_attributes import CsmAgentlessHostFacetAttributes + from datadog_api_client.v2.model.csm_agentless_host_facet_type import CsmAgentlessHostFacetType + + return { + "attributes": (CsmAgentlessHostFacetAttributes,), + "id": (str,), + "type": (CsmAgentlessHostFacetType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, attributes: CsmAgentlessHostFacetAttributes, id: str, type: CsmAgentlessHostFacetType, **kwargs + ): + """ + A single agentless host facet resource. + + :param attributes: Attributes of an agentless host facet. + :type attributes: CsmAgentlessHostFacetAttributes + + :param id: The identifier of the facet, corresponding to the field path. + :type id: str + + :param type: The JSON:API type for agentless host facet resources. The value should always be ``agentless_host_facet``. + :type type: CsmAgentlessHostFacetType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/csm_agentless_host_facet_type.py b/src/datadog_api_client/v2/model/csm_agentless_host_facet_type.py new file mode 100644 index 0000000000..f416531b93 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_agentless_host_facet_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class CsmAgentlessHostFacetType(ModelSimple): + """ + The JSON:API type for agentless host facet resources. The value should always be `agentless_host_facet`. + + :param value: If omitted defaults to "agentless_host_facet". Must be one of ["agentless_host_facet"]. + :type value: str + """ + + allowed_values = { + "agentless_host_facet", + } + AGENTLESS_HOST_FACET: ClassVar["CsmAgentlessHostFacetType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +CsmAgentlessHostFacetType.AGENTLESS_HOST_FACET = CsmAgentlessHostFacetType("agentless_host_facet") diff --git a/src/datadog_api_client/v2/model/csm_agentless_host_facets_response.py b/src/datadog_api_client/v2/model/csm_agentless_host_facets_response.py new file mode 100644 index 0000000000..7c933c53b1 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_agentless_host_facets_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.csm_agentless_host_facet_data import CsmAgentlessHostFacetData + + +class CsmAgentlessHostFacetsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.csm_agentless_host_facet_data import CsmAgentlessHostFacetData + + return { + "data": ([CsmAgentlessHostFacetData],), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: List[CsmAgentlessHostFacetData], **kwargs): + """ + The response returned when listing facets for agentless hosts. + + :param data: The list of available facets for agentless hosts. + :type data: [CsmAgentlessHostFacetData] + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/csm_agentless_host_resource_type.py b/src/datadog_api_client/v2/model/csm_agentless_host_resource_type.py new file mode 100644 index 0000000000..22efe8e5b5 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_agentless_host_resource_type.py @@ -0,0 +1,46 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class CsmAgentlessHostResourceType(ModelSimple): + """ + The type of cloud resource for an agentless host. + + :param value: Must be one of ["aws_ec2_instance", "azure_virtual_machine_instance", "gcp_compute_instance", "oci_instance"]. + :type value: str + """ + + allowed_values = { + "aws_ec2_instance", + "azure_virtual_machine_instance", + "gcp_compute_instance", + "oci_instance", + } + AWS_EC2_INSTANCE: ClassVar["CsmAgentlessHostResourceType"] + AZURE_VIRTUAL_MACHINE_INSTANCE: ClassVar["CsmAgentlessHostResourceType"] + GCP_COMPUTE_INSTANCE: ClassVar["CsmAgentlessHostResourceType"] + OCI_INSTANCE: ClassVar["CsmAgentlessHostResourceType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +CsmAgentlessHostResourceType.AWS_EC2_INSTANCE = CsmAgentlessHostResourceType("aws_ec2_instance") +CsmAgentlessHostResourceType.AZURE_VIRTUAL_MACHINE_INSTANCE = CsmAgentlessHostResourceType( + "azure_virtual_machine_instance" +) +CsmAgentlessHostResourceType.GCP_COMPUTE_INSTANCE = CsmAgentlessHostResourceType("gcp_compute_instance") +CsmAgentlessHostResourceType.OCI_INSTANCE = CsmAgentlessHostResourceType("oci_instance") diff --git a/src/datadog_api_client/v2/model/csm_agentless_host_type.py b/src/datadog_api_client/v2/model/csm_agentless_host_type.py new file mode 100644 index 0000000000..5c9463fe0e --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_agentless_host_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class CsmAgentlessHostType(ModelSimple): + """ + The JSON:API type for agentless host resources. The value should always be `agentless_host`. + + :param value: If omitted defaults to "agentless_host". Must be one of ["agentless_host"]. + :type value: str + """ + + allowed_values = { + "agentless_host", + } + AGENTLESS_HOST: ClassVar["CsmAgentlessHostType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +CsmAgentlessHostType.AGENTLESS_HOST = CsmAgentlessHostType("agentless_host") diff --git a/src/datadog_api_client/v2/model/csm_agentless_hosts_response.py b/src/datadog_api_client/v2/model/csm_agentless_hosts_response.py new file mode 100644 index 0000000000..3896747113 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_agentless_hosts_response.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.csm_agentless_host_data import CsmAgentlessHostData + from datadog_api_client.v2.model.csm_settings_meta import CsmSettingsMeta + + +class CsmAgentlessHostsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.csm_agentless_host_data import CsmAgentlessHostData + from datadog_api_client.v2.model.csm_settings_meta import CsmSettingsMeta + + return { + "data": ([CsmAgentlessHostData],), + "meta": (CsmSettingsMeta,), + } + + attribute_map = { + "data": "data", + "meta": "meta", + } + + def __init__(self_, data: List[CsmAgentlessHostData], meta: CsmSettingsMeta, **kwargs): + """ + The response returned when listing agentless hosts. + + :param data: The list of agentless hosts for the current page. + :type data: [CsmAgentlessHostData] + + :param meta: Pagination metadata for a CSM settings list response. + :type meta: CsmSettingsMeta + """ + super().__init__(kwargs) + + self_.data = data + self_.meta = meta diff --git a/src/datadog_api_client/v2/model/csm_cloud_provider.py b/src/datadog_api_client/v2/model/csm_cloud_provider.py new file mode 100644 index 0000000000..0103d2bf79 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_cloud_provider.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class CsmCloudProvider(ModelSimple): + """ + The cloud provider of a host resource. + + :param value: Must be one of ["aws", "gcp", "azure", "oci"]. + :type value: str + """ + + allowed_values = { + "aws", + "gcp", + "azure", + "oci", + } + AWS: ClassVar["CsmCloudProvider"] + GCP: ClassVar["CsmCloudProvider"] + AZURE: ClassVar["CsmCloudProvider"] + OCI: ClassVar["CsmCloudProvider"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +CsmCloudProvider.AWS = CsmCloudProvider("aws") +CsmCloudProvider.GCP = CsmCloudProvider("gcp") +CsmCloudProvider.AZURE = CsmCloudProvider("azure") +CsmCloudProvider.OCI = CsmCloudProvider("oci") diff --git a/src/datadog_api_client/v2/model/csm_facet_info_type.py b/src/datadog_api_client/v2/model/csm_facet_info_type.py new file mode 100644 index 0000000000..e61e1d7ad7 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_facet_info_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class CsmFacetInfoType(ModelSimple): + """ + The JSON:API type for facet info resources. The value should always be `facet_info`. + + :param value: If omitted defaults to "facet_info". Must be one of ["facet_info"]. + :type value: str + """ + + allowed_values = { + "facet_info", + } + FACET_INFO: ClassVar["CsmFacetInfoType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +CsmFacetInfoType.FACET_INFO = CsmFacetInfoType("facet_info") diff --git a/src/datadog_api_client/v2/model/csm_host_facet_info_attributes.py b/src/datadog_api_client/v2/model/csm_host_facet_info_attributes.py new file mode 100644 index 0000000000..2c1d432db5 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_host_facet_info_attributes.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.csm_host_facet_info_item import CsmHostFacetInfoItem + + +class CsmHostFacetInfoAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.csm_host_facet_info_item import CsmHostFacetInfoItem + + return { + "items": ([CsmHostFacetInfoItem],), + } + + attribute_map = { + "items": "items", + } + + def __init__(self_, items: List[CsmHostFacetInfoItem], **kwargs): + """ + Attributes of a facet info response, containing the value distribution for the requested facet. + + :param items: The list of facet value entries for the current page. + :type items: [CsmHostFacetInfoItem] + """ + super().__init__(kwargs) + + self_.items = items diff --git a/src/datadog_api_client/v2/model/csm_host_facet_info_data.py b/src/datadog_api_client/v2/model/csm_host_facet_info_data.py new file mode 100644 index 0000000000..0f0c887951 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_host_facet_info_data.py @@ -0,0 +1,69 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.csm_host_facet_info_attributes import CsmHostFacetInfoAttributes + from datadog_api_client.v2.model.csm_host_facet_info_meta import CsmHostFacetInfoMeta + from datadog_api_client.v2.model.csm_facet_info_type import CsmFacetInfoType + + +class CsmHostFacetInfoData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.csm_host_facet_info_attributes import CsmHostFacetInfoAttributes + from datadog_api_client.v2.model.csm_host_facet_info_meta import CsmHostFacetInfoMeta + from datadog_api_client.v2.model.csm_facet_info_type import CsmFacetInfoType + + return { + "attributes": (CsmHostFacetInfoAttributes,), + "id": (str,), + "meta": (CsmHostFacetInfoMeta,), + "type": (CsmFacetInfoType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "meta": "meta", + "type": "type", + } + + def __init__( + self_, + attributes: CsmHostFacetInfoAttributes, + id: str, + meta: CsmHostFacetInfoMeta, + type: CsmFacetInfoType, + **kwargs, + ): + """ + The data wrapper for a facet info response. + + :param attributes: Attributes of a facet info response, containing the value distribution for the requested facet. + :type attributes: CsmHostFacetInfoAttributes + + :param id: The identifier of the facet. + :type id: str + + :param meta: Metadata for the facet info response. + :type meta: CsmHostFacetInfoMeta + + :param type: The JSON:API type for facet info resources. The value should always be ``facet_info``. + :type type: CsmFacetInfoType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.meta = meta + self_.type = type diff --git a/src/datadog_api_client/v2/model/csm_host_facet_info_item.py b/src/datadog_api_client/v2/model/csm_host_facet_info_item.py new file mode 100644 index 0000000000..ebeb874263 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_host_facet_info_item.py @@ -0,0 +1,39 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class CsmHostFacetInfoItem(ModelNormal): + @cached_property + def openapi_types(_): + return { + "count": (int,), + "value": (str,), + } + + attribute_map = { + "count": "count", + "value": "value", + } + + def __init__(self_, count: int, value: str, **kwargs): + """ + A single value and its occurrence count for a facet. + + :param count: The number of resources with this facet value. + :type count: int + + :param value: The facet value. + :type value: str + """ + super().__init__(kwargs) + + self_.count = count + self_.value = value diff --git a/src/datadog_api_client/v2/model/csm_host_facet_info_meta.py b/src/datadog_api_client/v2/model/csm_host_facet_info_meta.py new file mode 100644 index 0000000000..0335548a8c --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_host_facet_info_meta.py @@ -0,0 +1,33 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class CsmHostFacetInfoMeta(ModelNormal): + @cached_property + def openapi_types(_): + return { + "total_count": (int,), + } + + attribute_map = { + "total_count": "total_count", + } + + def __init__(self_, total_count: int, **kwargs): + """ + Metadata for the facet info response. + + :param total_count: The total number of distinct values for this facet. + :type total_count: int + """ + super().__init__(kwargs) + + self_.total_count = total_count diff --git a/src/datadog_api_client/v2/model/csm_host_facet_info_response.py b/src/datadog_api_client/v2/model/csm_host_facet_info_response.py new file mode 100644 index 0000000000..a46c1ff7f0 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_host_facet_info_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.csm_host_facet_info_data import CsmHostFacetInfoData + + +class CsmHostFacetInfoResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.csm_host_facet_info_data import CsmHostFacetInfoData + + return { + "data": (CsmHostFacetInfoData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: CsmHostFacetInfoData, **kwargs): + """ + The response returned when requesting value distribution for a specific facet. + + :param data: The data wrapper for a facet info response. + :type data: CsmHostFacetInfoData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/csm_settings_meta.py b/src/datadog_api_client/v2/model/csm_settings_meta.py new file mode 100644 index 0000000000..4b86a86ebf --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_settings_meta.py @@ -0,0 +1,45 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class CsmSettingsMeta(ModelNormal): + @cached_property + def openapi_types(_): + return { + "page_index": (int,), + "page_size": (int,), + "total_filtered": (int,), + } + + attribute_map = { + "page_index": "page_index", + "page_size": "page_size", + "total_filtered": "total_filtered", + } + + def __init__(self_, page_index: int, page_size: int, total_filtered: int, **kwargs): + """ + Pagination metadata for a CSM settings list response. + + :param page_index: The current page index (zero-based). + :type page_index: int + + :param page_size: The number of resources returned per page. + :type page_size: int + + :param total_filtered: The total number of resources matching the filter criteria. + :type total_filtered: int + """ + super().__init__(kwargs) + + self_.page_index = page_index + self_.page_size = page_size + self_.total_filtered = total_filtered diff --git a/src/datadog_api_client/v2/model/csm_unified_host_attributes.py b/src/datadog_api_client/v2/model/csm_unified_host_attributes.py new file mode 100644 index 0000000000..c3a3a05b7d --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_unified_host_attributes.py @@ -0,0 +1,179 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.csm_cloud_provider import CsmCloudProvider + from datadog_api_client.v2.model.csm_agentless_host_resource_type import CsmAgentlessHostResourceType + from datadog_api_client.v2.model.csm_unified_host_source import CsmUnifiedHostSource + + +class CsmUnifiedHostAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.csm_cloud_provider import CsmCloudProvider + from datadog_api_client.v2.model.csm_agentless_host_resource_type import CsmAgentlessHostResourceType + from datadog_api_client.v2.model.csm_unified_host_source import CsmUnifiedHostSource + + return { + "account_id": (str, none_type), + "agent_csm_vm_containers_enabled": (bool, none_type), + "agent_csm_vm_hosts_enabled": (bool, none_type), + "agent_cws_enabled": (bool, none_type), + "agent_posture_management": (bool, none_type), + "agent_version": (str, none_type), + "agentless_posture_management": (bool, none_type), + "agentless_vulnerability_scanning": (bool, none_type), + "cloud_provider": (CsmCloudProvider,), + "cluster_name": (str, none_type), + "datadog_agent_key": (str, none_type), + "env": ([str], none_type), + "host_id": (int, none_type), + "install_method_tool": (str, none_type), + "os": (str, none_type), + "resource_type": (CsmAgentlessHostResourceType,), + "source": (CsmUnifiedHostSource,), + } + + attribute_map = { + "account_id": "account_id", + "agent_csm_vm_containers_enabled": "agent_csm_vm_containers_enabled", + "agent_csm_vm_hosts_enabled": "agent_csm_vm_hosts_enabled", + "agent_cws_enabled": "agent_cws_enabled", + "agent_posture_management": "agent_posture_management", + "agent_version": "agent_version", + "agentless_posture_management": "agentless_posture_management", + "agentless_vulnerability_scanning": "agentless_vulnerability_scanning", + "cloud_provider": "cloud_provider", + "cluster_name": "cluster_name", + "datadog_agent_key": "datadog_agent_key", + "env": "env", + "host_id": "host_id", + "install_method_tool": "install_method_tool", + "os": "os", + "resource_type": "resource_type", + "source": "source", + } + + def __init__( + self_, + source: CsmUnifiedHostSource, + account_id: Union[str, none_type, UnsetType] = unset, + agent_csm_vm_containers_enabled: Union[bool, none_type, UnsetType] = unset, + agent_csm_vm_hosts_enabled: Union[bool, none_type, UnsetType] = unset, + agent_cws_enabled: Union[bool, none_type, UnsetType] = unset, + agent_posture_management: Union[bool, none_type, UnsetType] = unset, + agent_version: Union[str, none_type, UnsetType] = unset, + agentless_posture_management: Union[bool, none_type, UnsetType] = unset, + agentless_vulnerability_scanning: Union[bool, none_type, UnsetType] = unset, + cloud_provider: Union[CsmCloudProvider, UnsetType] = unset, + cluster_name: Union[str, none_type, UnsetType] = unset, + datadog_agent_key: Union[str, none_type, UnsetType] = unset, + env: Union[List[str], none_type, UnsetType] = unset, + host_id: Union[int, none_type, UnsetType] = unset, + install_method_tool: Union[str, none_type, UnsetType] = unset, + os: Union[str, none_type, UnsetType] = unset, + resource_type: Union[CsmAgentlessHostResourceType, UnsetType] = unset, + **kwargs, + ): + """ + Attributes of a unified host, combining data from agent and agentless sources. + + :param account_id: The ID of the cloud account that the host belongs to. Present only when the host was discovered through agentless scanning. + :type account_id: str, none_type, optional + + :param agent_csm_vm_containers_enabled: Whether CSM Vulnerabilities is enabled for containers through the Datadog Agent. ``true`` if enabled; ``false`` if disabled. + :type agent_csm_vm_containers_enabled: bool, none_type, optional + + :param agent_csm_vm_hosts_enabled: Whether CSM Vulnerabilities is enabled for hosts through the Datadog Agent. ``true`` if enabled; ``false`` if disabled. + :type agent_csm_vm_hosts_enabled: bool, none_type, optional + + :param agent_cws_enabled: Whether CSM Threats is enabled for this host through the Datadog Agent. ``true`` if enabled; ``false`` if disabled. + :type agent_cws_enabled: bool, none_type, optional + + :param agent_posture_management: Whether CSM Misconfigurations is enabled for this host through the Datadog Agent. ``true`` if enabled; ``false`` if disabled. + :type agent_posture_management: bool, none_type, optional + + :param agent_version: The version of the Datadog Agent running on this host. + :type agent_version: str, none_type, optional + + :param agentless_posture_management: Whether CSM Misconfigurations is enabled for this host via agentless scanning. ``true`` if enabled; ``false`` if disabled. + :type agentless_posture_management: bool, none_type, optional + + :param agentless_vulnerability_scanning: Whether CSM Vulnerabilities is enabled for this host via agentless scanning. ``true`` if enabled; ``false`` if disabled. + :type agentless_vulnerability_scanning: bool, none_type, optional + + :param cloud_provider: The cloud provider of a host resource. + :type cloud_provider: CsmCloudProvider, optional + + :param cluster_name: The name of the Kubernetes cluster the host belongs to, if applicable. + :type cluster_name: str, none_type, optional + + :param datadog_agent_key: The Datadog Agent key associated with this host. Present only for agent-sourced hosts. + :type datadog_agent_key: str, none_type, optional + + :param env: The list of environment tags associated with this host. + :type env: [str], none_type, optional + + :param host_id: The internal Datadog host identifier. Present only for agent-sourced hosts. + :type host_id: int, none_type, optional + + :param install_method_tool: The tool used to install the Datadog Agent on this host. + :type install_method_tool: str, none_type, optional + + :param os: The operating system of the host. Present only for agent-sourced hosts. + :type os: str, none_type, optional + + :param resource_type: The type of cloud resource for an agentless host. + :type resource_type: CsmAgentlessHostResourceType, optional + + :param source: The source of a unified host entry, indicating whether it was discovered via agent, agentless scanning, or both. + :type source: CsmUnifiedHostSource + """ + if account_id is not unset: + kwargs["account_id"] = account_id + if agent_csm_vm_containers_enabled is not unset: + kwargs["agent_csm_vm_containers_enabled"] = agent_csm_vm_containers_enabled + if agent_csm_vm_hosts_enabled is not unset: + kwargs["agent_csm_vm_hosts_enabled"] = agent_csm_vm_hosts_enabled + if agent_cws_enabled is not unset: + kwargs["agent_cws_enabled"] = agent_cws_enabled + if agent_posture_management is not unset: + kwargs["agent_posture_management"] = agent_posture_management + if agent_version is not unset: + kwargs["agent_version"] = agent_version + if agentless_posture_management is not unset: + kwargs["agentless_posture_management"] = agentless_posture_management + if agentless_vulnerability_scanning is not unset: + kwargs["agentless_vulnerability_scanning"] = agentless_vulnerability_scanning + if cloud_provider is not unset: + kwargs["cloud_provider"] = cloud_provider + if cluster_name is not unset: + kwargs["cluster_name"] = cluster_name + if datadog_agent_key is not unset: + kwargs["datadog_agent_key"] = datadog_agent_key + if env is not unset: + kwargs["env"] = env + if host_id is not unset: + kwargs["host_id"] = host_id + if install_method_tool is not unset: + kwargs["install_method_tool"] = install_method_tool + if os is not unset: + kwargs["os"] = os + if resource_type is not unset: + kwargs["resource_type"] = resource_type + super().__init__(kwargs) + + self_.source = source diff --git a/src/datadog_api_client/v2/model/csm_unified_host_data.py b/src/datadog_api_client/v2/model/csm_unified_host_data.py new file mode 100644 index 0000000000..2ab0382af1 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_unified_host_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.csm_unified_host_attributes import CsmUnifiedHostAttributes + from datadog_api_client.v2.model.csm_unified_host_type import CsmUnifiedHostType + + +class CsmUnifiedHostData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.csm_unified_host_attributes import CsmUnifiedHostAttributes + from datadog_api_client.v2.model.csm_unified_host_type import CsmUnifiedHostType + + return { + "attributes": (CsmUnifiedHostAttributes,), + "id": (str,), + "type": (CsmUnifiedHostType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: CsmUnifiedHostAttributes, id: str, type: CsmUnifiedHostType, **kwargs): + """ + A single unified host resource, combining agent and agentless data. + + :param attributes: Attributes of a unified host, combining data from agent and agentless sources. + :type attributes: CsmUnifiedHostAttributes + + :param id: The resource identifier of the unified host. + :type id: str + + :param type: The JSON:API type for unified host resources. The value should always be ``unified_host``. + :type type: CsmUnifiedHostType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/csm_unified_host_facet_data.py b/src/datadog_api_client/v2/model/csm_unified_host_facet_data.py new file mode 100644 index 0000000000..89bb8343a8 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_unified_host_facet_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.csm_agentless_host_facet_attributes import CsmAgentlessHostFacetAttributes + from datadog_api_client.v2.model.csm_unified_host_facet_type import CsmUnifiedHostFacetType + + +class CsmUnifiedHostFacetData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.csm_agentless_host_facet_attributes import CsmAgentlessHostFacetAttributes + from datadog_api_client.v2.model.csm_unified_host_facet_type import CsmUnifiedHostFacetType + + return { + "attributes": (CsmAgentlessHostFacetAttributes,), + "id": (str,), + "type": (CsmUnifiedHostFacetType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: CsmAgentlessHostFacetAttributes, id: str, type: CsmUnifiedHostFacetType, **kwargs): + """ + A single unified host facet resource. + + :param attributes: Attributes of an agentless host facet. + :type attributes: CsmAgentlessHostFacetAttributes + + :param id: The identifier of the facet, corresponding to the field path. + :type id: str + + :param type: The JSON:API type for unified host facet resources. The value should always be ``unified_host_facet``. + :type type: CsmUnifiedHostFacetType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/csm_unified_host_facet_type.py b/src/datadog_api_client/v2/model/csm_unified_host_facet_type.py new file mode 100644 index 0000000000..b70d7a4f8d --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_unified_host_facet_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class CsmUnifiedHostFacetType(ModelSimple): + """ + The JSON:API type for unified host facet resources. The value should always be `unified_host_facet`. + + :param value: If omitted defaults to "unified_host_facet". Must be one of ["unified_host_facet"]. + :type value: str + """ + + allowed_values = { + "unified_host_facet", + } + UNIFIED_HOST_FACET: ClassVar["CsmUnifiedHostFacetType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +CsmUnifiedHostFacetType.UNIFIED_HOST_FACET = CsmUnifiedHostFacetType("unified_host_facet") diff --git a/src/datadog_api_client/v2/model/csm_unified_host_facets_response.py b/src/datadog_api_client/v2/model/csm_unified_host_facets_response.py new file mode 100644 index 0000000000..9c3435ded0 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_unified_host_facets_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.csm_unified_host_facet_data import CsmUnifiedHostFacetData + + +class CsmUnifiedHostFacetsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.csm_unified_host_facet_data import CsmUnifiedHostFacetData + + return { + "data": ([CsmUnifiedHostFacetData],), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: List[CsmUnifiedHostFacetData], **kwargs): + """ + The response returned when listing facets for unified hosts. + + :param data: The list of available facets for unified hosts. + :type data: [CsmUnifiedHostFacetData] + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/csm_unified_host_source.py b/src/datadog_api_client/v2/model/csm_unified_host_source.py new file mode 100644 index 0000000000..cfead0b951 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_unified_host_source.py @@ -0,0 +1,41 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class CsmUnifiedHostSource(ModelSimple): + """ + The source of a unified host entry, indicating whether it was discovered via agent, agentless scanning, or both. + + :param value: Must be one of ["agent", "agentless", "both"]. + :type value: str + """ + + allowed_values = { + "agent", + "agentless", + "both", + } + AGENT: ClassVar["CsmUnifiedHostSource"] + AGENTLESS: ClassVar["CsmUnifiedHostSource"] + BOTH: ClassVar["CsmUnifiedHostSource"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +CsmUnifiedHostSource.AGENT = CsmUnifiedHostSource("agent") +CsmUnifiedHostSource.AGENTLESS = CsmUnifiedHostSource("agentless") +CsmUnifiedHostSource.BOTH = CsmUnifiedHostSource("both") diff --git a/src/datadog_api_client/v2/model/csm_unified_host_type.py b/src/datadog_api_client/v2/model/csm_unified_host_type.py new file mode 100644 index 0000000000..027a44d4fd --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_unified_host_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class CsmUnifiedHostType(ModelSimple): + """ + The JSON:API type for unified host resources. The value should always be `unified_host`. + + :param value: If omitted defaults to "unified_host". Must be one of ["unified_host"]. + :type value: str + """ + + allowed_values = { + "unified_host", + } + UNIFIED_HOST: ClassVar["CsmUnifiedHostType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +CsmUnifiedHostType.UNIFIED_HOST = CsmUnifiedHostType("unified_host") diff --git a/src/datadog_api_client/v2/model/csm_unified_hosts_meta.py b/src/datadog_api_client/v2/model/csm_unified_hosts_meta.py new file mode 100644 index 0000000000..8576d1589f --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_unified_hosts_meta.py @@ -0,0 +1,51 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class CsmUnifiedHostsMeta(ModelNormal): + @cached_property + def openapi_types(_): + return { + "page_index": (int,), + "page_size": (int,), + "total_filtered": (int,), + "total_pages": (int,), + } + + attribute_map = { + "page_index": "page_index", + "page_size": "page_size", + "total_filtered": "total_filtered", + "total_pages": "total_pages", + } + + def __init__(self_, page_index: int, page_size: int, total_filtered: int, total_pages: int, **kwargs): + """ + Pagination metadata for a unified hosts list response. + + :param page_index: The current page index (zero-based). + :type page_index: int + + :param page_size: The number of hosts returned per page. + :type page_size: int + + :param total_filtered: The total number of hosts matching the filter criteria. + :type total_filtered: int + + :param total_pages: The total number of pages available. + :type total_pages: int + """ + super().__init__(kwargs) + + self_.page_index = page_index + self_.page_size = page_size + self_.total_filtered = total_filtered + self_.total_pages = total_pages diff --git a/src/datadog_api_client/v2/model/csm_unified_hosts_response.py b/src/datadog_api_client/v2/model/csm_unified_hosts_response.py new file mode 100644 index 0000000000..fcffc21570 --- /dev/null +++ b/src/datadog_api_client/v2/model/csm_unified_hosts_response.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.csm_unified_host_data import CsmUnifiedHostData + from datadog_api_client.v2.model.csm_unified_hosts_meta import CsmUnifiedHostsMeta + + +class CsmUnifiedHostsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.csm_unified_host_data import CsmUnifiedHostData + from datadog_api_client.v2.model.csm_unified_hosts_meta import CsmUnifiedHostsMeta + + return { + "data": ([CsmUnifiedHostData],), + "meta": (CsmUnifiedHostsMeta,), + } + + attribute_map = { + "data": "data", + "meta": "meta", + } + + def __init__(self_, data: List[CsmUnifiedHostData], meta: CsmUnifiedHostsMeta, **kwargs): + """ + The response returned when listing unified hosts. + + :param data: The list of unified hosts for the current page. + :type data: [CsmUnifiedHostData] + + :param meta: Pagination metadata for a unified hosts list response. + :type meta: CsmUnifiedHostsMeta + """ + super().__init__(kwargs) + + self_.data = data + self_.meta = meta diff --git a/src/datadog_api_client/v2/model/data_observability_monitor_run_status.py b/src/datadog_api_client/v2/model/data_observability_monitor_run_status.py new file mode 100644 index 0000000000..d31d97400a --- /dev/null +++ b/src/datadog_api_client/v2/model/data_observability_monitor_run_status.py @@ -0,0 +1,47 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class DataObservabilityMonitorRunStatus(ModelSimple): + """ + The status of a data observability monitor run. + + :param value: Must be one of ["pending", "ok", "warn", "alert", "error"]. + :type value: str + """ + + allowed_values = { + "pending", + "ok", + "warn", + "alert", + "error", + } + PENDING: ClassVar["DataObservabilityMonitorRunStatus"] + OK: ClassVar["DataObservabilityMonitorRunStatus"] + WARN: ClassVar["DataObservabilityMonitorRunStatus"] + ALERT: ClassVar["DataObservabilityMonitorRunStatus"] + ERROR: ClassVar["DataObservabilityMonitorRunStatus"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +DataObservabilityMonitorRunStatus.PENDING = DataObservabilityMonitorRunStatus("pending") +DataObservabilityMonitorRunStatus.OK = DataObservabilityMonitorRunStatus("ok") +DataObservabilityMonitorRunStatus.WARN = DataObservabilityMonitorRunStatus("warn") +DataObservabilityMonitorRunStatus.ALERT = DataObservabilityMonitorRunStatus("alert") +DataObservabilityMonitorRunStatus.ERROR = DataObservabilityMonitorRunStatus("error") diff --git a/src/datadog_api_client/v2/model/data_observability_monitor_run_type.py b/src/datadog_api_client/v2/model/data_observability_monitor_run_type.py new file mode 100644 index 0000000000..94df70285c --- /dev/null +++ b/src/datadog_api_client/v2/model/data_observability_monitor_run_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class DataObservabilityMonitorRunType(ModelSimple): + """ + The JSON:API resource type for a data observability monitor run. + + :param value: If omitted defaults to "monitor_run". Must be one of ["monitor_run"]. + :type value: str + """ + + allowed_values = { + "monitor_run", + } + MONITOR_RUN: ClassVar["DataObservabilityMonitorRunType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +DataObservabilityMonitorRunType.MONITOR_RUN = DataObservabilityMonitorRunType("monitor_run") diff --git a/src/datadog_api_client/v2/model/delete_form_data.py b/src/datadog_api_client/v2/model/delete_form_data.py new file mode 100644 index 0000000000..d1fc3d0229 --- /dev/null +++ b/src/datadog_api_client/v2/model/delete_form_data.py @@ -0,0 +1,47 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + UUID, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_type import FormType + + +class DeleteFormData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_type import FormType + + return { + "id": (UUID,), + "type": (FormType,), + } + + attribute_map = { + "id": "id", + "type": "type", + } + + def __init__(self_, id: UUID, type: FormType, **kwargs): + """ + The data returned when a form is deleted. + + :param id: The ID of the deleted form. + :type id: UUID + + :param type: The resource type for a form. + :type type: FormType + """ + super().__init__(kwargs) + + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_response.py b/src/datadog_api_client/v2/model/delete_form_response.py similarity index 53% rename from src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_response.py rename to src/datadog_api_client/v2/model/delete_form_response.py index 68abe0dd1a..2278766e19 100644 --- a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_response.py +++ b/src/datadog_api_client/v2/model/delete_form_response.py @@ -14,28 +14,28 @@ if TYPE_CHECKING: - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_data import RumHardcodedRetentionFilterData + from datadog_api_client.v2.model.delete_form_data import DeleteFormData -class RumHardcodedRetentionFilterResponse(ModelNormal): +class DeleteFormResponse(ModelNormal): @cached_property def openapi_types(_): - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_data import RumHardcodedRetentionFilterData + from datadog_api_client.v2.model.delete_form_data import DeleteFormData return { - "data": (RumHardcodedRetentionFilterData,), + "data": (DeleteFormData,), } attribute_map = { "data": "data", } - def __init__(self_, data: Union[RumHardcodedRetentionFilterData, UnsetType] = unset, **kwargs): + def __init__(self_, data: Union[DeleteFormData, UnsetType] = unset, **kwargs): """ - A hardcoded retention filter response body. + A response returned after deleting a form. - :param data: A hardcoded retention filter. - :type data: RumHardcodedRetentionFilterData, optional + :param data: The data returned when a form is deleted. + :type data: DeleteFormData, optional """ if data is not unset: kwargs["data"] = data diff --git a/src/datadog_api_client/v2/model/fleet_cluster_attributes.py b/src/datadog_api_client/v2/model/fleet_cluster_attributes.py deleted file mode 100644 index e840e06b41..0000000000 --- a/src/datadog_api_client/v2/model/fleet_cluster_attributes.py +++ /dev/null @@ -1,176 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import List, Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.fleet_cluster_node_count_by_status import FleetClusterNodeCountByStatus - from datadog_api_client.v2.model.fleet_cluster_pod_count_by_state import FleetClusterPodCountByState - - -class FleetClusterAttributes(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.fleet_cluster_node_count_by_status import FleetClusterNodeCountByStatus - from datadog_api_client.v2.model.fleet_cluster_pod_count_by_state import FleetClusterPodCountByState - - return { - "agent_versions": ([str],), - "api_key_names": ([str],), - "api_key_uuids": ([str],), - "cloud_providers": ([str],), - "cluster_name": (str,), - "enabled_products": ([str],), - "envs": ([str],), - "first_seen_at": (int,), - "install_method_tool": (str,), - "node_count": (int,), - "node_count_by_status": (FleetClusterNodeCountByStatus,), - "operating_systems": ([str],), - "otel_collector_distributions": ([str],), - "otel_collector_versions": ([str],), - "pod_count_by_state": (FleetClusterPodCountByState,), - "services": ([str],), - "teams": ([str],), - } - - attribute_map = { - "agent_versions": "agent_versions", - "api_key_names": "api_key_names", - "api_key_uuids": "api_key_uuids", - "cloud_providers": "cloud_providers", - "cluster_name": "cluster_name", - "enabled_products": "enabled_products", - "envs": "envs", - "first_seen_at": "first_seen_at", - "install_method_tool": "install_method_tool", - "node_count": "node_count", - "node_count_by_status": "node_count_by_status", - "operating_systems": "operating_systems", - "otel_collector_distributions": "otel_collector_distributions", - "otel_collector_versions": "otel_collector_versions", - "pod_count_by_state": "pod_count_by_state", - "services": "services", - "teams": "teams", - } - - def __init__( - self_, - agent_versions: Union[List[str], UnsetType] = unset, - api_key_names: Union[List[str], UnsetType] = unset, - api_key_uuids: Union[List[str], UnsetType] = unset, - cloud_providers: Union[List[str], UnsetType] = unset, - cluster_name: Union[str, UnsetType] = unset, - enabled_products: Union[List[str], UnsetType] = unset, - envs: Union[List[str], UnsetType] = unset, - first_seen_at: Union[int, UnsetType] = unset, - install_method_tool: Union[str, UnsetType] = unset, - node_count: Union[int, UnsetType] = unset, - node_count_by_status: Union[FleetClusterNodeCountByStatus, UnsetType] = unset, - operating_systems: Union[List[str], UnsetType] = unset, - otel_collector_distributions: Union[List[str], UnsetType] = unset, - otel_collector_versions: Union[List[str], UnsetType] = unset, - pod_count_by_state: Union[FleetClusterPodCountByState, UnsetType] = unset, - services: Union[List[str], UnsetType] = unset, - teams: Union[List[str], UnsetType] = unset, - **kwargs, - ): - """ - Attributes of a Kubernetes cluster in the fleet. - - :param agent_versions: Datadog Agent versions running in the cluster. - :type agent_versions: [str], optional - - :param api_key_names: API key names used by agents in the cluster. - :type api_key_names: [str], optional - - :param api_key_uuids: API key UUIDs used by agents in the cluster. - :type api_key_uuids: [str], optional - - :param cloud_providers: Cloud providers hosting the cluster. - :type cloud_providers: [str], optional - - :param cluster_name: The name of the Kubernetes cluster. - :type cluster_name: str, optional - - :param enabled_products: Datadog products enabled in the cluster. - :type enabled_products: [str], optional - - :param envs: Environments associated with the cluster. - :type envs: [str], optional - - :param first_seen_at: Timestamp when the cluster was first seen. - :type first_seen_at: int, optional - - :param install_method_tool: The tool used to install agents in the cluster. - :type install_method_tool: str, optional - - :param node_count: Total number of nodes in the cluster. - :type node_count: int, optional - - :param node_count_by_status: Node counts grouped by status. - :type node_count_by_status: FleetClusterNodeCountByStatus, optional - - :param operating_systems: Operating systems of nodes in the cluster. - :type operating_systems: [str], optional - - :param otel_collector_distributions: OpenTelemetry collector distributions in the cluster. - :type otel_collector_distributions: [str], optional - - :param otel_collector_versions: OpenTelemetry collector versions in the cluster. - :type otel_collector_versions: [str], optional - - :param pod_count_by_state: Pod counts grouped by state. - :type pod_count_by_state: FleetClusterPodCountByState, optional - - :param services: Services running in the cluster. - :type services: [str], optional - - :param teams: Teams associated with the cluster. - :type teams: [str], optional - """ - if agent_versions is not unset: - kwargs["agent_versions"] = agent_versions - if api_key_names is not unset: - kwargs["api_key_names"] = api_key_names - if api_key_uuids is not unset: - kwargs["api_key_uuids"] = api_key_uuids - if cloud_providers is not unset: - kwargs["cloud_providers"] = cloud_providers - if cluster_name is not unset: - kwargs["cluster_name"] = cluster_name - if enabled_products is not unset: - kwargs["enabled_products"] = enabled_products - if envs is not unset: - kwargs["envs"] = envs - if first_seen_at is not unset: - kwargs["first_seen_at"] = first_seen_at - if install_method_tool is not unset: - kwargs["install_method_tool"] = install_method_tool - if node_count is not unset: - kwargs["node_count"] = node_count - if node_count_by_status is not unset: - kwargs["node_count_by_status"] = node_count_by_status - if operating_systems is not unset: - kwargs["operating_systems"] = operating_systems - if otel_collector_distributions is not unset: - kwargs["otel_collector_distributions"] = otel_collector_distributions - if otel_collector_versions is not unset: - kwargs["otel_collector_versions"] = otel_collector_versions - if pod_count_by_state is not unset: - kwargs["pod_count_by_state"] = pod_count_by_state - if services is not unset: - kwargs["services"] = services - if teams is not unset: - kwargs["teams"] = teams - super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/fleet_clusters_response.py b/src/datadog_api_client/v2/model/fleet_clusters_response.py deleted file mode 100644 index e55b24336b..0000000000 --- a/src/datadog_api_client/v2/model/fleet_clusters_response.py +++ /dev/null @@ -1,53 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.fleet_clusters_response_data import FleetClustersResponseData - from datadog_api_client.v2.model.fleet_clusters_response_meta import FleetClustersResponseMeta - - -class FleetClustersResponse(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.fleet_clusters_response_data import FleetClustersResponseData - from datadog_api_client.v2.model.fleet_clusters_response_meta import FleetClustersResponseMeta - - return { - "data": (FleetClustersResponseData,), - "meta": (FleetClustersResponseMeta,), - } - - attribute_map = { - "data": "data", - "meta": "meta", - } - - def __init__( - self_, data: FleetClustersResponseData, meta: Union[FleetClustersResponseMeta, UnsetType] = unset, **kwargs - ): - """ - Response containing a paginated list of fleet clusters. - - :param data: The response data containing status and clusters array. - :type data: FleetClustersResponseData - - :param meta: Metadata for the list of clusters response. - :type meta: FleetClustersResponseMeta, optional - """ - if meta is not unset: - kwargs["meta"] = meta - super().__init__(kwargs) - - self_.data = data diff --git a/src/datadog_api_client/v2/model/fleet_clusters_response_data.py b/src/datadog_api_client/v2/model/fleet_clusters_response_data.py deleted file mode 100644 index a68cca0c38..0000000000 --- a/src/datadog_api_client/v2/model/fleet_clusters_response_data.py +++ /dev/null @@ -1,54 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.fleet_clusters_response_data_attributes import FleetClustersResponseDataAttributes - - -class FleetClustersResponseData(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.fleet_clusters_response_data_attributes import ( - FleetClustersResponseDataAttributes, - ) - - return { - "attributes": (FleetClustersResponseDataAttributes,), - "id": (str,), - "type": (str,), - } - - attribute_map = { - "attributes": "attributes", - "id": "id", - "type": "type", - } - - def __init__(self_, attributes: FleetClustersResponseDataAttributes, id: str, type: str, **kwargs): - """ - The response data containing status and clusters array. - - :param attributes: Attributes of the fleet clusters response containing the list of clusters. - :type attributes: FleetClustersResponseDataAttributes - - :param id: Status identifier. - :type id: str - - :param type: Resource type. - :type type: str - """ - super().__init__(kwargs) - - self_.attributes = attributes - self_.id = id - self_.type = type diff --git a/src/datadog_api_client/v2/model/fleet_clusters_response_data_attributes.py b/src/datadog_api_client/v2/model/fleet_clusters_response_data_attributes.py deleted file mode 100644 index 6279afb6f4..0000000000 --- a/src/datadog_api_client/v2/model/fleet_clusters_response_data_attributes.py +++ /dev/null @@ -1,42 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import List, Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.fleet_cluster_attributes import FleetClusterAttributes - - -class FleetClustersResponseDataAttributes(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.fleet_cluster_attributes import FleetClusterAttributes - - return { - "clusters": ([FleetClusterAttributes],), - } - - attribute_map = { - "clusters": "clusters", - } - - def __init__(self_, clusters: Union[List[FleetClusterAttributes], UnsetType] = unset, **kwargs): - """ - Attributes of the fleet clusters response containing the list of clusters. - - :param clusters: Array of clusters matching the query criteria. - :type clusters: [FleetClusterAttributes], optional - """ - if clusters is not unset: - kwargs["clusters"] = clusters - super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/fleet_instrumented_pod_group_attributes.py b/src/datadog_api_client/v2/model/fleet_instrumented_pod_group_attributes.py deleted file mode 100644 index 053bdcbebf..0000000000 --- a/src/datadog_api_client/v2/model/fleet_instrumented_pod_group_attributes.py +++ /dev/null @@ -1,131 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Any, Dict, List, Union - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - date, - datetime, - none_type, - unset, - UnsetType, - UUID, -) - - -class FleetInstrumentedPodGroupAttributes(ModelNormal): - @cached_property - def openapi_types(_): - return { - "applied_target": ( - { - str: ( - bool, - date, - datetime, - dict, - float, - int, - list, - str, - UUID, - none_type, - ) - }, - ), - "applied_target_name": (str,), - "injected_tags": ([str],), - "kube_ownerref_kind": (str,), - "kube_ownerref_name": (str,), - "lib_injection_annotations": ([str],), - "namespace": (str,), - "pod_count": (int,), - "pod_names": ([str],), - "tags": ({str: (str,)},), - } - - attribute_map = { - "applied_target": "applied_target", - "applied_target_name": "applied_target_name", - "injected_tags": "injected_tags", - "kube_ownerref_kind": "kube_ownerref_kind", - "kube_ownerref_name": "kube_ownerref_name", - "lib_injection_annotations": "lib_injection_annotations", - "namespace": "namespace", - "pod_count": "pod_count", - "pod_names": "pod_names", - "tags": "tags", - } - - def __init__( - self_, - applied_target: Union[Dict[str, Any], UnsetType] = unset, - applied_target_name: Union[str, UnsetType] = unset, - injected_tags: Union[List[str], UnsetType] = unset, - kube_ownerref_kind: Union[str, UnsetType] = unset, - kube_ownerref_name: Union[str, UnsetType] = unset, - lib_injection_annotations: Union[List[str], UnsetType] = unset, - namespace: Union[str, UnsetType] = unset, - pod_count: Union[int, UnsetType] = unset, - pod_names: Union[List[str], UnsetType] = unset, - tags: Union[Dict[str, str], UnsetType] = unset, - **kwargs, - ): - """ - Attributes of a group of instrumented pods targeted for SSI injection. - - :param applied_target: The SSI injection target configuration applied to the pod group. - :type applied_target: {str: (bool, date, datetime, dict, float, int, list, str, UUID, none_type,)}, optional - - :param applied_target_name: The name of the applied SSI injection target. - :type applied_target_name: str, optional - - :param injected_tags: Tags injected into the pods by the Admission Controller. - :type injected_tags: [str], optional - - :param kube_ownerref_kind: The kind of the Kubernetes owner reference. - :type kube_ownerref_kind: str, optional - - :param kube_ownerref_name: The name of the Kubernetes owner reference (deployment, statefulset, etc.). - :type kube_ownerref_name: str, optional - - :param lib_injection_annotations: Library injection annotations on the pod group. - :type lib_injection_annotations: [str], optional - - :param namespace: The Kubernetes namespace of the pod group. - :type namespace: str, optional - - :param pod_count: Total number of pods in the group. - :type pod_count: int, optional - - :param pod_names: Names of the individual pods in the group. - :type pod_names: [str], optional - - :param tags: Additional tags associated with the pod group. - :type tags: {str: (str,)}, optional - """ - if applied_target is not unset: - kwargs["applied_target"] = applied_target - if applied_target_name is not unset: - kwargs["applied_target_name"] = applied_target_name - if injected_tags is not unset: - kwargs["injected_tags"] = injected_tags - if kube_ownerref_kind is not unset: - kwargs["kube_ownerref_kind"] = kube_ownerref_kind - if kube_ownerref_name is not unset: - kwargs["kube_ownerref_name"] = kube_ownerref_name - if lib_injection_annotations is not unset: - kwargs["lib_injection_annotations"] = lib_injection_annotations - if namespace is not unset: - kwargs["namespace"] = namespace - if pod_count is not unset: - kwargs["pod_count"] = pod_count - if pod_names is not unset: - kwargs["pod_names"] = pod_names - if tags is not unset: - kwargs["tags"] = tags - super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/fleet_instrumented_pods_response_data.py b/src/datadog_api_client/v2/model/fleet_instrumented_pods_response_data.py deleted file mode 100644 index 7bae8edd40..0000000000 --- a/src/datadog_api_client/v2/model/fleet_instrumented_pods_response_data.py +++ /dev/null @@ -1,56 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.fleet_instrumented_pods_response_data_attributes import ( - FleetInstrumentedPodsResponseDataAttributes, - ) - - -class FleetInstrumentedPodsResponseData(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.fleet_instrumented_pods_response_data_attributes import ( - FleetInstrumentedPodsResponseDataAttributes, - ) - - return { - "attributes": (FleetInstrumentedPodsResponseDataAttributes,), - "id": (str,), - "type": (str,), - } - - attribute_map = { - "attributes": "attributes", - "id": "id", - "type": "type", - } - - def __init__(self_, attributes: FleetInstrumentedPodsResponseDataAttributes, id: str, type: str, **kwargs): - """ - The response data containing the cluster name and instrumented pod groups. - - :param attributes: Attributes of the instrumented pods response containing the list of pod groups. - :type attributes: FleetInstrumentedPodsResponseDataAttributes - - :param id: The cluster name identifier. - :type id: str - - :param type: Resource type. - :type type: str - """ - super().__init__(kwargs) - - self_.attributes = attributes - self_.id = id - self_.type = type diff --git a/src/datadog_api_client/v2/model/fleet_instrumented_pods_response_data_attributes.py b/src/datadog_api_client/v2/model/fleet_instrumented_pods_response_data_attributes.py deleted file mode 100644 index dac59de230..0000000000 --- a/src/datadog_api_client/v2/model/fleet_instrumented_pods_response_data_attributes.py +++ /dev/null @@ -1,44 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import List, Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.fleet_instrumented_pod_group_attributes import FleetInstrumentedPodGroupAttributes - - -class FleetInstrumentedPodsResponseDataAttributes(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.fleet_instrumented_pod_group_attributes import ( - FleetInstrumentedPodGroupAttributes, - ) - - return { - "groups": ([FleetInstrumentedPodGroupAttributes],), - } - - attribute_map = { - "groups": "groups", - } - - def __init__(self_, groups: Union[List[FleetInstrumentedPodGroupAttributes], UnsetType] = unset, **kwargs): - """ - Attributes of the instrumented pods response containing the list of pod groups. - - :param groups: Array of instrumented pod groups in the cluster. - :type groups: [FleetInstrumentedPodGroupAttributes], optional - """ - if groups is not unset: - kwargs["groups"] = groups - super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/form_data.py b/src/datadog_api_client/v2/model/form_data.py new file mode 100644 index 0000000000..686cbbbeb8 --- /dev/null +++ b/src/datadog_api_client/v2/model/form_data.py @@ -0,0 +1,55 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + UUID, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_data_attributes import FormDataAttributes + from datadog_api_client.v2.model.form_type import FormType + + +class FormData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_data_attributes import FormDataAttributes + from datadog_api_client.v2.model.form_type import FormType + + return { + "attributes": (FormDataAttributes,), + "id": (UUID,), + "type": (FormType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: FormDataAttributes, id: UUID, type: FormType, **kwargs): + """ + A form resource object. + + :param attributes: The attributes of a form. + :type attributes: FormDataAttributes + + :param id: The ID of the form. + :type id: UUID + + :param type: The resource type for a form. + :type type: FormType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/form_data_attributes.py b/src/datadog_api_client/v2/model/form_data_attributes.py new file mode 100644 index 0000000000..285e74bd4b --- /dev/null +++ b/src/datadog_api_client/v2/model/form_data_attributes.py @@ -0,0 +1,169 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, + unset, + UnsetType, + UUID, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_datastore_config_attributes import FormDatastoreConfigAttributes + from datadog_api_client.v2.model.form_publication_attributes import FormPublicationAttributes + from datadog_api_client.v2.model.form_version_attributes import FormVersionAttributes + + +class FormDataAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_datastore_config_attributes import FormDatastoreConfigAttributes + from datadog_api_client.v2.model.form_publication_attributes import FormPublicationAttributes + from datadog_api_client.v2.model.form_version_attributes import FormVersionAttributes + + return { + "active": (bool,), + "anonymous": (bool,), + "created_at": (datetime,), + "datastore_config": (FormDatastoreConfigAttributes,), + "description": (str,), + "end_date": (datetime, none_type), + "has_submitted": (bool, none_type), + "idp_survey": (bool,), + "modified_at": (datetime,), + "name": (str,), + "org_id": (int,), + "publication": (FormPublicationAttributes,), + "self_service": (bool,), + "single_response": (bool,), + "user_id": (int,), + "user_uuid": (UUID,), + "version": (FormVersionAttributes,), + } + + attribute_map = { + "active": "active", + "anonymous": "anonymous", + "created_at": "created_at", + "datastore_config": "datastore_config", + "description": "description", + "end_date": "end_date", + "has_submitted": "has_submitted", + "idp_survey": "idp_survey", + "modified_at": "modified_at", + "name": "name", + "org_id": "org_id", + "publication": "publication", + "self_service": "self_service", + "single_response": "single_response", + "user_id": "user_id", + "user_uuid": "user_uuid", + "version": "version", + } + + def __init__( + self_, + active: bool, + anonymous: bool, + created_at: datetime, + datastore_config: FormDatastoreConfigAttributes, + description: str, + idp_survey: bool, + modified_at: datetime, + name: str, + org_id: int, + self_service: bool, + single_response: bool, + user_id: int, + user_uuid: UUID, + end_date: Union[datetime, none_type, UnsetType] = unset, + has_submitted: Union[bool, none_type, UnsetType] = unset, + publication: Union[FormPublicationAttributes, UnsetType] = unset, + version: Union[FormVersionAttributes, UnsetType] = unset, + **kwargs, + ): + """ + The attributes of a form. + + :param active: Whether the form is currently active. + :type active: bool + + :param anonymous: Whether the form accepts anonymous submissions. + :type anonymous: bool + + :param created_at: The time at which the form was created. + :type created_at: datetime + + :param datastore_config: The datastore configuration for a form. + :type datastore_config: FormDatastoreConfigAttributes + + :param description: The description of the form. + :type description: str + + :param end_date: The date and time at which the form stops accepting responses. + :type end_date: datetime, none_type, optional + + :param has_submitted: Whether the current user has already submitted this form. Only present for forms with ``single_response`` set to ``true``. + :type has_submitted: bool, none_type, optional + + :param idp_survey: Whether the form is an IDP survey. + :type idp_survey: bool + + :param modified_at: The time at which the form was last modified. + :type modified_at: datetime + + :param name: The name of the form. + :type name: str + + :param org_id: The ID of the organization that owns this form. + :type org_id: int + + :param publication: The attributes of a form publication. + :type publication: FormPublicationAttributes, optional + + :param self_service: Whether the form is available in the self-service catalog. + :type self_service: bool + + :param single_response: Whether each user can only submit one response. + :type single_response: bool + + :param user_id: The ID of the user who created this form. + :type user_id: int + + :param user_uuid: The UUID of the user who created this form. + :type user_uuid: UUID + + :param version: The attributes of a form version. + :type version: FormVersionAttributes, optional + """ + if end_date is not unset: + kwargs["end_date"] = end_date + if has_submitted is not unset: + kwargs["has_submitted"] = has_submitted + if publication is not unset: + kwargs["publication"] = publication + if version is not unset: + kwargs["version"] = version + super().__init__(kwargs) + + self_.active = active + self_.anonymous = anonymous + self_.created_at = created_at + self_.datastore_config = datastore_config + self_.description = description + self_.idp_survey = idp_survey + self_.modified_at = modified_at + self_.name = name + self_.org_id = org_id + self_.self_service = self_service + self_.single_response = single_response + self_.user_id = user_id + self_.user_uuid = user_uuid diff --git a/src/datadog_api_client/v2/model/form_data_definition.py b/src/datadog_api_client/v2/model/form_data_definition.py new file mode 100644 index 0000000000..d10a54dc6f --- /dev/null +++ b/src/datadog_api_client/v2/model/form_data_definition.py @@ -0,0 +1,97 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Any, Dict, List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + date, + datetime, + none_type, + unset, + UnsetType, + UUID, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_data_definition_type import FormDataDefinitionType + + +class FormDataDefinition(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_data_definition_type import FormDataDefinitionType + + return { + "description": (str,), + "properties": ( + { + str: ( + bool, + date, + datetime, + dict, + float, + int, + list, + str, + UUID, + none_type, + ) + }, + ), + "required": ([str],), + "title": (str,), + "type": (FormDataDefinitionType,), + } + + attribute_map = { + "description": "description", + "properties": "properties", + "required": "required", + "title": "title", + "type": "type", + } + + def __init__( + self_, + description: Union[str, UnsetType] = unset, + properties: Union[Dict[str, Any], UnsetType] = unset, + required: Union[List[str], UnsetType] = unset, + title: Union[str, UnsetType] = unset, + type: Union[FormDataDefinitionType, UnsetType] = unset, + **kwargs, + ): + """ + A JSON Schema definition that describes the form's data fields. + + :param description: A description shown to form respondents. + :type description: str, optional + + :param properties: A map of field names to their JSON Schema definitions. + :type properties: {str: (bool, date, datetime, dict, float, int, list, str, UUID, none_type,)}, optional + + :param required: List of field names that must be answered. + :type required: [str], optional + + :param title: The title of the form schema. + :type title: str, optional + + :param type: The root schema type. + :type type: FormDataDefinitionType, optional + """ + if description is not unset: + kwargs["description"] = description + if properties is not unset: + kwargs["properties"] = properties + if required is not unset: + kwargs["required"] = required + if title is not unset: + kwargs["title"] = title + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/incident_service_type.py b/src/datadog_api_client/v2/model/form_data_definition_type.py similarity index 66% rename from src/datadog_api_client/v2/model/incident_service_type.py rename to src/datadog_api_client/v2/model/form_data_definition_type.py index a6345fda10..0128cc13c9 100644 --- a/src/datadog_api_client/v2/model/incident_service_type.py +++ b/src/datadog_api_client/v2/model/form_data_definition_type.py @@ -12,18 +12,18 @@ from typing import ClassVar -class IncidentServiceType(ModelSimple): +class FormDataDefinitionType(ModelSimple): """ - Incident service resource type. + The root schema type. - :param value: If omitted defaults to "services". Must be one of ["services"]. + :param value: If omitted defaults to "object". Must be one of ["object"]. :type value: str """ allowed_values = { - "services", + "object", } - SERVICES: ClassVar["IncidentServiceType"] + OBJECT: ClassVar["FormDataDefinitionType"] @cached_property def openapi_types(_): @@ -32,4 +32,4 @@ def openapi_types(_): } -IncidentServiceType.SERVICES = IncidentServiceType("services") +FormDataDefinitionType.OBJECT = FormDataDefinitionType("object") diff --git a/src/datadog_api_client/v2/model/form_datastore_config_attributes.py b/src/datadog_api_client/v2/model/form_datastore_config_attributes.py new file mode 100644 index 0000000000..57b202b35e --- /dev/null +++ b/src/datadog_api_client/v2/model/form_datastore_config_attributes.py @@ -0,0 +1,46 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + UUID, +) + + +class FormDatastoreConfigAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "datastore_id": (UUID,), + "primary_column_name": (str,), + "primary_key_generation_strategy": (str,), + } + + attribute_map = { + "datastore_id": "datastore_id", + "primary_column_name": "primary_column_name", + "primary_key_generation_strategy": "primary_key_generation_strategy", + } + + def __init__(self_, datastore_id: UUID, primary_column_name: str, primary_key_generation_strategy: str, **kwargs): + """ + The datastore configuration for a form. + + :param datastore_id: The ID of the datastore. + :type datastore_id: UUID + + :param primary_column_name: The name of the primary column in the datastore. + :type primary_column_name: str + + :param primary_key_generation_strategy: The strategy used to generate primary keys in the datastore. + :type primary_key_generation_strategy: str + """ + super().__init__(kwargs) + + self_.datastore_id = datastore_id + self_.primary_column_name = primary_column_name + self_.primary_key_generation_strategy = primary_key_generation_strategy diff --git a/src/datadog_api_client/v2/model/form_publication_attributes.py b/src/datadog_api_client/v2/model/form_publication_attributes.py new file mode 100644 index 0000000000..7f9960f47c --- /dev/null +++ b/src/datadog_api_client/v2/model/form_publication_attributes.py @@ -0,0 +1,99 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + unset, + UnsetType, + UUID, +) + + +class FormPublicationAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "created_at": (datetime,), + "form_id": (UUID,), + "form_version": (int,), + "id": (str,), + "modified_at": (datetime,), + "org_id": (int,), + "publish_seq": (int,), + "user_id": (int,), + "user_uuid": (UUID,), + } + + attribute_map = { + "created_at": "created_at", + "form_id": "form_id", + "form_version": "form_version", + "id": "id", + "modified_at": "modified_at", + "org_id": "org_id", + "publish_seq": "publish_seq", + "user_id": "user_id", + "user_uuid": "user_uuid", + } + + def __init__( + self_, + created_at: datetime, + form_id: UUID, + form_version: int, + modified_at: datetime, + org_id: int, + publish_seq: int, + user_id: int, + user_uuid: UUID, + id: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + The attributes of a form publication. + + :param created_at: The time at which the publication was created. + :type created_at: datetime + + :param form_id: The ID of the form. + :type form_id: UUID + + :param form_version: The version number that was published. + :type form_version: int + + :param id: The ID of the form publication. + :type id: str, optional + + :param modified_at: The time at which the publication was last modified. + :type modified_at: datetime + + :param org_id: The ID of the organization that owns this publication. + :type org_id: int + + :param publish_seq: The sequential publication number for this form. + :type publish_seq: int + + :param user_id: The ID of the user who created this publication. + :type user_id: int + + :param user_uuid: The UUID of the user who created this publication. + :type user_uuid: UUID + """ + if id is not unset: + kwargs["id"] = id + super().__init__(kwargs) + + self_.created_at = created_at + self_.form_id = form_id + self_.form_version = form_version + self_.modified_at = modified_at + self_.org_id = org_id + self_.publish_seq = publish_seq + self_.user_id = user_id + self_.user_uuid = user_uuid diff --git a/src/datadog_api_client/v2/model/form_publication_data.py b/src/datadog_api_client/v2/model/form_publication_data.py new file mode 100644 index 0000000000..77d0ae0033 --- /dev/null +++ b/src/datadog_api_client/v2/model/form_publication_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_publication_attributes import FormPublicationAttributes + from datadog_api_client.v2.model.form_publication_type import FormPublicationType + + +class FormPublicationData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_publication_attributes import FormPublicationAttributes + from datadog_api_client.v2.model.form_publication_type import FormPublicationType + + return { + "attributes": (FormPublicationAttributes,), + "id": (str,), + "type": (FormPublicationType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: FormPublicationAttributes, id: str, type: FormPublicationType, **kwargs): + """ + A form publication resource object. + + :param attributes: The attributes of a form publication. + :type attributes: FormPublicationAttributes + + :param id: The ID of the form publication. + :type id: str + + :param type: The resource type for a form publication. + :type type: FormPublicationType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/form_publication_response.py b/src/datadog_api_client/v2/model/form_publication_response.py new file mode 100644 index 0000000000..95924b7036 --- /dev/null +++ b/src/datadog_api_client/v2/model/form_publication_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_publication_data import FormPublicationData + + +class FormPublicationResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_publication_data import FormPublicationData + + return { + "data": (FormPublicationData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: FormPublicationData, **kwargs): + """ + A response containing a single form publication. + + :param data: A form publication resource object. + :type data: FormPublicationData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/form_publication_type.py b/src/datadog_api_client/v2/model/form_publication_type.py new file mode 100644 index 0000000000..825882fac2 --- /dev/null +++ b/src/datadog_api_client/v2/model/form_publication_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class FormPublicationType(ModelSimple): + """ + The resource type for a form publication. + + :param value: If omitted defaults to "form_publications". Must be one of ["form_publications"]. + :type value: str + """ + + allowed_values = { + "form_publications", + } + FORM_PUBLICATIONS: ClassVar["FormPublicationType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +FormPublicationType.FORM_PUBLICATIONS = FormPublicationType("form_publications") diff --git a/src/datadog_api_client/v2/model/form_response.py b/src/datadog_api_client/v2/model/form_response.py new file mode 100644 index 0000000000..a60ebd48fa --- /dev/null +++ b/src/datadog_api_client/v2/model/form_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_data import FormData + + +class FormResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_data import FormData + + return { + "data": (FormData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: FormData, **kwargs): + """ + A response containing a single form. + + :param data: A form resource object. + :type data: FormData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/form_type.py b/src/datadog_api_client/v2/model/form_type.py new file mode 100644 index 0000000000..179c2600c3 --- /dev/null +++ b/src/datadog_api_client/v2/model/form_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class FormType(ModelSimple): + """ + The resource type for a form. + + :param value: If omitted defaults to "forms". Must be one of ["forms"]. + :type value: str + """ + + allowed_values = { + "forms", + } + FORMS: ClassVar["FormType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +FormType.FORMS = FormType("forms") diff --git a/src/datadog_api_client/v2/model/form_ui_definition.py b/src/datadog_api_client/v2/model/form_ui_definition.py new file mode 100644 index 0000000000..d8e84f25f0 --- /dev/null +++ b/src/datadog_api_client/v2/model/form_ui_definition.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_ui_definition_ui_theme import FormUiDefinitionUiTheme + + +class FormUiDefinition(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_ui_definition_ui_theme import FormUiDefinitionUiTheme + + return { + "ui_order": ([str],), + "ui_theme": (FormUiDefinitionUiTheme,), + } + + attribute_map = { + "ui_order": "ui:order", + "ui_theme": "ui:theme", + } + + def __init__( + self_, + ui_order: Union[List[str], UnsetType] = unset, + ui_theme: Union[FormUiDefinitionUiTheme, UnsetType] = unset, + **kwargs, + ): + """ + UI configuration for rendering form fields, including widget overrides, field ordering, and themes. + + :param ui_order: The order in which form fields are displayed. + :type ui_order: [str], optional + + :param ui_theme: The visual theme applied to the form. + :type ui_theme: FormUiDefinitionUiTheme, optional + """ + if ui_order is not unset: + kwargs["ui_order"] = ui_order + if ui_theme is not unset: + kwargs["ui_theme"] = ui_theme + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/form_ui_definition_ui_theme.py b/src/datadog_api_client/v2/model/form_ui_definition_ui_theme.py new file mode 100644 index 0000000000..0cec2eed2c --- /dev/null +++ b/src/datadog_api_client/v2/model/form_ui_definition_ui_theme.py @@ -0,0 +1,46 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_ui_definition_ui_theme_primary_color import ( + FormUiDefinitionUiThemePrimaryColor, + ) + + +class FormUiDefinitionUiTheme(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_ui_definition_ui_theme_primary_color import ( + FormUiDefinitionUiThemePrimaryColor, + ) + + return { + "primary_color": (FormUiDefinitionUiThemePrimaryColor,), + } + + attribute_map = { + "primary_color": "primaryColor", + } + + def __init__(self_, primary_color: Union[FormUiDefinitionUiThemePrimaryColor, UnsetType] = unset, **kwargs): + """ + The visual theme applied to the form. + + :param primary_color: The primary color of the form theme. + :type primary_color: FormUiDefinitionUiThemePrimaryColor, optional + """ + if primary_color is not unset: + kwargs["primary_color"] = primary_color + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/form_ui_definition_ui_theme_primary_color.py b/src/datadog_api_client/v2/model/form_ui_definition_ui_theme_primary_color.py new file mode 100644 index 0000000000..77380a5aaf --- /dev/null +++ b/src/datadog_api_client/v2/model/form_ui_definition_ui_theme_primary_color.py @@ -0,0 +1,59 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class FormUiDefinitionUiThemePrimaryColor(ModelSimple): + """ + The primary color of the form theme. + + :param value: Must be one of ["gray", "red", "orange", "yellow", "green", "light-blue", "dark-blue", "magenta", "indigo"]. + :type value: str + """ + + allowed_values = { + "gray", + "red", + "orange", + "yellow", + "green", + "light-blue", + "dark-blue", + "magenta", + "indigo", + } + GRAY: ClassVar["FormUiDefinitionUiThemePrimaryColor"] + RED: ClassVar["FormUiDefinitionUiThemePrimaryColor"] + ORANGE: ClassVar["FormUiDefinitionUiThemePrimaryColor"] + YELLOW: ClassVar["FormUiDefinitionUiThemePrimaryColor"] + GREEN: ClassVar["FormUiDefinitionUiThemePrimaryColor"] + LIGHT_BLUE: ClassVar["FormUiDefinitionUiThemePrimaryColor"] + DARK_BLUE: ClassVar["FormUiDefinitionUiThemePrimaryColor"] + MAGENTA: ClassVar["FormUiDefinitionUiThemePrimaryColor"] + INDIGO: ClassVar["FormUiDefinitionUiThemePrimaryColor"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +FormUiDefinitionUiThemePrimaryColor.GRAY = FormUiDefinitionUiThemePrimaryColor("gray") +FormUiDefinitionUiThemePrimaryColor.RED = FormUiDefinitionUiThemePrimaryColor("red") +FormUiDefinitionUiThemePrimaryColor.ORANGE = FormUiDefinitionUiThemePrimaryColor("orange") +FormUiDefinitionUiThemePrimaryColor.YELLOW = FormUiDefinitionUiThemePrimaryColor("yellow") +FormUiDefinitionUiThemePrimaryColor.GREEN = FormUiDefinitionUiThemePrimaryColor("green") +FormUiDefinitionUiThemePrimaryColor.LIGHT_BLUE = FormUiDefinitionUiThemePrimaryColor("light-blue") +FormUiDefinitionUiThemePrimaryColor.DARK_BLUE = FormUiDefinitionUiThemePrimaryColor("dark-blue") +FormUiDefinitionUiThemePrimaryColor.MAGENTA = FormUiDefinitionUiThemePrimaryColor("magenta") +FormUiDefinitionUiThemePrimaryColor.INDIGO = FormUiDefinitionUiThemePrimaryColor("indigo") diff --git a/src/datadog_api_client/v2/model/form_update_attributes.py b/src/datadog_api_client/v2/model/form_update_attributes.py new file mode 100644 index 0000000000..6b394970f9 --- /dev/null +++ b/src/datadog_api_client/v2/model/form_update_attributes.py @@ -0,0 +1,62 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_datastore_config_attributes import FormDatastoreConfigAttributes + + +class FormUpdateAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_datastore_config_attributes import FormDatastoreConfigAttributes + + return { + "datastore_config": (FormDatastoreConfigAttributes,), + "description": (str,), + "name": (str,), + } + + attribute_map = { + "datastore_config": "datastore_config", + "description": "description", + "name": "name", + } + + def __init__( + self_, + datastore_config: Union[FormDatastoreConfigAttributes, UnsetType] = unset, + description: Union[str, UnsetType] = unset, + name: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + The fields to update on a form. At least one field must be provided. + + :param datastore_config: The datastore configuration for a form. + :type datastore_config: FormDatastoreConfigAttributes, optional + + :param description: The updated description of the form. + :type description: str, optional + + :param name: The updated name of the form. + :type name: str, optional + """ + if datastore_config is not unset: + kwargs["datastore_config"] = datastore_config + if description is not unset: + kwargs["description"] = description + if name is not unset: + kwargs["name"] = name + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/form_version_attributes.py b/src/datadog_api_client/v2/model/form_version_attributes.py new file mode 100644 index 0000000000..c5a92d9c7a --- /dev/null +++ b/src/datadog_api_client/v2/model/form_version_attributes.py @@ -0,0 +1,124 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, + unset, + UnsetType, + UUID, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_data_definition import FormDataDefinition + from datadog_api_client.v2.model.form_version_state import FormVersionState + from datadog_api_client.v2.model.form_ui_definition import FormUiDefinition + + +class FormVersionAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_data_definition import FormDataDefinition + from datadog_api_client.v2.model.form_version_state import FormVersionState + from datadog_api_client.v2.model.form_ui_definition import FormUiDefinition + + return { + "created_at": (datetime,), + "data_definition": (FormDataDefinition,), + "definition_signature": (str,), + "etag": (str, none_type), + "id": (str,), + "modified_at": (datetime,), + "state": (FormVersionState,), + "ui_definition": (FormUiDefinition,), + "user_id": (int,), + "user_uuid": (UUID,), + "version": (int,), + } + + attribute_map = { + "created_at": "created_at", + "data_definition": "data_definition", + "definition_signature": "definition_signature", + "etag": "etag", + "id": "id", + "modified_at": "modified_at", + "state": "state", + "ui_definition": "ui_definition", + "user_id": "user_id", + "user_uuid": "user_uuid", + "version": "version", + } + + def __init__( + self_, + created_at: datetime, + data_definition: FormDataDefinition, + definition_signature: str, + etag: Union[str, none_type], + modified_at: datetime, + state: FormVersionState, + ui_definition: FormUiDefinition, + user_id: int, + user_uuid: UUID, + version: int, + id: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + The attributes of a form version. + + :param created_at: The time at which the version was created. + :type created_at: datetime + + :param data_definition: A JSON Schema definition that describes the form's data fields. + :type data_definition: FormDataDefinition + + :param definition_signature: The signature of the version definition. + :type definition_signature: str + + :param etag: The ETag for optimistic concurrency control. + :type etag: str, none_type + + :param id: The ID of the form version. + :type id: str, optional + + :param modified_at: The time at which the version was last modified. + :type modified_at: datetime + + :param state: The state of a form version. + :type state: FormVersionState + + :param ui_definition: UI configuration for rendering form fields, including widget overrides, field ordering, and themes. + :type ui_definition: FormUiDefinition + + :param user_id: The ID of the user who created this version. + :type user_id: int + + :param user_uuid: The UUID of the user who created this version. + :type user_uuid: UUID + + :param version: The sequential version number. + :type version: int + """ + if id is not unset: + kwargs["id"] = id + super().__init__(kwargs) + + self_.created_at = created_at + self_.data_definition = data_definition + self_.definition_signature = definition_signature + self_.etag = etag + self_.modified_at = modified_at + self_.state = state + self_.ui_definition = ui_definition + self_.user_id = user_id + self_.user_uuid = user_uuid + self_.version = version diff --git a/src/datadog_api_client/v2/model/form_version_data.py b/src/datadog_api_client/v2/model/form_version_data.py new file mode 100644 index 0000000000..f1085e457a --- /dev/null +++ b/src/datadog_api_client/v2/model/form_version_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_version_attributes import FormVersionAttributes + from datadog_api_client.v2.model.form_version_type import FormVersionType + + +class FormVersionData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_version_attributes import FormVersionAttributes + from datadog_api_client.v2.model.form_version_type import FormVersionType + + return { + "attributes": (FormVersionAttributes,), + "id": (str,), + "type": (FormVersionType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: FormVersionAttributes, id: str, type: FormVersionType, **kwargs): + """ + A form version resource object. + + :param attributes: The attributes of a form version. + :type attributes: FormVersionAttributes + + :param id: The ID of the form version. + :type id: str + + :param type: The resource type for a form version. + :type type: FormVersionType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/form_version_response.py b/src/datadog_api_client/v2/model/form_version_response.py new file mode 100644 index 0000000000..36deaebc36 --- /dev/null +++ b/src/datadog_api_client/v2/model/form_version_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_version_data import FormVersionData + + +class FormVersionResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_version_data import FormVersionData + + return { + "data": (FormVersionData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: FormVersionData, **kwargs): + """ + A response containing a single form version. + + :param data: A form version resource object. + :type data: FormVersionData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/form_version_state.py b/src/datadog_api_client/v2/model/form_version_state.py new file mode 100644 index 0000000000..521faf36a3 --- /dev/null +++ b/src/datadog_api_client/v2/model/form_version_state.py @@ -0,0 +1,38 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class FormVersionState(ModelSimple): + """ + The state of a form version. + + :param value: Must be one of ["draft", "frozen"]. + :type value: str + """ + + allowed_values = { + "draft", + "frozen", + } + DRAFT: ClassVar["FormVersionState"] + FROZEN: ClassVar["FormVersionState"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +FormVersionState.DRAFT = FormVersionState("draft") +FormVersionState.FROZEN = FormVersionState("frozen") diff --git a/src/datadog_api_client/v2/model/form_version_type.py b/src/datadog_api_client/v2/model/form_version_type.py new file mode 100644 index 0000000000..22896a49b4 --- /dev/null +++ b/src/datadog_api_client/v2/model/form_version_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class FormVersionType(ModelSimple): + """ + The resource type for a form version. + + :param value: If omitted defaults to "form_versions". Must be one of ["form_versions"]. + :type value: str + """ + + allowed_values = { + "form_versions", + } + FORM_VERSIONS: ClassVar["FormVersionType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +FormVersionType.FORM_VERSIONS = FormVersionType("form_versions") diff --git a/src/datadog_api_client/v2/model/forms_response.py b/src/datadog_api_client/v2/model/forms_response.py new file mode 100644 index 0000000000..e3ba1e4b70 --- /dev/null +++ b/src/datadog_api_client/v2/model/forms_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_data import FormData + + +class FormsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_data import FormData + + return { + "data": ([FormData],), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: List[FormData], **kwargs): + """ + A response containing a list of forms. + + :param data: A list of form resource objects. + :type data: [FormData] + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/get_data_observability_monitor_run_status_response.py b/src/datadog_api_client/v2/model/get_data_observability_monitor_run_status_response.py new file mode 100644 index 0000000000..00234ada98 --- /dev/null +++ b/src/datadog_api_client/v2/model/get_data_observability_monitor_run_status_response.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.get_data_observability_monitor_run_status_response_data import ( + GetDataObservabilityMonitorRunStatusResponseData, + ) + + +class GetDataObservabilityMonitorRunStatusResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.get_data_observability_monitor_run_status_response_data import ( + GetDataObservabilityMonitorRunStatusResponseData, + ) + + return { + "data": (GetDataObservabilityMonitorRunStatusResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: GetDataObservabilityMonitorRunStatusResponseData, **kwargs): + """ + The response for getting the status of a data observability monitor run. + + :param data: The data object for a data observability monitor run status response. + :type data: GetDataObservabilityMonitorRunStatusResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/get_data_observability_monitor_run_status_response_attributes.py b/src/datadog_api_client/v2/model/get_data_observability_monitor_run_status_response_attributes.py new file mode 100644 index 0000000000..afca0c8dc6 --- /dev/null +++ b/src/datadog_api_client/v2/model/get_data_observability_monitor_run_status_response_attributes.py @@ -0,0 +1,51 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.data_observability_monitor_run_status import DataObservabilityMonitorRunStatus + + +class GetDataObservabilityMonitorRunStatusResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.data_observability_monitor_run_status import DataObservabilityMonitorRunStatus + + return { + "error_message": (str,), + "status": (DataObservabilityMonitorRunStatus,), + } + + attribute_map = { + "error_message": "error_message", + "status": "status", + } + + def __init__( + self_, status: DataObservabilityMonitorRunStatus, error_message: Union[str, UnsetType] = unset, **kwargs + ): + """ + The attributes of a data observability monitor run status response. + + :param error_message: Error message describing why the monitor run failed. Only present when status is error. + :type error_message: str, optional + + :param status: The status of a data observability monitor run. + :type status: DataObservabilityMonitorRunStatus + """ + if error_message is not unset: + kwargs["error_message"] = error_message + super().__init__(kwargs) + + self_.status = status diff --git a/src/datadog_api_client/v2/model/get_data_observability_monitor_run_status_response_data.py b/src/datadog_api_client/v2/model/get_data_observability_monitor_run_status_response_data.py new file mode 100644 index 0000000000..78936a1b58 --- /dev/null +++ b/src/datadog_api_client/v2/model/get_data_observability_monitor_run_status_response_data.py @@ -0,0 +1,64 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.get_data_observability_monitor_run_status_response_attributes import ( + GetDataObservabilityMonitorRunStatusResponseAttributes, + ) + from datadog_api_client.v2.model.data_observability_monitor_run_type import DataObservabilityMonitorRunType + + +class GetDataObservabilityMonitorRunStatusResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.get_data_observability_monitor_run_status_response_attributes import ( + GetDataObservabilityMonitorRunStatusResponseAttributes, + ) + from datadog_api_client.v2.model.data_observability_monitor_run_type import DataObservabilityMonitorRunType + + return { + "attributes": (GetDataObservabilityMonitorRunStatusResponseAttributes,), + "id": (str,), + "type": (DataObservabilityMonitorRunType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: GetDataObservabilityMonitorRunStatusResponseAttributes, + id: str, + type: DataObservabilityMonitorRunType, + **kwargs, + ): + """ + The data object for a data observability monitor run status response. + + :param attributes: The attributes of a data observability monitor run status response. + :type attributes: GetDataObservabilityMonitorRunStatusResponseAttributes + + :param id: The unique identifier of the monitor run. + :type id: str + + :param type: The JSON:API resource type for a data observability monitor run. + :type type: DataObservabilityMonitorRunType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/global_org.py b/src/datadog_api_client/v2/model/global_org.py new file mode 100644 index 0000000000..148d012365 --- /dev/null +++ b/src/datadog_api_client/v2/model/global_org.py @@ -0,0 +1,65 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, + unset, + UnsetType, + UUID, +) + + +class GlobalOrg(ModelNormal): + @cached_property + def openapi_types(_): + return { + "name": (str,), + "public_id": (str, none_type), + "subdomain": (str, none_type), + "uuid": (UUID,), + } + + attribute_map = { + "name": "name", + "public_id": "public_id", + "subdomain": "subdomain", + "uuid": "uuid", + } + + def __init__( + self_, + name: str, + uuid: UUID, + public_id: Union[str, none_type, UnsetType] = unset, + subdomain: Union[str, none_type, UnsetType] = unset, + **kwargs, + ): + """ + Organization information for a global organization association. + + :param name: The name of the organization. + :type name: str + + :param public_id: The public identifier of the organization. + :type public_id: str, none_type, optional + + :param subdomain: The subdomain used to access the organization, if configured. + :type subdomain: str, none_type, optional + + :param uuid: The UUID of the organization. + :type uuid: UUID + """ + if public_id is not unset: + kwargs["public_id"] = public_id + if subdomain is not unset: + kwargs["subdomain"] = subdomain + super().__init__(kwargs) + + self_.name = name + self_.uuid = uuid diff --git a/src/datadog_api_client/v2/model/global_org_attributes.py b/src/datadog_api_client/v2/model/global_org_attributes.py new file mode 100644 index 0000000000..9c55a51f97 --- /dev/null +++ b/src/datadog_api_client/v2/model/global_org_attributes.py @@ -0,0 +1,71 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.global_org import GlobalOrg + from datadog_api_client.v2.model.global_org_user import GlobalOrgUser + + +class GlobalOrgAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.global_org import GlobalOrg + from datadog_api_client.v2.model.global_org_user import GlobalOrgUser + + return { + "org": (GlobalOrg,), + "redirect_url": (str, none_type), + "source_region": (str,), + "user": (GlobalOrgUser,), + } + + attribute_map = { + "org": "org", + "redirect_url": "redirect_url", + "source_region": "source_region", + "user": "user", + } + + def __init__( + self_, + org: GlobalOrg, + source_region: str, + user: GlobalOrgUser, + redirect_url: Union[str, none_type, UnsetType] = unset, + **kwargs, + ): + """ + Attributes of an organization associated with the authenticated user. + + :param org: Organization information for a global organization association. + :type org: GlobalOrg + + :param redirect_url: The login URL used to switch into the organization, if available. + :type redirect_url: str, none_type, optional + + :param source_region: The source region of the organization. + :type source_region: str + + :param user: User information for a global organization association. + :type user: GlobalOrgUser + """ + if redirect_url is not unset: + kwargs["redirect_url"] = redirect_url + super().__init__(kwargs) + + self_.org = org + self_.source_region = source_region + self_.user = user diff --git a/src/datadog_api_client/v2/model/global_org_data.py b/src/datadog_api_client/v2/model/global_org_data.py new file mode 100644 index 0000000000..13b7169ff2 --- /dev/null +++ b/src/datadog_api_client/v2/model/global_org_data.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.global_org_attributes import GlobalOrgAttributes + from datadog_api_client.v2.model.global_org_type import GlobalOrgType + + +class GlobalOrgData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.global_org_attributes import GlobalOrgAttributes + from datadog_api_client.v2.model.global_org_type import GlobalOrgType + + return { + "attributes": (GlobalOrgAttributes,), + "type": (GlobalOrgType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: GlobalOrgAttributes, type: GlobalOrgType, **kwargs): + """ + An organization associated with the authenticated user. + + :param attributes: Attributes of an organization associated with the authenticated user. + :type attributes: GlobalOrgAttributes + + :param type: The resource type for global user organizations. + :type type: GlobalOrgType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/global_org_type.py b/src/datadog_api_client/v2/model/global_org_type.py new file mode 100644 index 0000000000..50c15baacd --- /dev/null +++ b/src/datadog_api_client/v2/model/global_org_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class GlobalOrgType(ModelSimple): + """ + The resource type for global user organizations. + + :param value: If omitted defaults to "global_user_orgs". Must be one of ["global_user_orgs"]. + :type value: str + """ + + allowed_values = { + "global_user_orgs", + } + GLOBAL_USER_ORGS: ClassVar["GlobalOrgType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +GlobalOrgType.GLOBAL_USER_ORGS = GlobalOrgType("global_user_orgs") diff --git a/src/datadog_api_client/v2/model/global_org_user.py b/src/datadog_api_client/v2/model/global_org_user.py new file mode 100644 index 0000000000..abf1791feb --- /dev/null +++ b/src/datadog_api_client/v2/model/global_org_user.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + UUID, +) + + +class GlobalOrgUser(ModelNormal): + @cached_property + def openapi_types(_): + return { + "handle": (str,), + "uuid": (UUID,), + } + + attribute_map = { + "handle": "handle", + "uuid": "uuid", + } + + def __init__(self_, handle: str, uuid: UUID, **kwargs): + """ + User information for a global organization association. + + :param handle: The handle of the user. + :type handle: str + + :param uuid: The UUID of the user. + :type uuid: UUID + """ + super().__init__(kwargs) + + self_.handle = handle + self_.uuid = uuid diff --git a/src/datadog_api_client/v2/model/global_orgs_links.py b/src/datadog_api_client/v2/model/global_orgs_links.py new file mode 100644 index 0000000000..b037130422 --- /dev/null +++ b/src/datadog_api_client/v2/model/global_orgs_links.py @@ -0,0 +1,57 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, + unset, + UnsetType, +) + + +class GlobalOrgsLinks(ModelNormal): + @cached_property + def openapi_types(_): + return { + "next": (str, none_type), + "prev": (str, none_type), + "self": (str,), + } + + attribute_map = { + "next": "next", + "prev": "prev", + "self": "self", + } + + def __init__( + self_, + next: Union[str, none_type, UnsetType] = unset, + prev: Union[str, none_type, UnsetType] = unset, + self: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + Pagination links. + + :param next: Link to the next page. + :type next: str, none_type, optional + + :param prev: Link to the previous page. + :type prev: str, none_type, optional + + :param self: Link to the current page. + :type self: str, optional + """ + if next is not unset: + kwargs["next"] = next + if prev is not unset: + kwargs["prev"] = prev + if self is not unset: + kwargs["self"] = self + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/global_orgs_meta.py b/src/datadog_api_client/v2/model/global_orgs_meta.py new file mode 100644 index 0000000000..4c39cee66b --- /dev/null +++ b/src/datadog_api_client/v2/model/global_orgs_meta.py @@ -0,0 +1,42 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.global_orgs_meta_page import GlobalOrgsMetaPage + + +class GlobalOrgsMeta(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.global_orgs_meta_page import GlobalOrgsMetaPage + + return { + "page": (GlobalOrgsMetaPage,), + } + + attribute_map = { + "page": "page", + } + + def __init__(self_, page: Union[GlobalOrgsMetaPage, UnsetType] = unset, **kwargs): + """ + Response metadata object. + + :param page: Paging attributes. + :type page: GlobalOrgsMetaPage, optional + """ + if page is not unset: + kwargs["page"] = page + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/global_orgs_meta_page.py b/src/datadog_api_client/v2/model/global_orgs_meta_page.py new file mode 100644 index 0000000000..08fe999e37 --- /dev/null +++ b/src/datadog_api_client/v2/model/global_orgs_meta_page.py @@ -0,0 +1,85 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.global_orgs_meta_page_type import GlobalOrgsMetaPageType + + +class GlobalOrgsMetaPage(ModelNormal): + validations = { + "limit": { + "inclusive_maximum": 1000, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.global_orgs_meta_page_type import GlobalOrgsMetaPageType + + return { + "cursor": (str,), + "limit": (int,), + "next_cursor": (str, none_type), + "prev_cursor": (str, none_type), + "type": (GlobalOrgsMetaPageType,), + } + + attribute_map = { + "cursor": "cursor", + "limit": "limit", + "next_cursor": "next_cursor", + "prev_cursor": "prev_cursor", + "type": "type", + } + + def __init__( + self_, + cursor: Union[str, UnsetType] = unset, + limit: Union[int, UnsetType] = unset, + next_cursor: Union[str, none_type, UnsetType] = unset, + prev_cursor: Union[str, none_type, UnsetType] = unset, + type: Union[GlobalOrgsMetaPageType, UnsetType] = unset, + **kwargs, + ): + """ + Paging attributes. + + :param cursor: The cursor used to get the current results, if any. + :type cursor: str, optional + + :param limit: Number of results returned. + :type limit: int, optional + + :param next_cursor: The cursor used to get the next results, if any. + :type next_cursor: str, none_type, optional + + :param prev_cursor: The cursor used to get the previous results, if any. + :type prev_cursor: str, none_type, optional + + :param type: Type of global orgs pagination. + :type type: GlobalOrgsMetaPageType, optional + """ + if cursor is not unset: + kwargs["cursor"] = cursor + if limit is not unset: + kwargs["limit"] = limit + if next_cursor is not unset: + kwargs["next_cursor"] = next_cursor + if prev_cursor is not unset: + kwargs["prev_cursor"] = prev_cursor + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/global_orgs_meta_page_type.py b/src/datadog_api_client/v2/model/global_orgs_meta_page_type.py new file mode 100644 index 0000000000..28e0b4e20e --- /dev/null +++ b/src/datadog_api_client/v2/model/global_orgs_meta_page_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class GlobalOrgsMetaPageType(ModelSimple): + """ + Type of global orgs pagination. + + :param value: If omitted defaults to "cursor". Must be one of ["cursor"]. + :type value: str + """ + + allowed_values = { + "cursor", + } + CURSOR: ClassVar["GlobalOrgsMetaPageType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +GlobalOrgsMetaPageType.CURSOR = GlobalOrgsMetaPageType("cursor") diff --git a/src/datadog_api_client/v2/model/global_orgs_response.py b/src/datadog_api_client/v2/model/global_orgs_response.py new file mode 100644 index 0000000000..b780aaaae7 --- /dev/null +++ b/src/datadog_api_client/v2/model/global_orgs_response.py @@ -0,0 +1,66 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.global_org_data import GlobalOrgData + from datadog_api_client.v2.model.global_orgs_links import GlobalOrgsLinks + from datadog_api_client.v2.model.global_orgs_meta import GlobalOrgsMeta + + +class GlobalOrgsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.global_org_data import GlobalOrgData + from datadog_api_client.v2.model.global_orgs_links import GlobalOrgsLinks + from datadog_api_client.v2.model.global_orgs_meta import GlobalOrgsMeta + + return { + "data": ([GlobalOrgData],), + "links": (GlobalOrgsLinks,), + "meta": (GlobalOrgsMeta,), + } + + attribute_map = { + "data": "data", + "links": "links", + "meta": "meta", + } + + def __init__( + self_, + data: List[GlobalOrgData], + links: Union[GlobalOrgsLinks, UnsetType] = unset, + meta: Union[GlobalOrgsMeta, UnsetType] = unset, + **kwargs, + ): + """ + Response containing organizations across regions for the authenticated user. + + :param data: Organizations across regions for the authenticated user. + :type data: [GlobalOrgData] + + :param links: Pagination links. + :type links: GlobalOrgsLinks, optional + + :param meta: Response metadata object. + :type meta: GlobalOrgsMeta, optional + """ + if links is not unset: + kwargs["links"] = links + if meta is not unset: + kwargs["meta"] = meta + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/google_chat_delegated_user_attributes.py b/src/datadog_api_client/v2/model/google_chat_delegated_user_attributes.py new file mode 100644 index 0000000000..c22d076f49 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_delegated_user_attributes.py @@ -0,0 +1,56 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class GoogleChatDelegatedUserAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "display_name": (str,), + "email": (str,), + "features": ([str],), + } + + attribute_map = { + "display_name": "display_name", + "email": "email", + "features": "features", + } + + def __init__( + self_, + display_name: Union[str, UnsetType] = unset, + email: Union[str, UnsetType] = unset, + features: Union[List[str], UnsetType] = unset, + **kwargs, + ): + """ + Google Chat delegated user attributes. + + :param display_name: The delegated user's display name. + :type display_name: str, optional + + :param email: The delegated user's email address. + :type email: str, optional + + :param features: The list of features enabled for the delegated user. + :type features: [str], optional + """ + if display_name is not unset: + kwargs["display_name"] = display_name + if email is not unset: + kwargs["email"] = email + if features is not unset: + kwargs["features"] = features + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/google_chat_delegated_user_data.py b/src/datadog_api_client/v2/model/google_chat_delegated_user_data.py new file mode 100644 index 0000000000..980c7bb7e7 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_delegated_user_data.py @@ -0,0 +1,71 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_delegated_user_attributes import GoogleChatDelegatedUserAttributes + from datadog_api_client.v2.model.google_chat_delegated_user_type import GoogleChatDelegatedUserType + + +class GoogleChatDelegatedUserData(ModelNormal): + validations = { + "id": { + "max_length": 100, + "min_length": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_delegated_user_attributes import GoogleChatDelegatedUserAttributes + from datadog_api_client.v2.model.google_chat_delegated_user_type import GoogleChatDelegatedUserType + + return { + "attributes": (GoogleChatDelegatedUserAttributes,), + "id": (str,), + "type": (GoogleChatDelegatedUserType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: Union[GoogleChatDelegatedUserAttributes, UnsetType] = unset, + id: Union[str, UnsetType] = unset, + type: Union[GoogleChatDelegatedUserType, UnsetType] = unset, + **kwargs, + ): + """ + Google Chat delegated user data from a response. + + :param attributes: Google Chat delegated user attributes. + :type attributes: GoogleChatDelegatedUserAttributes, optional + + :param id: The ID of the delegated user. + :type id: str, optional + + :param type: Google Chat delegated user resource type. + :type type: GoogleChatDelegatedUserType, optional + """ + if attributes is not unset: + kwargs["attributes"] = attributes + if id is not unset: + kwargs["id"] = id + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/google_chat_delegated_user_response.py b/src/datadog_api_client/v2/model/google_chat_delegated_user_response.py new file mode 100644 index 0000000000..8d2ff6bd56 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_delegated_user_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_delegated_user_data import GoogleChatDelegatedUserData + + +class GoogleChatDelegatedUserResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_delegated_user_data import GoogleChatDelegatedUserData + + return { + "data": (GoogleChatDelegatedUserData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: GoogleChatDelegatedUserData, **kwargs): + """ + Response containing a Google Chat delegated user. + + :param data: Google Chat delegated user data from a response. + :type data: GoogleChatDelegatedUserData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/google_chat_delegated_user_type.py b/src/datadog_api_client/v2/model/google_chat_delegated_user_type.py new file mode 100644 index 0000000000..f4ab7bcdc5 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_delegated_user_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class GoogleChatDelegatedUserType(ModelSimple): + """ + Google Chat delegated user resource type. + + :param value: If omitted defaults to "google-chat-delegated-user". Must be one of ["google-chat-delegated-user"]. + :type value: str + """ + + allowed_values = { + "google-chat-delegated-user", + } + GOOGLE_CHAT_DELEGATED_USER_TYPE: ClassVar["GoogleChatDelegatedUserType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +GoogleChatDelegatedUserType.GOOGLE_CHAT_DELEGATED_USER_TYPE = GoogleChatDelegatedUserType("google-chat-delegated-user") diff --git a/src/datadog_api_client/v2/model/google_chat_organization_attributes.py b/src/datadog_api_client/v2/model/google_chat_organization_attributes.py new file mode 100644 index 0000000000..059d6b1c4b --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_organization_attributes.py @@ -0,0 +1,52 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class GoogleChatOrganizationAttributes(ModelNormal): + validations = { + "domain_id": { + "max_length": 255, + }, + "domain_name": { + "max_length": 255, + }, + } + + @cached_property + def openapi_types(_): + return { + "domain_id": (str,), + "domain_name": (str,), + } + + attribute_map = { + "domain_id": "domain_id", + "domain_name": "domain_name", + } + + def __init__(self_, domain_id: Union[str, UnsetType] = unset, domain_name: Union[str, UnsetType] = unset, **kwargs): + """ + Google Chat organization attributes. + + :param domain_id: The Google Chat organization domain ID. + :type domain_id: str, optional + + :param domain_name: The Google Chat organization domain name. + :type domain_name: str, optional + """ + if domain_id is not unset: + kwargs["domain_id"] = domain_id + if domain_name is not unset: + kwargs["domain_name"] = domain_name + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/google_chat_organization_data.py b/src/datadog_api_client/v2/model/google_chat_organization_data.py new file mode 100644 index 0000000000..885e5d39aa --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_organization_data.py @@ -0,0 +1,83 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_organization_attributes import GoogleChatOrganizationAttributes + from datadog_api_client.v2.model.google_chat_organization_relationships import GoogleChatOrganizationRelationships + from datadog_api_client.v2.model.google_chat_organization_type import GoogleChatOrganizationType + + +class GoogleChatOrganizationData(ModelNormal): + validations = { + "id": { + "max_length": 100, + "min_length": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_organization_attributes import GoogleChatOrganizationAttributes + from datadog_api_client.v2.model.google_chat_organization_relationships import ( + GoogleChatOrganizationRelationships, + ) + from datadog_api_client.v2.model.google_chat_organization_type import GoogleChatOrganizationType + + return { + "attributes": (GoogleChatOrganizationAttributes,), + "id": (str,), + "relationships": (GoogleChatOrganizationRelationships,), + "type": (GoogleChatOrganizationType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "relationships": "relationships", + "type": "type", + } + + def __init__( + self_, + attributes: Union[GoogleChatOrganizationAttributes, UnsetType] = unset, + id: Union[str, UnsetType] = unset, + relationships: Union[GoogleChatOrganizationRelationships, UnsetType] = unset, + type: Union[GoogleChatOrganizationType, UnsetType] = unset, + **kwargs, + ): + """ + Google Chat organization data from a response. + + :param attributes: Google Chat organization attributes. + :type attributes: GoogleChatOrganizationAttributes, optional + + :param id: The ID of the Google Chat organization binding. + :type id: str, optional + + :param relationships: Google Chat organization relationships. + :type relationships: GoogleChatOrganizationRelationships, optional + + :param type: Google Chat organization resource type. + :type type: GoogleChatOrganizationType, optional + """ + if attributes is not unset: + kwargs["attributes"] = attributes + if id is not unset: + kwargs["id"] = id + if relationships is not unset: + kwargs["relationships"] = relationships + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/google_chat_organization_relationships.py b/src/datadog_api_client/v2/model/google_chat_organization_relationships.py new file mode 100644 index 0000000000..d90b923a9f --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_organization_relationships.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_organization_relationships_delegated_user import ( + GoogleChatOrganizationRelationshipsDelegatedUser, + ) + + +class GoogleChatOrganizationRelationships(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_organization_relationships_delegated_user import ( + GoogleChatOrganizationRelationshipsDelegatedUser, + ) + + return { + "delegated_user": (GoogleChatOrganizationRelationshipsDelegatedUser,), + } + + attribute_map = { + "delegated_user": "delegated_user", + } + + def __init__( + self_, delegated_user: Union[GoogleChatOrganizationRelationshipsDelegatedUser, UnsetType] = unset, **kwargs + ): + """ + Google Chat organization relationships. + + :param delegated_user: The delegated user relationship. + :type delegated_user: GoogleChatOrganizationRelationshipsDelegatedUser, optional + """ + if delegated_user is not unset: + kwargs["delegated_user"] = delegated_user + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/google_chat_organization_relationships_delegated_user.py b/src/datadog_api_client/v2/model/google_chat_organization_relationships_delegated_user.py new file mode 100644 index 0000000000..9e11fd5a23 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_organization_relationships_delegated_user.py @@ -0,0 +1,46 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_organization_relationships_delegated_user_data import ( + GoogleChatOrganizationRelationshipsDelegatedUserData, + ) + + +class GoogleChatOrganizationRelationshipsDelegatedUser(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_organization_relationships_delegated_user_data import ( + GoogleChatOrganizationRelationshipsDelegatedUserData, + ) + + return { + "data": (GoogleChatOrganizationRelationshipsDelegatedUserData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: Union[GoogleChatOrganizationRelationshipsDelegatedUserData, UnsetType] = unset, **kwargs): + """ + The delegated user relationship. + + :param data: Delegated user relationship data. + :type data: GoogleChatOrganizationRelationshipsDelegatedUserData, optional + """ + if data is not unset: + kwargs["data"] = data + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/google_chat_organization_relationships_delegated_user_data.py b/src/datadog_api_client/v2/model/google_chat_organization_relationships_delegated_user_data.py new file mode 100644 index 0000000000..afcb8b7f74 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_organization_relationships_delegated_user_data.py @@ -0,0 +1,51 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_delegated_user_type import GoogleChatDelegatedUserType + + +class GoogleChatOrganizationRelationshipsDelegatedUserData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_delegated_user_type import GoogleChatDelegatedUserType + + return { + "id": (str,), + "type": (GoogleChatDelegatedUserType,), + } + + attribute_map = { + "id": "id", + "type": "type", + } + + def __init__( + self_, id: Union[str, UnsetType] = unset, type: Union[GoogleChatDelegatedUserType, UnsetType] = unset, **kwargs + ): + """ + Delegated user relationship data. + + :param id: The ID of the delegated user. + :type id: str, optional + + :param type: Google Chat delegated user resource type. + :type type: GoogleChatDelegatedUserType, optional + """ + if id is not unset: + kwargs["id"] = id + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/google_chat_organization_response.py b/src/datadog_api_client/v2/model/google_chat_organization_response.py new file mode 100644 index 0000000000..634f17c08b --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_organization_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_organization_data import GoogleChatOrganizationData + + +class GoogleChatOrganizationResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_organization_data import GoogleChatOrganizationData + + return { + "data": (GoogleChatOrganizationData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: GoogleChatOrganizationData, **kwargs): + """ + Response containing a Google Chat organization binding. + + :param data: Google Chat organization data from a response. + :type data: GoogleChatOrganizationData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/google_chat_organization_type.py b/src/datadog_api_client/v2/model/google_chat_organization_type.py new file mode 100644 index 0000000000..2d9c206085 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_organization_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class GoogleChatOrganizationType(ModelSimple): + """ + Google Chat organization resource type. + + :param value: If omitted defaults to "google-chat-organization". Must be one of ["google-chat-organization"]. + :type value: str + """ + + allowed_values = { + "google-chat-organization", + } + GOOGLE_CHAT_ORGANIZATION_TYPE: ClassVar["GoogleChatOrganizationType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +GoogleChatOrganizationType.GOOGLE_CHAT_ORGANIZATION_TYPE = GoogleChatOrganizationType("google-chat-organization") diff --git a/src/datadog_api_client/v2/model/google_chat_organizations_response.py b/src/datadog_api_client/v2/model/google_chat_organizations_response.py new file mode 100644 index 0000000000..4b8c6ae3ac --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_organizations_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_organization_data import GoogleChatOrganizationData + + +class GoogleChatOrganizationsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_organization_data import GoogleChatOrganizationData + + return { + "data": ([GoogleChatOrganizationData],), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: List[GoogleChatOrganizationData], **kwargs): + """ + Response containing a list of Google Chat organization bindings. + + :param data: An array of Google Chat organization bindings. + :type data: [GoogleChatOrganizationData] + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/google_chat_target_audience_attributes.py b/src/datadog_api_client/v2/model/google_chat_target_audience_attributes.py new file mode 100644 index 0000000000..8a6c2e8c38 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_target_audience_attributes.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class GoogleChatTargetAudienceAttributes(ModelNormal): + validations = { + "audience_id": { + "max_length": 255, + }, + "audience_name": { + "max_length": 255, + }, + } + + @cached_property + def openapi_types(_): + return { + "audience_id": (str,), + "audience_name": (str,), + } + + attribute_map = { + "audience_id": "audience_id", + "audience_name": "audience_name", + } + + def __init__(self_, audience_id: str, audience_name: str, **kwargs): + """ + Google Chat target audience attributes. + + :param audience_id: The audience ID. + :type audience_id: str + + :param audience_name: The audience name. + :type audience_name: str + """ + super().__init__(kwargs) + + self_.audience_id = audience_id + self_.audience_name = audience_name diff --git a/src/datadog_api_client/v2/model/google_chat_target_audience_create_request.py b/src/datadog_api_client/v2/model/google_chat_target_audience_create_request.py new file mode 100644 index 0000000000..34704688d2 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_target_audience_create_request.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_target_audience_create_request_data import ( + GoogleChatTargetAudienceCreateRequestData, + ) + + +class GoogleChatTargetAudienceCreateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_target_audience_create_request_data import ( + GoogleChatTargetAudienceCreateRequestData, + ) + + return { + "data": (GoogleChatTargetAudienceCreateRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: GoogleChatTargetAudienceCreateRequestData, **kwargs): + """ + Create target audience request. + + :param data: Data for a create target audience request. + :type data: GoogleChatTargetAudienceCreateRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/google_chat_target_audience_create_request_attributes.py b/src/datadog_api_client/v2/model/google_chat_target_audience_create_request_attributes.py new file mode 100644 index 0000000000..19f12bfc45 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_target_audience_create_request_attributes.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class GoogleChatTargetAudienceCreateRequestAttributes(ModelNormal): + validations = { + "audience_id": { + "max_length": 255, + }, + "audience_name": { + "max_length": 255, + }, + } + + @cached_property + def openapi_types(_): + return { + "audience_id": (str,), + "audience_name": (str,), + } + + attribute_map = { + "audience_id": "audience_id", + "audience_name": "audience_name", + } + + def __init__(self_, audience_id: str, audience_name: str, **kwargs): + """ + Attributes for creating a Google Chat target audience. + + :param audience_id: The audience ID. + :type audience_id: str + + :param audience_name: The audience name. + :type audience_name: str + """ + super().__init__(kwargs) + + self_.audience_id = audience_id + self_.audience_name = audience_name diff --git a/src/datadog_api_client/v2/model/google_chat_target_audience_create_request_data.py b/src/datadog_api_client/v2/model/google_chat_target_audience_create_request_data.py new file mode 100644 index 0000000000..56af63b893 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_target_audience_create_request_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_target_audience_create_request_attributes import ( + GoogleChatTargetAudienceCreateRequestAttributes, + ) + from datadog_api_client.v2.model.google_chat_target_audience_type import GoogleChatTargetAudienceType + + +class GoogleChatTargetAudienceCreateRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_target_audience_create_request_attributes import ( + GoogleChatTargetAudienceCreateRequestAttributes, + ) + from datadog_api_client.v2.model.google_chat_target_audience_type import GoogleChatTargetAudienceType + + return { + "attributes": (GoogleChatTargetAudienceCreateRequestAttributes,), + "type": (GoogleChatTargetAudienceType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, attributes: GoogleChatTargetAudienceCreateRequestAttributes, type: GoogleChatTargetAudienceType, **kwargs + ): + """ + Data for a create target audience request. + + :param attributes: Attributes for creating a Google Chat target audience. + :type attributes: GoogleChatTargetAudienceCreateRequestAttributes + + :param type: Google Chat target audience resource type. + :type type: GoogleChatTargetAudienceType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/google_chat_target_audience_data.py b/src/datadog_api_client/v2/model/google_chat_target_audience_data.py new file mode 100644 index 0000000000..9023f43132 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_target_audience_data.py @@ -0,0 +1,73 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_target_audience_attributes import GoogleChatTargetAudienceAttributes + from datadog_api_client.v2.model.google_chat_target_audience_type import GoogleChatTargetAudienceType + + +class GoogleChatTargetAudienceData(ModelNormal): + validations = { + "id": { + "max_length": 100, + "min_length": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_target_audience_attributes import ( + GoogleChatTargetAudienceAttributes, + ) + from datadog_api_client.v2.model.google_chat_target_audience_type import GoogleChatTargetAudienceType + + return { + "attributes": (GoogleChatTargetAudienceAttributes,), + "id": (str,), + "type": (GoogleChatTargetAudienceType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: Union[GoogleChatTargetAudienceAttributes, UnsetType] = unset, + id: Union[str, UnsetType] = unset, + type: Union[GoogleChatTargetAudienceType, UnsetType] = unset, + **kwargs, + ): + """ + Google Chat target audience data from a response. + + :param attributes: Google Chat target audience attributes. + :type attributes: GoogleChatTargetAudienceAttributes, optional + + :param id: The ID of the target audience. + :type id: str, optional + + :param type: Google Chat target audience resource type. + :type type: GoogleChatTargetAudienceType, optional + """ + if attributes is not unset: + kwargs["attributes"] = attributes + if id is not unset: + kwargs["id"] = id + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/google_chat_target_audience_response.py b/src/datadog_api_client/v2/model/google_chat_target_audience_response.py new file mode 100644 index 0000000000..75d550c52b --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_target_audience_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_target_audience_data import GoogleChatTargetAudienceData + + +class GoogleChatTargetAudienceResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_target_audience_data import GoogleChatTargetAudienceData + + return { + "data": (GoogleChatTargetAudienceData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: GoogleChatTargetAudienceData, **kwargs): + """ + Response containing a Google Chat target audience. + + :param data: Google Chat target audience data from a response. + :type data: GoogleChatTargetAudienceData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_type.py b/src/datadog_api_client/v2/model/google_chat_target_audience_type.py similarity index 53% rename from src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_type.py rename to src/datadog_api_client/v2/model/google_chat_target_audience_type.py index b6cb057a9b..301046c218 100644 --- a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_type.py +++ b/src/datadog_api_client/v2/model/google_chat_target_audience_type.py @@ -12,18 +12,18 @@ from typing import ClassVar -class RumHardcodedRetentionFilterType(ModelSimple): +class GoogleChatTargetAudienceType(ModelSimple): """ - The resource type. The value must be `hardcoded_retention_filters`. + Google Chat target audience resource type. - :param value: If omitted defaults to "hardcoded_retention_filters". Must be one of ["hardcoded_retention_filters"]. + :param value: If omitted defaults to "google-chat-target-audience". Must be one of ["google-chat-target-audience"]. :type value: str """ allowed_values = { - "hardcoded_retention_filters", + "google-chat-target-audience", } - HARDCODED_RETENTION_FILTERS: ClassVar["RumHardcodedRetentionFilterType"] + GOOGLE_CHAT_TARGET_AUDIENCE_TYPE: ClassVar["GoogleChatTargetAudienceType"] @cached_property def openapi_types(_): @@ -32,6 +32,6 @@ def openapi_types(_): } -RumHardcodedRetentionFilterType.HARDCODED_RETENTION_FILTERS = RumHardcodedRetentionFilterType( - "hardcoded_retention_filters" +GoogleChatTargetAudienceType.GOOGLE_CHAT_TARGET_AUDIENCE_TYPE = GoogleChatTargetAudienceType( + "google-chat-target-audience" ) diff --git a/src/datadog_api_client/v2/model/google_chat_target_audience_update_request.py b/src/datadog_api_client/v2/model/google_chat_target_audience_update_request.py new file mode 100644 index 0000000000..21efdd0a6c --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_target_audience_update_request.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_target_audience_update_request_data import ( + GoogleChatTargetAudienceUpdateRequestData, + ) + + +class GoogleChatTargetAudienceUpdateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_target_audience_update_request_data import ( + GoogleChatTargetAudienceUpdateRequestData, + ) + + return { + "data": (GoogleChatTargetAudienceUpdateRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: GoogleChatTargetAudienceUpdateRequestData, **kwargs): + """ + Update target audience request. + + :param data: Data for an update target audience request. + :type data: GoogleChatTargetAudienceUpdateRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/google_chat_target_audience_update_request_attributes.py b/src/datadog_api_client/v2/model/google_chat_target_audience_update_request_attributes.py new file mode 100644 index 0000000000..944cbf5309 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_target_audience_update_request_attributes.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class GoogleChatTargetAudienceUpdateRequestAttributes(ModelNormal): + validations = { + "audience_id": { + "max_length": 255, + }, + "audience_name": { + "max_length": 255, + }, + } + + @cached_property + def openapi_types(_): + return { + "audience_id": (str,), + "audience_name": (str,), + } + + attribute_map = { + "audience_id": "audience_id", + "audience_name": "audience_name", + } + + def __init__( + self_, audience_id: Union[str, UnsetType] = unset, audience_name: Union[str, UnsetType] = unset, **kwargs + ): + """ + Attributes for updating a Google Chat target audience. + + :param audience_id: The audience ID. + :type audience_id: str, optional + + :param audience_name: The audience name. + :type audience_name: str, optional + """ + if audience_id is not unset: + kwargs["audience_id"] = audience_id + if audience_name is not unset: + kwargs["audience_name"] = audience_name + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/google_chat_target_audience_update_request_data.py b/src/datadog_api_client/v2/model/google_chat_target_audience_update_request_data.py new file mode 100644 index 0000000000..d9a99e2bb1 --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_target_audience_update_request_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_target_audience_update_request_attributes import ( + GoogleChatTargetAudienceUpdateRequestAttributes, + ) + from datadog_api_client.v2.model.google_chat_target_audience_type import GoogleChatTargetAudienceType + + +class GoogleChatTargetAudienceUpdateRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_target_audience_update_request_attributes import ( + GoogleChatTargetAudienceUpdateRequestAttributes, + ) + from datadog_api_client.v2.model.google_chat_target_audience_type import GoogleChatTargetAudienceType + + return { + "attributes": (GoogleChatTargetAudienceUpdateRequestAttributes,), + "type": (GoogleChatTargetAudienceType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, attributes: GoogleChatTargetAudienceUpdateRequestAttributes, type: GoogleChatTargetAudienceType, **kwargs + ): + """ + Data for an update target audience request. + + :param attributes: Attributes for updating a Google Chat target audience. + :type attributes: GoogleChatTargetAudienceUpdateRequestAttributes + + :param type: Google Chat target audience resource type. + :type type: GoogleChatTargetAudienceType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/google_chat_target_audiences_response.py b/src/datadog_api_client/v2/model/google_chat_target_audiences_response.py new file mode 100644 index 0000000000..b56898987b --- /dev/null +++ b/src/datadog_api_client/v2/model/google_chat_target_audiences_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.google_chat_target_audience_data import GoogleChatTargetAudienceData + + +class GoogleChatTargetAudiencesResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.google_chat_target_audience_data import GoogleChatTargetAudienceData + + return { + "data": ([GoogleChatTargetAudienceData],), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: List[GoogleChatTargetAudienceData], **kwargs): + """ + Response containing a list of Google Chat target audiences. + + :param data: An array of Google Chat target audiences. + :type data: [GoogleChatTargetAudienceData] + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/incident_service_create_data.py b/src/datadog_api_client/v2/model/incident_service_create_data.py deleted file mode 100644 index f8f7f8c6a1..0000000000 --- a/src/datadog_api_client/v2/model/incident_service_create_data.py +++ /dev/null @@ -1,69 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.incident_service_create_attributes import IncidentServiceCreateAttributes - from datadog_api_client.v2.model.incident_service_relationships import IncidentServiceRelationships - from datadog_api_client.v2.model.incident_service_type import IncidentServiceType - - -class IncidentServiceCreateData(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.incident_service_create_attributes import IncidentServiceCreateAttributes - from datadog_api_client.v2.model.incident_service_relationships import IncidentServiceRelationships - from datadog_api_client.v2.model.incident_service_type import IncidentServiceType - - return { - "attributes": (IncidentServiceCreateAttributes,), - "relationships": (IncidentServiceRelationships,), - "type": (IncidentServiceType,), - } - - attribute_map = { - "attributes": "attributes", - "relationships": "relationships", - "type": "type", - } - read_only_vars = { - "relationships", - } - - def __init__( - self_, - type: IncidentServiceType, - attributes: Union[IncidentServiceCreateAttributes, UnsetType] = unset, - relationships: Union[IncidentServiceRelationships, UnsetType] = unset, - **kwargs, - ): - """ - Incident Service payload for create requests. - - :param attributes: The incident service's attributes for a create request. - :type attributes: IncidentServiceCreateAttributes, optional - - :param relationships: The incident service's relationships. - :type relationships: IncidentServiceRelationships, optional - - :param type: Incident service resource type. - :type type: IncidentServiceType - """ - if attributes is not unset: - kwargs["attributes"] = attributes - if relationships is not unset: - kwargs["relationships"] = relationships - super().__init__(kwargs) - - self_.type = type diff --git a/src/datadog_api_client/v2/model/incident_service_relationships.py b/src/datadog_api_client/v2/model/incident_service_relationships.py deleted file mode 100644 index d0536727fb..0000000000 --- a/src/datadog_api_client/v2/model/incident_service_relationships.py +++ /dev/null @@ -1,54 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.relationship_to_user import RelationshipToUser - - -class IncidentServiceRelationships(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.relationship_to_user import RelationshipToUser - - return { - "created_by": (RelationshipToUser,), - "last_modified_by": (RelationshipToUser,), - } - - attribute_map = { - "created_by": "created_by", - "last_modified_by": "last_modified_by", - } - - def __init__( - self_, - created_by: Union[RelationshipToUser, UnsetType] = unset, - last_modified_by: Union[RelationshipToUser, UnsetType] = unset, - **kwargs, - ): - """ - The incident service's relationships. - - :param created_by: Relationship to user. - :type created_by: RelationshipToUser, optional - - :param last_modified_by: Relationship to user. - :type last_modified_by: RelationshipToUser, optional - """ - if created_by is not unset: - kwargs["created_by"] = created_by - if last_modified_by is not unset: - kwargs["last_modified_by"] = last_modified_by - super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/incident_service_response.py b/src/datadog_api_client/v2/model/incident_service_response.py deleted file mode 100644 index 2258dbd44f..0000000000 --- a/src/datadog_api_client/v2/model/incident_service_response.py +++ /dev/null @@ -1,60 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import List, Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.incident_service_response_data import IncidentServiceResponseData - from datadog_api_client.v2.model.incident_service_included_items import IncidentServiceIncludedItems - from datadog_api_client.v2.model.user import User - - -class IncidentServiceResponse(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.incident_service_response_data import IncidentServiceResponseData - from datadog_api_client.v2.model.incident_service_included_items import IncidentServiceIncludedItems - - return { - "data": (IncidentServiceResponseData,), - "included": ([IncidentServiceIncludedItems],), - } - - attribute_map = { - "data": "data", - "included": "included", - } - read_only_vars = { - "included", - } - - def __init__( - self_, - data: IncidentServiceResponseData, - included: Union[List[Union[IncidentServiceIncludedItems, User]], UnsetType] = unset, - **kwargs, - ): - """ - Response with an incident service payload. - - :param data: Incident Service data from responses. - :type data: IncidentServiceResponseData - - :param included: Included objects from relationships. - :type included: [IncidentServiceIncludedItems], optional - """ - if included is not unset: - kwargs["included"] = included - super().__init__(kwargs) - - self_.data = data diff --git a/src/datadog_api_client/v2/model/incident_service_response_attributes.py b/src/datadog_api_client/v2/model/incident_service_response_attributes.py deleted file mode 100644 index 449f268266..0000000000 --- a/src/datadog_api_client/v2/model/incident_service_response_attributes.py +++ /dev/null @@ -1,61 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Union - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - datetime, - unset, - UnsetType, -) - - -class IncidentServiceResponseAttributes(ModelNormal): - @cached_property - def openapi_types(_): - return { - "created": (datetime,), - "modified": (datetime,), - "name": (str,), - } - - attribute_map = { - "created": "created", - "modified": "modified", - "name": "name", - } - read_only_vars = { - "created", - "modified", - } - - def __init__( - self_, - created: Union[datetime, UnsetType] = unset, - modified: Union[datetime, UnsetType] = unset, - name: Union[str, UnsetType] = unset, - **kwargs, - ): - """ - The incident service's attributes from a response. - - :param created: Timestamp of when the incident service was created. - :type created: datetime, optional - - :param modified: Timestamp of when the incident service was modified. - :type modified: datetime, optional - - :param name: Name of the incident service. - :type name: str, optional - """ - if created is not unset: - kwargs["created"] = created - if modified is not unset: - kwargs["modified"] = modified - if name is not unset: - kwargs["name"] = name - super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/incident_service_response_data.py b/src/datadog_api_client/v2/model/incident_service_response_data.py deleted file mode 100644 index e2b3cb2c48..0000000000 --- a/src/datadog_api_client/v2/model/incident_service_response_data.py +++ /dev/null @@ -1,76 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.incident_service_response_attributes import IncidentServiceResponseAttributes - from datadog_api_client.v2.model.incident_service_relationships import IncidentServiceRelationships - from datadog_api_client.v2.model.incident_service_type import IncidentServiceType - - -class IncidentServiceResponseData(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.incident_service_response_attributes import IncidentServiceResponseAttributes - from datadog_api_client.v2.model.incident_service_relationships import IncidentServiceRelationships - from datadog_api_client.v2.model.incident_service_type import IncidentServiceType - - return { - "attributes": (IncidentServiceResponseAttributes,), - "id": (str,), - "relationships": (IncidentServiceRelationships,), - "type": (IncidentServiceType,), - } - - attribute_map = { - "attributes": "attributes", - "id": "id", - "relationships": "relationships", - "type": "type", - } - read_only_vars = { - "relationships", - } - - def __init__( - self_, - id: str, - type: IncidentServiceType, - attributes: Union[IncidentServiceResponseAttributes, UnsetType] = unset, - relationships: Union[IncidentServiceRelationships, UnsetType] = unset, - **kwargs, - ): - """ - Incident Service data from responses. - - :param attributes: The incident service's attributes from a response. - :type attributes: IncidentServiceResponseAttributes, optional - - :param id: The incident service's ID. - :type id: str - - :param relationships: The incident service's relationships. - :type relationships: IncidentServiceRelationships, optional - - :param type: Incident service resource type. - :type type: IncidentServiceType - """ - if attributes is not unset: - kwargs["attributes"] = attributes - if relationships is not unset: - kwargs["relationships"] = relationships - super().__init__(kwargs) - - self_.id = id - self_.type = type diff --git a/src/datadog_api_client/v2/model/incident_service_update_data.py b/src/datadog_api_client/v2/model/incident_service_update_data.py deleted file mode 100644 index 6888051328..0000000000 --- a/src/datadog_api_client/v2/model/incident_service_update_data.py +++ /dev/null @@ -1,77 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.incident_service_update_attributes import IncidentServiceUpdateAttributes - from datadog_api_client.v2.model.incident_service_relationships import IncidentServiceRelationships - from datadog_api_client.v2.model.incident_service_type import IncidentServiceType - - -class IncidentServiceUpdateData(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.incident_service_update_attributes import IncidentServiceUpdateAttributes - from datadog_api_client.v2.model.incident_service_relationships import IncidentServiceRelationships - from datadog_api_client.v2.model.incident_service_type import IncidentServiceType - - return { - "attributes": (IncidentServiceUpdateAttributes,), - "id": (str,), - "relationships": (IncidentServiceRelationships,), - "type": (IncidentServiceType,), - } - - attribute_map = { - "attributes": "attributes", - "id": "id", - "relationships": "relationships", - "type": "type", - } - read_only_vars = { - "relationships", - } - - def __init__( - self_, - type: IncidentServiceType, - attributes: Union[IncidentServiceUpdateAttributes, UnsetType] = unset, - id: Union[str, UnsetType] = unset, - relationships: Union[IncidentServiceRelationships, UnsetType] = unset, - **kwargs, - ): - """ - Incident Service payload for update requests. - - :param attributes: The incident service's attributes for an update request. - :type attributes: IncidentServiceUpdateAttributes, optional - - :param id: The incident service's ID. - :type id: str, optional - - :param relationships: The incident service's relationships. - :type relationships: IncidentServiceRelationships, optional - - :param type: Incident service resource type. - :type type: IncidentServiceType - """ - if attributes is not unset: - kwargs["attributes"] = attributes - if id is not unset: - kwargs["id"] = id - if relationships is not unset: - kwargs["relationships"] = relationships - super().__init__(kwargs) - - self_.type = type diff --git a/src/datadog_api_client/v2/model/incident_services_response.py b/src/datadog_api_client/v2/model/incident_services_response.py deleted file mode 100644 index 8dd191fb70..0000000000 --- a/src/datadog_api_client/v2/model/incident_services_response.py +++ /dev/null @@ -1,71 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import List, Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.incident_service_response_data import IncidentServiceResponseData - from datadog_api_client.v2.model.incident_service_included_items import IncidentServiceIncludedItems - from datadog_api_client.v2.model.incident_response_meta import IncidentResponseMeta - from datadog_api_client.v2.model.user import User - - -class IncidentServicesResponse(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.incident_service_response_data import IncidentServiceResponseData - from datadog_api_client.v2.model.incident_service_included_items import IncidentServiceIncludedItems - from datadog_api_client.v2.model.incident_response_meta import IncidentResponseMeta - - return { - "data": ([IncidentServiceResponseData],), - "included": ([IncidentServiceIncludedItems],), - "meta": (IncidentResponseMeta,), - } - - attribute_map = { - "data": "data", - "included": "included", - "meta": "meta", - } - read_only_vars = { - "included", - "meta", - } - - def __init__( - self_, - data: List[IncidentServiceResponseData], - included: Union[List[Union[IncidentServiceIncludedItems, User]], UnsetType] = unset, - meta: Union[IncidentResponseMeta, UnsetType] = unset, - **kwargs, - ): - """ - Response with a list of incident service payloads. - - :param data: An array of incident services. - :type data: [IncidentServiceResponseData] - - :param included: Included related resources which the user requested. - :type included: [IncidentServiceIncludedItems], optional - - :param meta: The metadata object containing pagination metadata. - :type meta: IncidentResponseMeta, optional - """ - if included is not unset: - kwargs["included"] = included - if meta is not unset: - kwargs["meta"] = meta - super().__init__(kwargs) - - self_.data = data diff --git a/src/datadog_api_client/v2/model/latest_version_match_policy.py b/src/datadog_api_client/v2/model/latest_version_match_policy.py new file mode 100644 index 0000000000..26455b64af --- /dev/null +++ b/src/datadog_api_client/v2/model/latest_version_match_policy.py @@ -0,0 +1,38 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class LatestVersionMatchPolicy(ModelSimple): + """ + The policy for matching the latest form version during an upsert operation. + + :param value: Must be one of ["none", "if_etag_match"]. + :type value: str + """ + + allowed_values = { + "none", + "if_etag_match", + } + NONE: ClassVar["LatestVersionMatchPolicy"] + IF_ETAG_MATCH: ClassVar["LatestVersionMatchPolicy"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +LatestVersionMatchPolicy.NONE = LatestVersionMatchPolicy("none") +LatestVersionMatchPolicy.IF_ETAG_MATCH = LatestVersionMatchPolicy("if_etag_match") diff --git a/src/datadog_api_client/v2/model/list_shared_dashboards_response.py b/src/datadog_api_client/v2/model/list_shared_dashboards_response.py new file mode 100644 index 0000000000..c2c367d38e --- /dev/null +++ b/src/datadog_api_client/v2/model/list_shared_dashboards_response.py @@ -0,0 +1,55 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.shared_dashboard_response import SharedDashboardResponse + from datadog_api_client.v2.model.shared_dashboard_included import SharedDashboardIncluded + from datadog_api_client.v2.model.shared_dashboard_included_dashboard import SharedDashboardIncludedDashboard + from datadog_api_client.v2.model.shared_dashboard_included_user import SharedDashboardIncludedUser + + +class ListSharedDashboardsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.shared_dashboard_response import SharedDashboardResponse + from datadog_api_client.v2.model.shared_dashboard_included import SharedDashboardIncluded + + return { + "data": ([SharedDashboardResponse],), + "included": ([SharedDashboardIncluded],), + } + + attribute_map = { + "data": "data", + "included": "included", + } + + def __init__( + self_, + data: List[SharedDashboardResponse], + included: List[Union[SharedDashboardIncluded, SharedDashboardIncludedDashboard, SharedDashboardIncludedUser]], + **kwargs, + ): + """ + Response containing shared dashboards for a dashboard. + + :param data: Shared dashboards for the dashboard. + :type data: [SharedDashboardResponse] + + :param included: Users and dashboards related to the shared dashboards. + :type included: [SharedDashboardIncluded] + """ + super().__init__(kwargs) + + self_.data = data + self_.included = included diff --git a/src/datadog_api_client/v2/model/llm_obs_annotated_interactions_data_response.py b/src/datadog_api_client/v2/model/llm_obs_annotated_interactions_data_response.py index 99e25e4465..42926f9565 100644 --- a/src/datadog_api_client/v2/model/llm_obs_annotated_interactions_data_response.py +++ b/src/datadog_api_client/v2/model/llm_obs_annotated_interactions_data_response.py @@ -51,7 +51,7 @@ def __init__( :param attributes: Attributes containing the list of annotated interactions. :type attributes: LLMObsAnnotatedInteractionsDataAttributesResponse - :param id: The queue ID. + :param id: The annotation queue ID. :type id: str :param type: Resource type for annotated interactions. diff --git a/src/datadog_api_client/v2/model/llm_obs_annotation_assessment.py b/src/datadog_api_client/v2/model/llm_obs_annotation_assessment.py new file mode 100644 index 0000000000..5eec26fa49 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_annotation_assessment.py @@ -0,0 +1,38 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class LLMObsAnnotationAssessment(ModelSimple): + """ + Assessment result for a label value. + + :param value: Must be one of ["pass", "fail"]. + :type value: str + """ + + allowed_values = { + "pass", + "fail", + } + PASS: ClassVar["LLMObsAnnotationAssessment"] + FAIL: ClassVar["LLMObsAnnotationAssessment"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +LLMObsAnnotationAssessment.PASS = LLMObsAnnotationAssessment("pass") +LLMObsAnnotationAssessment.FAIL = LLMObsAnnotationAssessment("fail") diff --git a/src/datadog_api_client/v2/model/llm_obs_annotation_error.py b/src/datadog_api_client/v2/model/llm_obs_annotation_error.py new file mode 100644 index 0000000000..bb6d86424f --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_annotation_error.py @@ -0,0 +1,49 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class LLMObsAnnotationError(ModelNormal): + @cached_property + def openapi_types(_): + return { + "annotation_id": (str,), + "error": (str,), + "interaction_id": (str,), + } + + attribute_map = { + "annotation_id": "annotation_id", + "error": "error", + "interaction_id": "interaction_id", + } + + def __init__(self_, error: str, interaction_id: str, annotation_id: Union[str, UnsetType] = unset, **kwargs): + """ + A partial error for a single annotation that could not be processed. + + :param annotation_id: ID of the annotation that failed, if applicable. + :type annotation_id: str, optional + + :param error: Error message. + :type error: str + + :param interaction_id: ID of the interaction that failed. + :type interaction_id: str + """ + if annotation_id is not unset: + kwargs["annotation_id"] = annotation_id + super().__init__(kwargs) + + self_.error = error + self_.interaction_id = interaction_id diff --git a/src/datadog_api_client/v2/model/llm_obs_annotation_item.py b/src/datadog_api_client/v2/model/llm_obs_annotation_item.py index b7a523fe3e..dd9408f296 100644 --- a/src/datadog_api_client/v2/model/llm_obs_annotation_item.py +++ b/src/datadog_api_client/v2/model/llm_obs_annotation_item.py @@ -79,7 +79,7 @@ def __init__( :param interaction_id: Identifier of the interaction this annotation belongs to. :type interaction_id: str - :param label_values: The label values for this annotation. + :param label_values: Label values for this annotation. :type label_values: {str: (bool, date, datetime, dict, float, int, list, str, UUID, none_type,)} :param modified_at: Timestamp when the annotation was last modified. diff --git a/src/datadog_api_client/v2/model/llm_obs_annotation_item_response.py b/src/datadog_api_client/v2/model/llm_obs_annotation_item_response.py new file mode 100644 index 0000000000..3978e11027 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_annotation_item_response.py @@ -0,0 +1,90 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_annotation_label_value_response import LLMObsAnnotationLabelValueResponse + + +class LLMObsAnnotationItemResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_annotation_label_value_response import ( + LLMObsAnnotationLabelValueResponse, + ) + + return { + "created_at": (datetime,), + "created_by": (str,), + "id": (str,), + "interaction_id": (str,), + "label_values": ([LLMObsAnnotationLabelValueResponse],), + "modified_at": (datetime,), + "modified_by": (str,), + } + + attribute_map = { + "created_at": "created_at", + "created_by": "created_by", + "id": "id", + "interaction_id": "interaction_id", + "label_values": "label_values", + "modified_at": "modified_at", + "modified_by": "modified_by", + } + + def __init__( + self_, + created_at: datetime, + created_by: str, + id: str, + interaction_id: str, + label_values: List[LLMObsAnnotationLabelValueResponse], + modified_at: datetime, + modified_by: str, + **kwargs, + ): + """ + A single annotation on an interaction, as returned by the API. + + :param created_at: Timestamp when the annotation was created. + :type created_at: datetime + + :param created_by: Identifier of the user who created the annotation. + :type created_by: str + + :param id: Unique identifier of the annotation. + :type id: str + + :param interaction_id: Identifier of the interaction this annotation belongs to. + :type interaction_id: str + + :param label_values: Label values for this annotation. Each entry references a label schema by ID + and provides the corresponding value. + :type label_values: [LLMObsAnnotationLabelValueResponse] + + :param modified_at: Timestamp when the annotation was last modified. + :type modified_at: datetime + + :param modified_by: Identifier of the user who last modified the annotation. + :type modified_by: str + """ + super().__init__(kwargs) + + self_.created_at = created_at + self_.created_by = created_by + self_.id = id + self_.interaction_id = interaction_id + self_.label_values = label_values + self_.modified_at = modified_at + self_.modified_by = modified_by diff --git a/src/datadog_api_client/v2/model/llm_obs_annotation_label_value.py b/src/datadog_api_client/v2/model/llm_obs_annotation_label_value.py new file mode 100644 index 0000000000..0697a5951f --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_annotation_label_value.py @@ -0,0 +1,77 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_annotation_assessment import LLMObsAnnotationAssessment + from datadog_api_client.v2.model.llm_obs_annotation_label_value_value import LLMObsAnnotationLabelValueValue + + +class LLMObsAnnotationLabelValue(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_annotation_assessment import LLMObsAnnotationAssessment + from datadog_api_client.v2.model.llm_obs_annotation_label_value_value import LLMObsAnnotationLabelValueValue + + return { + "assessment": (LLMObsAnnotationAssessment,), + "label_schema_id": (str,), + "reasoning": (str,), + "value": (LLMObsAnnotationLabelValueValue,), + } + + attribute_map = { + "assessment": "assessment", + "label_schema_id": "label_schema_id", + "reasoning": "reasoning", + "value": "value", + } + + def __init__( + self_, + label_schema_id: str, + value: Union[LLMObsAnnotationLabelValueValue, float, str, List[str], bool], + assessment: Union[LLMObsAnnotationAssessment, UnsetType] = unset, + reasoning: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + A single label value entry in an annotation. + The ``value`` type must match the label schema type: + + * ``score`` : a number within the schema ``min`` / ``max`` range (integer if ``is_integer`` is ``true`` ). + * ``categorical`` : a string that is one of the schema ``values``. + * ``boolean`` : ``true`` or ``false``. + * ``text`` : any non-empty string. + + :param assessment: Assessment result for a label value. + :type assessment: LLMObsAnnotationAssessment, optional + + :param label_schema_id: ID of the label schema this value corresponds to. + :type label_schema_id: str + + :param reasoning: Free text reasoning for this label value. + :type reasoning: str, optional + + :param value: The value for this label. Must comply with the label schema type constraints. + :type value: LLMObsAnnotationLabelValueValue + """ + if assessment is not unset: + kwargs["assessment"] = assessment + if reasoning is not unset: + kwargs["reasoning"] = reasoning + super().__init__(kwargs) + + self_.label_schema_id = label_schema_id + self_.value = value diff --git a/src/datadog_api_client/v2/model/llm_obs_annotation_label_value_response.py b/src/datadog_api_client/v2/model/llm_obs_annotation_label_value_response.py new file mode 100644 index 0000000000..2474d1c37f --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_annotation_label_value_response.py @@ -0,0 +1,93 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_annotation_assessment import LLMObsAnnotationAssessment + from datadog_api_client.v2.model.llm_obs_label_schema_type import LLMObsLabelSchemaType + from datadog_api_client.v2.model.llm_obs_annotation_label_value_value import LLMObsAnnotationLabelValueValue + + +class LLMObsAnnotationLabelValueResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_annotation_assessment import LLMObsAnnotationAssessment + from datadog_api_client.v2.model.llm_obs_label_schema_type import LLMObsLabelSchemaType + from datadog_api_client.v2.model.llm_obs_annotation_label_value_value import LLMObsAnnotationLabelValueValue + + return { + "assessment": (LLMObsAnnotationAssessment,), + "label_schema_id": (str,), + "name_when_saved": (str,), + "reasoning": (str,), + "type": (LLMObsLabelSchemaType,), + "value": (LLMObsAnnotationLabelValueValue,), + } + + attribute_map = { + "assessment": "assessment", + "label_schema_id": "label_schema_id", + "name_when_saved": "name_when_saved", + "reasoning": "reasoning", + "type": "type", + "value": "value", + } + + def __init__( + self_, + label_schema_id: str, + value: Union[LLMObsAnnotationLabelValueValue, float, str, List[str], bool], + assessment: Union[LLMObsAnnotationAssessment, UnsetType] = unset, + name_when_saved: Union[str, UnsetType] = unset, + reasoning: Union[str, UnsetType] = unset, + type: Union[LLMObsLabelSchemaType, UnsetType] = unset, + **kwargs, + ): + """ + A single label value entry in an annotation response. + In addition to the submitted fields, the server populates ``type`` and + ``name_when_saved`` to mirror the schema state at the time the annotation + was created — these help clients display values correctly when the schema + has since changed. + + :param assessment: Assessment result for a label value. + :type assessment: LLMObsAnnotationAssessment, optional + + :param label_schema_id: ID of the label schema this value corresponds to. + :type label_schema_id: str + + :param name_when_saved: Name of the label schema at the time the annotation was created. + :type name_when_saved: str, optional + + :param reasoning: Free text reasoning for this label value. + :type reasoning: str, optional + + :param type: Type of a label in an annotation queue label schema. + :type type: LLMObsLabelSchemaType, optional + + :param value: The value for this label. Must comply with the label schema type constraints. + :type value: LLMObsAnnotationLabelValueValue + """ + if assessment is not unset: + kwargs["assessment"] = assessment + if name_when_saved is not unset: + kwargs["name_when_saved"] = name_when_saved + if reasoning is not unset: + kwargs["reasoning"] = reasoning + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) + + self_.label_schema_id = label_schema_id + self_.value = value diff --git a/src/datadog_api_client/v2/model/llm_obs_annotation_label_value_value.py b/src/datadog_api_client/v2/model/llm_obs_annotation_label_value_value.py new file mode 100644 index 0000000000..92735fe46e --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_annotation_label_value_value.py @@ -0,0 +1,36 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class LLMObsAnnotationLabelValueValue(ModelComposed): + def __init__(self, **kwargs): + """ + The value for this label. Must comply with the label schema type constraints. + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + return { + "oneOf": [ + float, + str, + [str], + bool, + ], + } diff --git a/src/datadog_api_client/v2/model/llm_obs_annotations_data_attributes_request.py b/src/datadog_api_client/v2/model/llm_obs_annotations_data_attributes_request.py new file mode 100644 index 0000000000..2cfd2b4f69 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_annotations_data_attributes_request.py @@ -0,0 +1,46 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_upsert_annotation_item import LLMObsUpsertAnnotationItem + + +class LLMObsAnnotationsDataAttributesRequest(ModelNormal): + validations = { + "annotations": { + "min_items": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_upsert_annotation_item import LLMObsUpsertAnnotationItem + + return { + "annotations": ([LLMObsUpsertAnnotationItem],), + } + + attribute_map = { + "annotations": "annotations", + } + + def __init__(self_, annotations: List[LLMObsUpsertAnnotationItem], **kwargs): + """ + Attributes for creating or updating annotations. + + :param annotations: List of annotations to create or update. Must contain at least one item. + :type annotations: [LLMObsUpsertAnnotationItem] + """ + super().__init__(kwargs) + + self_.annotations = annotations diff --git a/src/datadog_api_client/v2/model/llm_obs_annotations_data_attributes_response.py b/src/datadog_api_client/v2/model/llm_obs_annotations_data_attributes_response.py new file mode 100644 index 0000000000..aaab47d8e8 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_annotations_data_attributes_response.py @@ -0,0 +1,56 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_annotation_item_response import LLMObsAnnotationItemResponse + from datadog_api_client.v2.model.llm_obs_annotation_error import LLMObsAnnotationError + + +class LLMObsAnnotationsDataAttributesResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_annotation_item_response import LLMObsAnnotationItemResponse + from datadog_api_client.v2.model.llm_obs_annotation_error import LLMObsAnnotationError + + return { + "annotations": ([LLMObsAnnotationItemResponse],), + "errors": ([LLMObsAnnotationError],), + } + + attribute_map = { + "annotations": "annotations", + "errors": "errors", + } + + def __init__( + self_, + annotations: List[LLMObsAnnotationItemResponse], + errors: Union[List[LLMObsAnnotationError], UnsetType] = unset, + **kwargs, + ): + """ + Attributes of the annotations response. + + :param annotations: Successfully created or updated annotations. + :type annotations: [LLMObsAnnotationItemResponse] + + :param errors: Partial errors for annotations that could not be processed. + :type errors: [LLMObsAnnotationError], optional + """ + if errors is not unset: + kwargs["errors"] = errors + super().__init__(kwargs) + + self_.annotations = annotations diff --git a/src/datadog_api_client/v2/model/llm_obs_annotations_data_request.py b/src/datadog_api_client/v2/model/llm_obs_annotations_data_request.py new file mode 100644 index 0000000000..1440b7d882 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_annotations_data_request.py @@ -0,0 +1,52 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_annotations_data_attributes_request import ( + LLMObsAnnotationsDataAttributesRequest, + ) + from datadog_api_client.v2.model.llm_obs_annotations_type import LLMObsAnnotationsType + + +class LLMObsAnnotationsDataRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_annotations_data_attributes_request import ( + LLMObsAnnotationsDataAttributesRequest, + ) + from datadog_api_client.v2.model.llm_obs_annotations_type import LLMObsAnnotationsType + + return { + "attributes": (LLMObsAnnotationsDataAttributesRequest,), + "type": (LLMObsAnnotationsType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: LLMObsAnnotationsDataAttributesRequest, type: LLMObsAnnotationsType, **kwargs): + """ + Data object for creating or updating annotations. + + :param attributes: Attributes for creating or updating annotations. + :type attributes: LLMObsAnnotationsDataAttributesRequest + + :param type: Resource type for LLM Observability annotations. + :type type: LLMObsAnnotationsType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_annotations_data_response.py b/src/datadog_api_client/v2/model/llm_obs_annotations_data_response.py new file mode 100644 index 0000000000..e1e5c552f3 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_annotations_data_response.py @@ -0,0 +1,60 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_annotations_data_attributes_response import ( + LLMObsAnnotationsDataAttributesResponse, + ) + from datadog_api_client.v2.model.llm_obs_annotations_type import LLMObsAnnotationsType + + +class LLMObsAnnotationsDataResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_annotations_data_attributes_response import ( + LLMObsAnnotationsDataAttributesResponse, + ) + from datadog_api_client.v2.model.llm_obs_annotations_type import LLMObsAnnotationsType + + return { + "attributes": (LLMObsAnnotationsDataAttributesResponse,), + "id": (str,), + "type": (LLMObsAnnotationsType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, attributes: LLMObsAnnotationsDataAttributesResponse, id: str, type: LLMObsAnnotationsType, **kwargs + ): + """ + Data object for the annotations response. + + :param attributes: Attributes of the annotations response. + :type attributes: LLMObsAnnotationsDataAttributesResponse + + :param id: The annotation queue ID. + :type id: str + + :param type: Resource type for LLM Observability annotations. + :type type: LLMObsAnnotationsType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_annotations_request.py b/src/datadog_api_client/v2/model/llm_obs_annotations_request.py new file mode 100644 index 0000000000..1de0f95523 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_annotations_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_annotations_data_request import LLMObsAnnotationsDataRequest + + +class LLMObsAnnotationsRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_annotations_data_request import LLMObsAnnotationsDataRequest + + return { + "data": (LLMObsAnnotationsDataRequest,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsAnnotationsDataRequest, **kwargs): + """ + Request to create or update annotations on interactions in an annotation queue. + + :param data: Data object for creating or updating annotations. + :type data: LLMObsAnnotationsDataRequest + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_annotations_response.py b/src/datadog_api_client/v2/model/llm_obs_annotations_response.py new file mode 100644 index 0000000000..957d6206d3 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_annotations_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_annotations_data_response import LLMObsAnnotationsDataResponse + + +class LLMObsAnnotationsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_annotations_data_response import LLMObsAnnotationsDataResponse + + return { + "data": (LLMObsAnnotationsDataResponse,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsAnnotationsDataResponse, **kwargs): + """ + Response containing the created or updated annotations. + + :param data: Data object for the annotations response. + :type data: LLMObsAnnotationsDataResponse + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_annotations_type.py b/src/datadog_api_client/v2/model/llm_obs_annotations_type.py new file mode 100644 index 0000000000..f8036a8dc8 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_annotations_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class LLMObsAnnotationsType(ModelSimple): + """ + Resource type for LLM Observability annotations. + + :param value: If omitted defaults to "annotations". Must be one of ["annotations"]. + :type value: str + """ + + allowed_values = { + "annotations", + } + ANNOTATIONS: ClassVar["LLMObsAnnotationsType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +LLMObsAnnotationsType.ANNOTATIONS = LLMObsAnnotationsType("annotations") diff --git a/src/datadog_api_client/v2/model/llm_obs_delete_annotation_error.py b/src/datadog_api_client/v2/model/llm_obs_delete_annotation_error.py new file mode 100644 index 0000000000..3bade7c5a3 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_delete_annotation_error.py @@ -0,0 +1,39 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class LLMObsDeleteAnnotationError(ModelNormal): + @cached_property + def openapi_types(_): + return { + "annotation_id": (str,), + "error": (str,), + } + + attribute_map = { + "annotation_id": "annotation_id", + "error": "error", + } + + def __init__(self_, annotation_id: str, error: str, **kwargs): + """ + A partial error for a single annotation that could not be deleted. + + :param annotation_id: ID of the annotation that could not be deleted. + :type annotation_id: str + + :param error: Error message. + :type error: str + """ + super().__init__(kwargs) + + self_.annotation_id = annotation_id + self_.error = error diff --git a/src/datadog_api_client/v2/model/llm_obs_delete_annotations_data_attributes_request.py b/src/datadog_api_client/v2/model/llm_obs_delete_annotations_data_attributes_request.py new file mode 100644 index 0000000000..462998c4f6 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_delete_annotations_data_attributes_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class LLMObsDeleteAnnotationsDataAttributesRequest(ModelNormal): + validations = { + "annotation_ids": { + "min_items": 1, + }, + } + + @cached_property + def openapi_types(_): + return { + "annotation_ids": ([str],), + } + + attribute_map = { + "annotation_ids": "annotation_ids", + } + + def __init__(self_, annotation_ids: List[str], **kwargs): + """ + Attributes for deleting annotations. + + :param annotation_ids: IDs of the annotations to delete. Must contain at least one item. + :type annotation_ids: [str] + """ + super().__init__(kwargs) + + self_.annotation_ids = annotation_ids diff --git a/src/datadog_api_client/v2/model/llm_obs_delete_annotations_data_attributes_response.py b/src/datadog_api_client/v2/model/llm_obs_delete_annotations_data_attributes_response.py new file mode 100644 index 0000000000..ba48b56b5c --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_delete_annotations_data_attributes_response.py @@ -0,0 +1,46 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_delete_annotation_error import LLMObsDeleteAnnotationError + + +class LLMObsDeleteAnnotationsDataAttributesResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_delete_annotation_error import LLMObsDeleteAnnotationError + + return { + "annotation_ids": ([str],), + "errors": ([LLMObsDeleteAnnotationError],), + } + + attribute_map = { + "annotation_ids": "annotation_ids", + "errors": "errors", + } + + def __init__(self_, annotation_ids: List[str], errors: List[LLMObsDeleteAnnotationError], **kwargs): + """ + Attributes of the annotation deletion response. + + :param annotation_ids: IDs of the successfully deleted annotations. + :type annotation_ids: [str] + + :param errors: Errors for annotations that could not be deleted. + :type errors: [LLMObsDeleteAnnotationError] + """ + super().__init__(kwargs) + + self_.annotation_ids = annotation_ids + self_.errors = errors diff --git a/src/datadog_api_client/v2/model/llm_obs_delete_annotations_data_request.py b/src/datadog_api_client/v2/model/llm_obs_delete_annotations_data_request.py new file mode 100644 index 0000000000..bbf290c8f9 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_delete_annotations_data_request.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_delete_annotations_data_attributes_request import ( + LLMObsDeleteAnnotationsDataAttributesRequest, + ) + from datadog_api_client.v2.model.llm_obs_annotations_type import LLMObsAnnotationsType + + +class LLMObsDeleteAnnotationsDataRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_delete_annotations_data_attributes_request import ( + LLMObsDeleteAnnotationsDataAttributesRequest, + ) + from datadog_api_client.v2.model.llm_obs_annotations_type import LLMObsAnnotationsType + + return { + "attributes": (LLMObsDeleteAnnotationsDataAttributesRequest,), + "type": (LLMObsAnnotationsType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, attributes: LLMObsDeleteAnnotationsDataAttributesRequest, type: LLMObsAnnotationsType, **kwargs + ): + """ + Data object for deleting annotations. + + :param attributes: Attributes for deleting annotations. + :type attributes: LLMObsDeleteAnnotationsDataAttributesRequest + + :param type: Resource type for LLM Observability annotations. + :type type: LLMObsAnnotationsType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_delete_annotations_data_response.py b/src/datadog_api_client/v2/model/llm_obs_delete_annotations_data_response.py new file mode 100644 index 0000000000..431fc583eb --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_delete_annotations_data_response.py @@ -0,0 +1,60 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_delete_annotations_data_attributes_response import ( + LLMObsDeleteAnnotationsDataAttributesResponse, + ) + from datadog_api_client.v2.model.llm_obs_annotations_type import LLMObsAnnotationsType + + +class LLMObsDeleteAnnotationsDataResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_delete_annotations_data_attributes_response import ( + LLMObsDeleteAnnotationsDataAttributesResponse, + ) + from datadog_api_client.v2.model.llm_obs_annotations_type import LLMObsAnnotationsType + + return { + "attributes": (LLMObsDeleteAnnotationsDataAttributesResponse,), + "id": (str,), + "type": (LLMObsAnnotationsType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, attributes: LLMObsDeleteAnnotationsDataAttributesResponse, id: str, type: LLMObsAnnotationsType, **kwargs + ): + """ + Data object for the annotation deletion response. + + :param attributes: Attributes of the annotation deletion response. + :type attributes: LLMObsDeleteAnnotationsDataAttributesResponse + + :param id: The annotation queue ID. + :type id: str + + :param type: Resource type for LLM Observability annotations. + :type type: LLMObsAnnotationsType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_delete_annotations_request.py b/src/datadog_api_client/v2/model/llm_obs_delete_annotations_request.py new file mode 100644 index 0000000000..a975ad485d --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_delete_annotations_request.py @@ -0,0 +1,42 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_delete_annotations_data_request import LLMObsDeleteAnnotationsDataRequest + + +class LLMObsDeleteAnnotationsRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_delete_annotations_data_request import ( + LLMObsDeleteAnnotationsDataRequest, + ) + + return { + "data": (LLMObsDeleteAnnotationsDataRequest,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsDeleteAnnotationsDataRequest, **kwargs): + """ + Request to delete annotations from an annotation queue. + + :param data: Data object for deleting annotations. + :type data: LLMObsDeleteAnnotationsDataRequest + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_delete_annotations_response.py b/src/datadog_api_client/v2/model/llm_obs_delete_annotations_response.py new file mode 100644 index 0000000000..105b5b099e --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_delete_annotations_response.py @@ -0,0 +1,43 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_delete_annotations_data_response import LLMObsDeleteAnnotationsDataResponse + + +class LLMObsDeleteAnnotationsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_delete_annotations_data_response import ( + LLMObsDeleteAnnotationsDataResponse, + ) + + return { + "data": (LLMObsDeleteAnnotationsDataResponse,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsDeleteAnnotationsDataResponse, **kwargs): + """ + Response for a batch annotation deletion. Partial errors are listed in the + response if any annotations could not be deleted. + + :param data: Data object for the annotation deletion response. + :type data: LLMObsDeleteAnnotationsDataResponse + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_activity_progress.py b/src/datadog_api_client/v2/model/llm_obs_patterns_activity_progress.py new file mode 100644 index 0000000000..6b91fc78bb --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_activity_progress.py @@ -0,0 +1,51 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, + unset, + UnsetType, +) + + +class LLMObsPatternsActivityProgress(ModelNormal): + @cached_property + def openapi_types(_): + return { + "name": (str,), + "started_at": (datetime, none_type), + "status": (str,), + } + + attribute_map = { + "name": "name", + "started_at": "started_at", + "status": "status", + } + + def __init__(self_, name: str, status: str, started_at: Union[datetime, none_type, UnsetType] = unset, **kwargs): + """ + Progress information for a single step of a patterns run. + + :param name: Name of the step. + :type name: str + + :param started_at: Timestamp when the step started. Null if the step has not started. + :type started_at: datetime, none_type, optional + + :param status: Status of the step. + :type status: str + """ + if started_at is not unset: + kwargs["started_at"] = started_at + super().__init__(kwargs) + + self_.name = name + self_.status = status diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_point.py b/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_point.py new file mode 100644 index 0000000000..aa83507a23 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_point.py @@ -0,0 +1,86 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class LLMObsPatternsClusteredPoint(ModelNormal): + @cached_property + def openapi_types(_): + return { + "event_id": (str,), + "id": (str,), + "input": (str,), + "is_included": (bool,), + "is_suggested": (bool,), + "session_id": (str,), + "span_id": (str,), + "topic_id": (str,), + } + + attribute_map = { + "event_id": "event_id", + "id": "id", + "input": "input", + "is_included": "is_included", + "is_suggested": "is_suggested", + "session_id": "session_id", + "span_id": "span_id", + "topic_id": "topic_id", + } + + def __init__( + self_, + event_id: str, + id: str, + input: str, + is_included: bool, + is_suggested: bool, + session_id: str, + span_id: str, + topic_id: str, + **kwargs, + ): + """ + A single data point grouped into a topic. + + :param event_id: Identifier of the source event. + :type event_id: str + + :param id: Unique identifier of the clustered point. + :type id: str + + :param input: Input text of the source span. + :type input: str + + :param is_included: Whether the point is included in the patterns dataset. + :type is_included: bool + + :param is_suggested: Whether the point is suggested for inclusion in the patterns dataset. + :type is_suggested: bool + + :param session_id: Identifier of the source session. + :type session_id: str + + :param span_id: Identifier of the source span. + :type span_id: str + + :param topic_id: Identifier of the topic the point belongs to. + :type topic_id: str + """ + super().__init__(kwargs) + + self_.event_id = event_id + self_.id = id + self_.input = input + self_.is_included = is_included + self_.is_suggested = is_suggested + self_.session_id = session_id + self_.span_id = span_id + self_.topic_id = topic_id diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_point_ref.py b/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_point_ref.py new file mode 100644 index 0000000000..64739f2be4 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_point_ref.py @@ -0,0 +1,117 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Any, Dict, Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + date, + datetime, + none_type, + unset, + UnsetType, + UUID, +) + + +class LLMObsPatternsClusteredPointRef(ModelNormal): + @cached_property + def openapi_types(_): + return { + "duration": (float,), + "estimated_total_cost": (float,), + "evaluation": ( + { + str: ( + bool, + date, + datetime, + dict, + float, + int, + list, + str, + UUID, + none_type, + ) + }, + ), + "input_tokens": (float,), + "output_tokens": (float,), + "span_id": (str,), + "status": (str,), + "total_tokens": (float,), + } + + attribute_map = { + "duration": "duration", + "estimated_total_cost": "estimated_total_cost", + "evaluation": "evaluation", + "input_tokens": "input_tokens", + "output_tokens": "output_tokens", + "span_id": "span_id", + "status": "status", + "total_tokens": "total_tokens", + } + + def __init__( + self_, + span_id: str, + duration: Union[float, UnsetType] = unset, + estimated_total_cost: Union[float, UnsetType] = unset, + evaluation: Union[Dict[str, Any], UnsetType] = unset, + input_tokens: Union[float, UnsetType] = unset, + output_tokens: Union[float, UnsetType] = unset, + status: Union[str, UnsetType] = unset, + total_tokens: Union[float, UnsetType] = unset, + **kwargs, + ): + """ + A clustered point attached inline to a topic. The metric fields are populated + only when the request includes ``include_metrics=true``. + + :param duration: Duration of the source span in nanoseconds. Included only when metrics are requested. + :type duration: float, optional + + :param estimated_total_cost: Estimated total cost of the source span. Included only when metrics are requested. + :type estimated_total_cost: float, optional + + :param evaluation: Evaluation results for the source span keyed by evaluation name. Included + only when metrics are requested. + :type evaluation: {str: (bool, date, datetime, dict, float, int, list, str, UUID, none_type,)}, optional + + :param input_tokens: Number of input tokens of the source span. Included only when metrics are requested. + :type input_tokens: float, optional + + :param output_tokens: Number of output tokens of the source span. Included only when metrics are requested. + :type output_tokens: float, optional + + :param span_id: Identifier of the source span. + :type span_id: str + + :param status: Status of the source span. Included only when metrics are requested. + :type status: str, optional + + :param total_tokens: Total number of tokens of the source span. Included only when metrics are requested. + :type total_tokens: float, optional + """ + if duration is not unset: + kwargs["duration"] = duration + if estimated_total_cost is not unset: + kwargs["estimated_total_cost"] = estimated_total_cost + if evaluation is not unset: + kwargs["evaluation"] = evaluation + if input_tokens is not unset: + kwargs["input_tokens"] = input_tokens + if output_tokens is not unset: + kwargs["output_tokens"] = output_tokens + if status is not unset: + kwargs["status"] = status + if total_tokens is not unset: + kwargs["total_tokens"] = total_tokens + super().__init__(kwargs) + + self_.span_id = span_id diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_points_response.py b/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_points_response.py new file mode 100644 index 0000000000..ed9cf415d1 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_points_response.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_clustered_points_response_data import ( + LLMObsPatternsClusteredPointsResponseData, + ) + + +class LLMObsPatternsClusteredPointsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_clustered_points_response_data import ( + LLMObsPatternsClusteredPointsResponseData, + ) + + return { + "data": (LLMObsPatternsClusteredPointsResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsPatternsClusteredPointsResponseData, **kwargs): + """ + Response containing the clustered points of an LLM Observability topic. + + :param data: Data object of an LLM Observability patterns clustered points response. + :type data: LLMObsPatternsClusteredPointsResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_points_response_attributes.py b/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_points_response_attributes.py new file mode 100644 index 0000000000..21c789d267 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_points_response_attributes.py @@ -0,0 +1,59 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_clustered_point import LLMObsPatternsClusteredPoint + + +class LLMObsPatternsClusteredPointsResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_clustered_point import LLMObsPatternsClusteredPoint + + return { + "next_page_token": (str, none_type), + "points": ([LLMObsPatternsClusteredPoint],), + "topic_id": (str,), + } + + attribute_map = { + "next_page_token": "next_page_token", + "points": "points", + "topic_id": "topic_id", + } + + def __init__( + self_, + next_page_token: Union[str, none_type], + points: List[LLMObsPatternsClusteredPoint], + topic_id: str, + **kwargs, + ): + """ + Attributes of an LLM Observability patterns clustered points response. + + :param next_page_token: Pagination token for the next page of points. Null if there are no more pages. + :type next_page_token: str, none_type + + :param points: List of clustered points. + :type points: [LLMObsPatternsClusteredPoint] + + :param topic_id: Identifier of the topic the points belong to. + :type topic_id: str + """ + super().__init__(kwargs) + + self_.next_page_token = next_page_token + self_.points = points + self_.topic_id = topic_id diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_points_response_data.py b/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_points_response_data.py new file mode 100644 index 0000000000..4f4a05fd79 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_points_response_data.py @@ -0,0 +1,64 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_clustered_points_response_attributes import ( + LLMObsPatternsClusteredPointsResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_clustered_points_type import LLMObsPatternsClusteredPointsType + + +class LLMObsPatternsClusteredPointsResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_clustered_points_response_attributes import ( + LLMObsPatternsClusteredPointsResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_clustered_points_type import LLMObsPatternsClusteredPointsType + + return { + "attributes": (LLMObsPatternsClusteredPointsResponseAttributes,), + "id": (str,), + "type": (LLMObsPatternsClusteredPointsType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: LLMObsPatternsClusteredPointsResponseAttributes, + id: str, + type: LLMObsPatternsClusteredPointsType, + **kwargs, + ): + """ + Data object of an LLM Observability patterns clustered points response. + + :param attributes: Attributes of an LLM Observability patterns clustered points response. + :type attributes: LLMObsPatternsClusteredPointsResponseAttributes + + :param id: Identifier of the topic the points belong to. + :type id: str + + :param type: Resource type of an LLM Observability patterns clustered points response. + :type type: LLMObsPatternsClusteredPointsType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_points_type.py b/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_points_type.py new file mode 100644 index 0000000000..6136d3c40d --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_clustered_points_type.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class LLMObsPatternsClusteredPointsType(ModelSimple): + """ + Resource type of an LLM Observability patterns clustered points response. + + :param value: If omitted defaults to "clustered_points_response". Must be one of ["clustered_points_response"]. + :type value: str + """ + + allowed_values = { + "clustered_points_response", + } + CLUSTERED_POINTS_RESPONSE: ClassVar["LLMObsPatternsClusteredPointsType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +LLMObsPatternsClusteredPointsType.CLUSTERED_POINTS_RESPONSE = LLMObsPatternsClusteredPointsType( + "clustered_points_response" +) diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_config_attributes.py b/src/datadog_api_client/v2/model/llm_obs_patterns_config_attributes.py new file mode 100644 index 0000000000..0abcad68e0 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_config_attributes.py @@ -0,0 +1,132 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, + unset, + UnsetType, +) + + +class LLMObsPatternsConfigAttributes(ModelNormal): + validations = { + "hierarchy_depth": { + "inclusive_maximum": 2147483647, + }, + "num_records": { + "inclusive_maximum": 2147483647, + }, + } + + @cached_property + def openapi_types(_): + return { + "account_id": (str, none_type), + "created_at": (datetime,), + "evp_query": (str,), + "hierarchy_depth": (int,), + "integration_provider": (str, none_type), + "model_name": (str, none_type), + "name": (str,), + "num_records": (int,), + "sampling_ratio": (float,), + "scope": (str,), + "template": (str, none_type), + "updated_at": (datetime,), + } + + attribute_map = { + "account_id": "account_id", + "created_at": "created_at", + "evp_query": "evp_query", + "hierarchy_depth": "hierarchy_depth", + "integration_provider": "integration_provider", + "model_name": "model_name", + "name": "name", + "num_records": "num_records", + "sampling_ratio": "sampling_ratio", + "scope": "scope", + "template": "template", + "updated_at": "updated_at", + } + + def __init__( + self_, + created_at: datetime, + evp_query: str, + hierarchy_depth: int, + name: str, + num_records: int, + sampling_ratio: float, + scope: str, + updated_at: datetime, + account_id: Union[str, none_type, UnsetType] = unset, + integration_provider: Union[str, none_type, UnsetType] = unset, + model_name: Union[str, none_type, UnsetType] = unset, + template: Union[str, none_type, UnsetType] = unset, + **kwargs, + ): + """ + Attributes of an LLM Observability patterns configuration. + + :param account_id: Integration account ID for a bring-your-own-model configuration. + :type account_id: str, none_type, optional + + :param created_at: Timestamp when the configuration was created. + :type created_at: datetime + + :param evp_query: Query that selects the spans the patterns run analyzes. + :type evp_query: str + + :param hierarchy_depth: Depth of the topic hierarchy to generate. + :type hierarchy_depth: int + + :param integration_provider: Integration provider for a bring-your-own-model configuration. + :type integration_provider: str, none_type, optional + + :param model_name: Model name for a bring-your-own-model configuration. + :type model_name: str, none_type, optional + + :param name: Name of the configuration. + :type name: str + + :param num_records: Maximum number of records to process for the run. + :type num_records: int + + :param sampling_ratio: Fraction of matching spans to sample for the run. + :type sampling_ratio: float + + :param scope: Scope of the configuration. + :type scope: str + + :param template: Template used to guide topic generation. + :type template: str, none_type, optional + + :param updated_at: Timestamp when the configuration was last updated. + :type updated_at: datetime + """ + if account_id is not unset: + kwargs["account_id"] = account_id + if integration_provider is not unset: + kwargs["integration_provider"] = integration_provider + if model_name is not unset: + kwargs["model_name"] = model_name + if template is not unset: + kwargs["template"] = template + super().__init__(kwargs) + + self_.created_at = created_at + self_.evp_query = evp_query + self_.hierarchy_depth = hierarchy_depth + self_.name = name + self_.num_records = num_records + self_.sampling_ratio = sampling_ratio + self_.scope = scope + self_.updated_at = updated_at diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_config_item.py b/src/datadog_api_client/v2/model/llm_obs_patterns_config_item.py new file mode 100644 index 0000000000..32b5f46226 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_config_item.py @@ -0,0 +1,139 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, + unset, + UnsetType, +) + + +class LLMObsPatternsConfigItem(ModelNormal): + validations = { + "hierarchy_depth": { + "inclusive_maximum": 2147483647, + }, + "num_records": { + "inclusive_maximum": 2147483647, + }, + } + + @cached_property + def openapi_types(_): + return { + "account_id": (str, none_type), + "created_at": (datetime,), + "evp_query": (str,), + "hierarchy_depth": (int,), + "id": (str,), + "integration_provider": (str, none_type), + "model_name": (str, none_type), + "name": (str,), + "num_records": (int,), + "sampling_ratio": (float,), + "scope": (str,), + "template": (str, none_type), + "updated_at": (datetime,), + } + + attribute_map = { + "account_id": "account_id", + "created_at": "created_at", + "evp_query": "evp_query", + "hierarchy_depth": "hierarchy_depth", + "id": "id", + "integration_provider": "integration_provider", + "model_name": "model_name", + "name": "name", + "num_records": "num_records", + "sampling_ratio": "sampling_ratio", + "scope": "scope", + "template": "template", + "updated_at": "updated_at", + } + + def __init__( + self_, + created_at: datetime, + evp_query: str, + hierarchy_depth: int, + id: str, + name: str, + num_records: int, + sampling_ratio: float, + scope: str, + updated_at: datetime, + account_id: Union[str, none_type, UnsetType] = unset, + integration_provider: Union[str, none_type, UnsetType] = unset, + model_name: Union[str, none_type, UnsetType] = unset, + template: Union[str, none_type, UnsetType] = unset, + **kwargs, + ): + """ + A single LLM Observability patterns configuration in a list response. + + :param account_id: Integration account ID for a bring-your-own-model configuration. + :type account_id: str, none_type, optional + + :param created_at: Timestamp when the configuration was created. + :type created_at: datetime + + :param evp_query: Query that selects the spans the patterns run analyzes. + :type evp_query: str + + :param hierarchy_depth: Depth of the topic hierarchy to generate. + :type hierarchy_depth: int + + :param id: Unique identifier of the configuration. + :type id: str + + :param integration_provider: Integration provider for a bring-your-own-model configuration. + :type integration_provider: str, none_type, optional + + :param model_name: Model name for a bring-your-own-model configuration. + :type model_name: str, none_type, optional + + :param name: Name of the configuration. + :type name: str + + :param num_records: Maximum number of records to process for the run. + :type num_records: int + + :param sampling_ratio: Fraction of matching spans to sample for the run. + :type sampling_ratio: float + + :param scope: Scope of the configuration. + :type scope: str + + :param template: Template used to guide topic generation. + :type template: str, none_type, optional + + :param updated_at: Timestamp when the configuration was last updated. + :type updated_at: datetime + """ + if account_id is not unset: + kwargs["account_id"] = account_id + if integration_provider is not unset: + kwargs["integration_provider"] = integration_provider + if model_name is not unset: + kwargs["model_name"] = model_name + if template is not unset: + kwargs["template"] = template + super().__init__(kwargs) + + self_.created_at = created_at + self_.evp_query = evp_query + self_.hierarchy_depth = hierarchy_depth + self_.id = id + self_.name = name + self_.num_records = num_records + self_.sampling_ratio = sampling_ratio + self_.scope = scope + self_.updated_at = updated_at diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_config_response.py b/src/datadog_api_client/v2/model/llm_obs_patterns_config_response.py new file mode 100644 index 0000000000..8abd4d7801 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_config_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_config_response_data import LLMObsPatternsConfigResponseData + + +class LLMObsPatternsConfigResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_config_response_data import LLMObsPatternsConfigResponseData + + return { + "data": (LLMObsPatternsConfigResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsPatternsConfigResponseData, **kwargs): + """ + Response containing a single LLM Observability patterns configuration. + + :param data: Data object of an LLM Observability patterns configuration. + :type data: LLMObsPatternsConfigResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_config_response_data.py b/src/datadog_api_client/v2/model/llm_obs_patterns_config_response_data.py new file mode 100644 index 0000000000..a8d9dd036d --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_config_response_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_config_attributes import LLMObsPatternsConfigAttributes + from datadog_api_client.v2.model.llm_obs_patterns_config_type import LLMObsPatternsConfigType + + +class LLMObsPatternsConfigResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_config_attributes import LLMObsPatternsConfigAttributes + from datadog_api_client.v2.model.llm_obs_patterns_config_type import LLMObsPatternsConfigType + + return { + "attributes": (LLMObsPatternsConfigAttributes,), + "id": (str,), + "type": (LLMObsPatternsConfigType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: LLMObsPatternsConfigAttributes, id: str, type: LLMObsPatternsConfigType, **kwargs): + """ + Data object of an LLM Observability patterns configuration. + + :param attributes: Attributes of an LLM Observability patterns configuration. + :type attributes: LLMObsPatternsConfigAttributes + + :param id: Unique identifier of the configuration. + :type id: str + + :param type: Resource type of an LLM Observability patterns configuration. + :type type: LLMObsPatternsConfigType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_config_snapshot.py b/src/datadog_api_client/v2/model/llm_obs_patterns_config_snapshot.py new file mode 100644 index 0000000000..4a38a6d9a1 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_config_snapshot.py @@ -0,0 +1,97 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class LLMObsPatternsConfigSnapshot(ModelNormal): + validations = { + "hierarchy_depth": { + "inclusive_maximum": 2147483647, + }, + "num_records": { + "inclusive_maximum": 2147483647, + }, + } + + @cached_property + def openapi_types(_): + return { + "account_id": (str,), + "evp_query": (str,), + "hierarchy_depth": (int,), + "integration_provider": (str,), + "model_name": (str,), + "num_records": (int,), + "sampling_ratio": (float,), + } + + attribute_map = { + "account_id": "account_id", + "evp_query": "evp_query", + "hierarchy_depth": "hierarchy_depth", + "integration_provider": "integration_provider", + "model_name": "model_name", + "num_records": "num_records", + "sampling_ratio": "sampling_ratio", + } + + def __init__( + self_, + account_id: Union[str, UnsetType] = unset, + evp_query: Union[str, UnsetType] = unset, + hierarchy_depth: Union[int, UnsetType] = unset, + integration_provider: Union[str, UnsetType] = unset, + model_name: Union[str, UnsetType] = unset, + num_records: Union[int, UnsetType] = unset, + sampling_ratio: Union[float, UnsetType] = unset, + **kwargs, + ): + """ + Snapshot of the configuration used for a patterns run. + + :param account_id: Integration account ID used for a bring-your-own-model run. + :type account_id: str, optional + + :param evp_query: Query that selected the spans for the run. + :type evp_query: str, optional + + :param hierarchy_depth: Depth of the topic hierarchy generated. + :type hierarchy_depth: int, optional + + :param integration_provider: Integration provider used for a bring-your-own-model run. + :type integration_provider: str, optional + + :param model_name: Model name used for a bring-your-own-model run. + :type model_name: str, optional + + :param num_records: Maximum number of records processed for the run. + :type num_records: int, optional + + :param sampling_ratio: Fraction of matching spans sampled for the run. + :type sampling_ratio: float, optional + """ + if account_id is not unset: + kwargs["account_id"] = account_id + if evp_query is not unset: + kwargs["evp_query"] = evp_query + if hierarchy_depth is not unset: + kwargs["hierarchy_depth"] = hierarchy_depth + if integration_provider is not unset: + kwargs["integration_provider"] = integration_provider + if model_name is not unset: + kwargs["model_name"] = model_name + if num_records is not unset: + kwargs["num_records"] = num_records + if sampling_ratio is not unset: + kwargs["sampling_ratio"] = sampling_ratio + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_config_type.py b/src/datadog_api_client/v2/model/llm_obs_patterns_config_type.py new file mode 100644 index 0000000000..e84ee506d0 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_config_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class LLMObsPatternsConfigType(ModelSimple): + """ + Resource type of an LLM Observability patterns configuration. + + :param value: If omitted defaults to "topic_discovery_configs". Must be one of ["topic_discovery_configs"]. + :type value: str + """ + + allowed_values = { + "topic_discovery_configs", + } + TOPIC_DISCOVERY_CONFIGS: ClassVar["LLMObsPatternsConfigType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +LLMObsPatternsConfigType.TOPIC_DISCOVERY_CONFIGS = LLMObsPatternsConfigType("topic_discovery_configs") diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_config_upsert_request.py b/src/datadog_api_client/v2/model/llm_obs_patterns_config_upsert_request.py new file mode 100644 index 0000000000..942591a00b --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_config_upsert_request.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request_data import ( + LLMObsPatternsConfigUpsertRequestData, + ) + + +class LLMObsPatternsConfigUpsertRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request_data import ( + LLMObsPatternsConfigUpsertRequestData, + ) + + return { + "data": (LLMObsPatternsConfigUpsertRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsPatternsConfigUpsertRequestData, **kwargs): + """ + Request to create or update an LLM Observability patterns configuration. + + :param data: Data object for creating or updating an LLM Observability patterns configuration. + :type data: LLMObsPatternsConfigUpsertRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_config_upsert_request_attributes.py b/src/datadog_api_client/v2/model/llm_obs_patterns_config_upsert_request_attributes.py new file mode 100644 index 0000000000..41dd7799e6 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_config_upsert_request_attributes.py @@ -0,0 +1,125 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class LLMObsPatternsConfigUpsertRequestAttributes(ModelNormal): + validations = { + "hierarchy_depth": { + "inclusive_maximum": 2147483647, + }, + "num_records": { + "inclusive_maximum": 2147483647, + }, + } + + @cached_property + def openapi_types(_): + return { + "account_id": (str,), + "config_id": (str,), + "evp_query": (str,), + "hierarchy_depth": (int,), + "integration_provider": (str,), + "model_name": (str,), + "name": (str,), + "num_records": (int,), + "sampling_ratio": (float,), + "scope": (str,), + "template": (str,), + } + + attribute_map = { + "account_id": "account_id", + "config_id": "config_id", + "evp_query": "evp_query", + "hierarchy_depth": "hierarchy_depth", + "integration_provider": "integration_provider", + "model_name": "model_name", + "name": "name", + "num_records": "num_records", + "sampling_ratio": "sampling_ratio", + "scope": "scope", + "template": "template", + } + + def __init__( + self_, + evp_query: str, + hierarchy_depth: int, + name: str, + num_records: int, + sampling_ratio: float, + account_id: Union[str, UnsetType] = unset, + config_id: Union[str, UnsetType] = unset, + integration_provider: Union[str, UnsetType] = unset, + model_name: Union[str, UnsetType] = unset, + scope: Union[str, UnsetType] = unset, + template: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + Attributes for creating or updating an LLM Observability patterns configuration. + + :param account_id: Integration account ID for a bring-your-own-model configuration. + :type account_id: str, optional + + :param config_id: The ID of an existing configuration to update. If omitted, a new configuration is created. + :type config_id: str, optional + + :param evp_query: Query that selects the spans the patterns run analyzes. + :type evp_query: str + + :param hierarchy_depth: Depth of the topic hierarchy to generate. + :type hierarchy_depth: int + + :param integration_provider: Integration provider for a bring-your-own-model configuration. + :type integration_provider: str, optional + + :param model_name: Model name for a bring-your-own-model configuration. + :type model_name: str, optional + + :param name: Name of the configuration. + :type name: str + + :param num_records: Maximum number of records to process for the run. + :type num_records: int + + :param sampling_ratio: Fraction of matching spans to sample for the run. + :type sampling_ratio: float + + :param scope: Scope of the configuration. + :type scope: str, optional + + :param template: Template used to guide topic generation. + :type template: str, optional + """ + if account_id is not unset: + kwargs["account_id"] = account_id + if config_id is not unset: + kwargs["config_id"] = config_id + if integration_provider is not unset: + kwargs["integration_provider"] = integration_provider + if model_name is not unset: + kwargs["model_name"] = model_name + if scope is not unset: + kwargs["scope"] = scope + if template is not unset: + kwargs["template"] = template + super().__init__(kwargs) + + self_.evp_query = evp_query + self_.hierarchy_depth = hierarchy_depth + self_.name = name + self_.num_records = num_records + self_.sampling_ratio = sampling_ratio diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_config_upsert_request_data.py b/src/datadog_api_client/v2/model/llm_obs_patterns_config_upsert_request_data.py new file mode 100644 index 0000000000..fbe8df02e7 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_config_upsert_request_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request_attributes import ( + LLMObsPatternsConfigUpsertRequestAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_config_type import LLMObsPatternsConfigType + + +class LLMObsPatternsConfigUpsertRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request_attributes import ( + LLMObsPatternsConfigUpsertRequestAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_config_type import LLMObsPatternsConfigType + + return { + "attributes": (LLMObsPatternsConfigUpsertRequestAttributes,), + "type": (LLMObsPatternsConfigType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, attributes: LLMObsPatternsConfigUpsertRequestAttributes, type: LLMObsPatternsConfigType, **kwargs + ): + """ + Data object for creating or updating an LLM Observability patterns configuration. + + :param attributes: Attributes for creating or updating an LLM Observability patterns configuration. + :type attributes: LLMObsPatternsConfigUpsertRequestAttributes + + :param type: Resource type of an LLM Observability patterns configuration. + :type type: LLMObsPatternsConfigType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_configs_list_type.py b/src/datadog_api_client/v2/model/llm_obs_patterns_configs_list_type.py new file mode 100644 index 0000000000..ab7a584d15 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_configs_list_type.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class LLMObsPatternsConfigsListType(ModelSimple): + """ + Resource type of a list of LLM Observability patterns configurations. + + :param value: If omitted defaults to "list_topic_discovery_configs_response". Must be one of ["list_topic_discovery_configs_response"]. + :type value: str + """ + + allowed_values = { + "list_topic_discovery_configs_response", + } + LIST_TOPIC_DISCOVERY_CONFIGS_RESPONSE: ClassVar["LLMObsPatternsConfigsListType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +LLMObsPatternsConfigsListType.LIST_TOPIC_DISCOVERY_CONFIGS_RESPONSE = LLMObsPatternsConfigsListType( + "list_topic_discovery_configs_response" +) diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_configs_response.py b/src/datadog_api_client/v2/model/llm_obs_patterns_configs_response.py new file mode 100644 index 0000000000..7276bc3021 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_configs_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_configs_response_data import LLMObsPatternsConfigsResponseData + + +class LLMObsPatternsConfigsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_configs_response_data import LLMObsPatternsConfigsResponseData + + return { + "data": (LLMObsPatternsConfigsResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsPatternsConfigsResponseData, **kwargs): + """ + Response containing a list of LLM Observability patterns configurations. + + :param data: Data object of a list of LLM Observability patterns configurations. + :type data: LLMObsPatternsConfigsResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_configs_response_attributes.py b/src/datadog_api_client/v2/model/llm_obs_patterns_configs_response_attributes.py new file mode 100644 index 0000000000..ed5b51c04f --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_configs_response_attributes.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_config_item import LLMObsPatternsConfigItem + + +class LLMObsPatternsConfigsResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_config_item import LLMObsPatternsConfigItem + + return { + "configs": ([LLMObsPatternsConfigItem],), + } + + attribute_map = { + "configs": "configs", + } + + def __init__(self_, configs: List[LLMObsPatternsConfigItem], **kwargs): + """ + Attributes of a list of LLM Observability patterns configurations. + + :param configs: List of patterns configurations. + :type configs: [LLMObsPatternsConfigItem] + """ + super().__init__(kwargs) + + self_.configs = configs diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_configs_response_data.py b/src/datadog_api_client/v2/model/llm_obs_patterns_configs_response_data.py new file mode 100644 index 0000000000..4a6a804b8e --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_configs_response_data.py @@ -0,0 +1,64 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_configs_response_attributes import ( + LLMObsPatternsConfigsResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_configs_list_type import LLMObsPatternsConfigsListType + + +class LLMObsPatternsConfigsResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_configs_response_attributes import ( + LLMObsPatternsConfigsResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_configs_list_type import LLMObsPatternsConfigsListType + + return { + "attributes": (LLMObsPatternsConfigsResponseAttributes,), + "id": (str,), + "type": (LLMObsPatternsConfigsListType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: LLMObsPatternsConfigsResponseAttributes, + id: str, + type: LLMObsPatternsConfigsListType, + **kwargs, + ): + """ + Data object of a list of LLM Observability patterns configurations. + + :param attributes: Attributes of a list of LLM Observability patterns configurations. + :type attributes: LLMObsPatternsConfigsResponseAttributes + + :param id: Identifier of the list response. + :type id: str + + :param type: Resource type of a list of LLM Observability patterns configurations. + :type type: LLMObsPatternsConfigsListType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_request_type.py b/src/datadog_api_client/v2/model/llm_obs_patterns_request_type.py new file mode 100644 index 0000000000..49fe17e9e5 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_request_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class LLMObsPatternsRequestType(ModelSimple): + """ + Resource type for triggering an LLM Observability patterns run. + + :param value: If omitted defaults to "topic_discovery". Must be one of ["topic_discovery"]. + :type value: str + """ + + allowed_values = { + "topic_discovery", + } + TOPIC_DISCOVERY: ClassVar["LLMObsPatternsRequestType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +LLMObsPatternsRequestType.TOPIC_DISCOVERY = LLMObsPatternsRequestType("topic_discovery") diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_run_status_response.py b/src/datadog_api_client/v2/model/llm_obs_patterns_run_status_response.py new file mode 100644 index 0000000000..d4b2e1464b --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_run_status_response.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_run_status_response_data import ( + LLMObsPatternsRunStatusResponseData, + ) + + +class LLMObsPatternsRunStatusResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_run_status_response_data import ( + LLMObsPatternsRunStatusResponseData, + ) + + return { + "data": (LLMObsPatternsRunStatusResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsPatternsRunStatusResponseData, **kwargs): + """ + Response containing the status of an LLM Observability patterns run. + + :param data: Data object of an LLM Observability patterns run status response. + :type data: LLMObsPatternsRunStatusResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_run_status_response_attributes.py b/src/datadog_api_client/v2/model/llm_obs_patterns_run_status_response_attributes.py new file mode 100644 index 0000000000..63d528746a --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_run_status_response_attributes.py @@ -0,0 +1,61 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_activity_progress import LLMObsPatternsActivityProgress + + +class LLMObsPatternsRunStatusResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_activity_progress import LLMObsPatternsActivityProgress + + return { + "created_at": (datetime,), + "progress": ([LLMObsPatternsActivityProgress],), + "status": (str,), + "step": (str,), + } + + attribute_map = { + "created_at": "created_at", + "progress": "progress", + "status": "status", + "step": "step", + } + + def __init__( + self_, created_at: datetime, progress: List[LLMObsPatternsActivityProgress], status: str, step: str, **kwargs + ): + """ + Attributes of an LLM Observability patterns run status. + + :param created_at: Timestamp when the run was created. + :type created_at: datetime + + :param progress: List of step-by-step progress entries for a patterns run. + :type progress: [LLMObsPatternsActivityProgress] + + :param status: Overall status of the run. + :type status: str + + :param step: The current step of the run. + :type step: str + """ + super().__init__(kwargs) + + self_.created_at = created_at + self_.progress = progress + self_.status = status + self_.step = step diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_run_status_response_data.py b/src/datadog_api_client/v2/model/llm_obs_patterns_run_status_response_data.py new file mode 100644 index 0000000000..a5ec8f69ff --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_run_status_response_data.py @@ -0,0 +1,64 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_run_status_response_attributes import ( + LLMObsPatternsRunStatusResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_run_status_type import LLMObsPatternsRunStatusType + + +class LLMObsPatternsRunStatusResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_run_status_response_attributes import ( + LLMObsPatternsRunStatusResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_run_status_type import LLMObsPatternsRunStatusType + + return { + "attributes": (LLMObsPatternsRunStatusResponseAttributes,), + "id": (str,), + "type": (LLMObsPatternsRunStatusType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: LLMObsPatternsRunStatusResponseAttributes, + id: str, + type: LLMObsPatternsRunStatusType, + **kwargs, + ): + """ + Data object of an LLM Observability patterns run status response. + + :param attributes: Attributes of an LLM Observability patterns run status. + :type attributes: LLMObsPatternsRunStatusResponseAttributes + + :param id: The ID of the patterns run. + :type id: str + + :param type: Resource type of an LLM Observability patterns run status. + :type type: LLMObsPatternsRunStatusType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_run_status_type.py b/src/datadog_api_client/v2/model/llm_obs_patterns_run_status_type.py new file mode 100644 index 0000000000..3048a5b8a8 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_run_status_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class LLMObsPatternsRunStatusType(ModelSimple): + """ + Resource type of an LLM Observability patterns run status. + + :param value: If omitted defaults to "topic_discovery_run_status". Must be one of ["topic_discovery_run_status"]. + :type value: str + """ + + allowed_values = { + "topic_discovery_run_status", + } + TOPIC_DISCOVERY_RUN_STATUS: ClassVar["LLMObsPatternsRunStatusType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +LLMObsPatternsRunStatusType.TOPIC_DISCOVERY_RUN_STATUS = LLMObsPatternsRunStatusType("topic_discovery_run_status") diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_run_summary.py b/src/datadog_api_client/v2/model/llm_obs_patterns_run_summary.py new file mode 100644 index 0000000000..1dbd2d6a48 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_run_summary.py @@ -0,0 +1,78 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_config_snapshot import LLMObsPatternsConfigSnapshot + + +class LLMObsPatternsRunSummary(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_config_snapshot import LLMObsPatternsConfigSnapshot + + return { + "completed_at": (datetime, none_type), + "config_snapshot": (LLMObsPatternsConfigSnapshot,), + "created_at": (datetime,), + "id": (str,), + "status": (str,), + } + + attribute_map = { + "completed_at": "completed_at", + "config_snapshot": "config_snapshot", + "created_at": "created_at", + "id": "id", + "status": "status", + } + + def __init__( + self_, + created_at: datetime, + id: str, + status: str, + completed_at: Union[datetime, none_type, UnsetType] = unset, + config_snapshot: Union[LLMObsPatternsConfigSnapshot, UnsetType] = unset, + **kwargs, + ): + """ + Summary of an LLM Observability patterns run. + + :param completed_at: Timestamp when the run completed. Null if the run has not completed. + :type completed_at: datetime, none_type, optional + + :param config_snapshot: Snapshot of the configuration used for a patterns run. + :type config_snapshot: LLMObsPatternsConfigSnapshot, optional + + :param created_at: Timestamp when the run was created. + :type created_at: datetime + + :param id: Unique identifier of the run. + :type id: str + + :param status: Status of the run. + :type status: str + """ + if completed_at is not unset: + kwargs["completed_at"] = completed_at + if config_snapshot is not unset: + kwargs["config_snapshot"] = config_snapshot + super().__init__(kwargs) + + self_.created_at = created_at + self_.id = id + self_.status = status diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_runs_list_type.py b/src/datadog_api_client/v2/model/llm_obs_patterns_runs_list_type.py new file mode 100644 index 0000000000..2c78370078 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_runs_list_type.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class LLMObsPatternsRunsListType(ModelSimple): + """ + Resource type of a list of LLM Observability patterns runs. + + :param value: If omitted defaults to "list_topic_discovery_runs_response". Must be one of ["list_topic_discovery_runs_response"]. + :type value: str + """ + + allowed_values = { + "list_topic_discovery_runs_response", + } + LIST_TOPIC_DISCOVERY_RUNS_RESPONSE: ClassVar["LLMObsPatternsRunsListType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +LLMObsPatternsRunsListType.LIST_TOPIC_DISCOVERY_RUNS_RESPONSE = LLMObsPatternsRunsListType( + "list_topic_discovery_runs_response" +) diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_runs_response.py b/src/datadog_api_client/v2/model/llm_obs_patterns_runs_response.py new file mode 100644 index 0000000000..fc328244a8 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_runs_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_runs_response_data import LLMObsPatternsRunsResponseData + + +class LLMObsPatternsRunsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_runs_response_data import LLMObsPatternsRunsResponseData + + return { + "data": (LLMObsPatternsRunsResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsPatternsRunsResponseData, **kwargs): + """ + Response containing the completed runs of an LLM Observability patterns configuration. + + :param data: Data object of an LLM Observability patterns runs response. + :type data: LLMObsPatternsRunsResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_runs_response_attributes.py b/src/datadog_api_client/v2/model/llm_obs_patterns_runs_response_attributes.py new file mode 100644 index 0000000000..7aa25aaff7 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_runs_response_attributes.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_run_summary import LLMObsPatternsRunSummary + + +class LLMObsPatternsRunsResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_run_summary import LLMObsPatternsRunSummary + + return { + "runs": ([LLMObsPatternsRunSummary],), + } + + attribute_map = { + "runs": "runs", + } + + def __init__(self_, runs: List[LLMObsPatternsRunSummary], **kwargs): + """ + Attributes of an LLM Observability patterns runs response. + + :param runs: List of patterns runs. + :type runs: [LLMObsPatternsRunSummary] + """ + super().__init__(kwargs) + + self_.runs = runs diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_runs_response_data.py b/src/datadog_api_client/v2/model/llm_obs_patterns_runs_response_data.py new file mode 100644 index 0000000000..eee77dcf37 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_runs_response_data.py @@ -0,0 +1,60 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_runs_response_attributes import ( + LLMObsPatternsRunsResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_runs_list_type import LLMObsPatternsRunsListType + + +class LLMObsPatternsRunsResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_runs_response_attributes import ( + LLMObsPatternsRunsResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_runs_list_type import LLMObsPatternsRunsListType + + return { + "attributes": (LLMObsPatternsRunsResponseAttributes,), + "id": (str,), + "type": (LLMObsPatternsRunsListType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, attributes: LLMObsPatternsRunsResponseAttributes, id: str, type: LLMObsPatternsRunsListType, **kwargs + ): + """ + Data object of an LLM Observability patterns runs response. + + :param attributes: Attributes of an LLM Observability patterns runs response. + :type attributes: LLMObsPatternsRunsResponseAttributes + + :param id: Identifier of the configuration the runs belong to. + :type id: str + + :param type: Resource type of a list of LLM Observability patterns runs. + :type type: LLMObsPatternsRunsListType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_topic.py b/src/datadog_api_client/v2/model/llm_obs_patterns_topic.py new file mode 100644 index 0000000000..45af7b6356 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_topic.py @@ -0,0 +1,101 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, +) + + +class LLMObsPatternsTopic(ModelNormal): + @cached_property + def openapi_types(_): + return { + "created_at": (datetime,), + "description": (str,), + "first_seen_at": (datetime,), + "hierarchy_level": (int,), + "id": (str,), + "is_validated": (bool,), + "name": (str,), + "parent_topic_id": (str,), + "point_count": (int,), + "run_id": (str,), + } + + attribute_map = { + "created_at": "created_at", + "description": "description", + "first_seen_at": "first_seen_at", + "hierarchy_level": "hierarchy_level", + "id": "id", + "is_validated": "is_validated", + "name": "name", + "parent_topic_id": "parent_topic_id", + "point_count": "point_count", + "run_id": "run_id", + } + + def __init__( + self_, + created_at: datetime, + description: str, + first_seen_at: datetime, + hierarchy_level: int, + id: str, + is_validated: bool, + name: str, + parent_topic_id: str, + point_count: int, + run_id: str, + **kwargs, + ): + """ + A topic discovered by an LLM Observability patterns run. + + :param created_at: Timestamp when the topic was created. + :type created_at: datetime + + :param description: Description of the topic. + :type description: str + + :param first_seen_at: Timestamp when the topic was first seen. + :type first_seen_at: datetime + + :param hierarchy_level: Level of the topic in the hierarchy. Level 0 is a leaf topic. + :type hierarchy_level: int + + :param id: Unique identifier of the topic. + :type id: str + + :param is_validated: Whether the topic has been validated. + :type is_validated: bool + + :param name: Name of the topic. + :type name: str + + :param parent_topic_id: Identifier of the parent topic. Empty for top-level topics. + :type parent_topic_id: str + + :param point_count: Number of data points assigned to the topic. + :type point_count: int + + :param run_id: Identifier of the run that produced the topic. + :type run_id: str + """ + super().__init__(kwargs) + + self_.created_at = created_at + self_.description = description + self_.first_seen_at = first_seen_at + self_.hierarchy_level = hierarchy_level + self_.id = id + self_.is_validated = is_validated + self_.name = name + self_.parent_topic_id = parent_topic_id + self_.point_count = point_count + self_.run_id = run_id diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_topic_with_clustered_points.py b/src/datadog_api_client/v2/model/llm_obs_patterns_topic_with_clustered_points.py new file mode 100644 index 0000000000..99931e8dc8 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_topic_with_clustered_points.py @@ -0,0 +1,119 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_clustered_point_ref import LLMObsPatternsClusteredPointRef + + +class LLMObsPatternsTopicWithClusteredPoints(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_clustered_point_ref import LLMObsPatternsClusteredPointRef + + return { + "cluster_points": ([LLMObsPatternsClusteredPointRef],), + "created_at": (datetime,), + "description": (str,), + "first_seen_at": (datetime,), + "hierarchy_level": (int,), + "id": (str,), + "is_validated": (bool,), + "name": (str,), + "parent_topic_id": (str,), + "point_count": (int,), + "run_id": (str,), + } + + attribute_map = { + "cluster_points": "cluster_points", + "created_at": "created_at", + "description": "description", + "first_seen_at": "first_seen_at", + "hierarchy_level": "hierarchy_level", + "id": "id", + "is_validated": "is_validated", + "name": "name", + "parent_topic_id": "parent_topic_id", + "point_count": "point_count", + "run_id": "run_id", + } + + def __init__( + self_, + created_at: datetime, + description: str, + first_seen_at: datetime, + hierarchy_level: int, + id: str, + is_validated: bool, + name: str, + parent_topic_id: str, + point_count: int, + run_id: str, + cluster_points: Union[List[LLMObsPatternsClusteredPointRef], UnsetType] = unset, + **kwargs, + ): + """ + A topic discovered by an LLM Observability patterns run, including the + clustered points attached to leaf topics. + + :param cluster_points: List of clustered points attached to a topic. + :type cluster_points: [LLMObsPatternsClusteredPointRef], optional + + :param created_at: Timestamp when the topic was created. + :type created_at: datetime + + :param description: Description of the topic. + :type description: str + + :param first_seen_at: Timestamp when the topic was first seen. + :type first_seen_at: datetime + + :param hierarchy_level: Level of the topic in the hierarchy. Level 0 is a leaf topic. + :type hierarchy_level: int + + :param id: Unique identifier of the topic. + :type id: str + + :param is_validated: Whether the topic has been validated. + :type is_validated: bool + + :param name: Name of the topic. + :type name: str + + :param parent_topic_id: Identifier of the parent topic. Empty for top-level topics. + :type parent_topic_id: str + + :param point_count: Number of data points assigned to the topic. + :type point_count: int + + :param run_id: Identifier of the run that produced the topic. + :type run_id: str + """ + if cluster_points is not unset: + kwargs["cluster_points"] = cluster_points + super().__init__(kwargs) + + self_.created_at = created_at + self_.description = description + self_.first_seen_at = first_seen_at + self_.hierarchy_level = hierarchy_level + self_.id = id + self_.is_validated = is_validated + self_.name = name + self_.parent_topic_id = parent_topic_id + self_.point_count = point_count + self_.run_id = run_id diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_topics_response.py b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_response.py new file mode 100644 index 0000000000..599ae389bb --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_topics_response_data import LLMObsPatternsTopicsResponseData + + +class LLMObsPatternsTopicsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_topics_response_data import LLMObsPatternsTopicsResponseData + + return { + "data": (LLMObsPatternsTopicsResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsPatternsTopicsResponseData, **kwargs): + """ + Response containing the topics discovered by an LLM Observability patterns run. + + :param data: Data object of an LLM Observability patterns topics response. + :type data: LLMObsPatternsTopicsResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_topics_response_attributes.py b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_response_attributes.py new file mode 100644 index 0000000000..abfd370549 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_response_attributes.py @@ -0,0 +1,94 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_config_snapshot import LLMObsPatternsConfigSnapshot + from datadog_api_client.v2.model.llm_obs_patterns_topic import LLMObsPatternsTopic + + +class LLMObsPatternsTopicsResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_config_snapshot import LLMObsPatternsConfigSnapshot + from datadog_api_client.v2.model.llm_obs_patterns_topic import LLMObsPatternsTopic + + return { + "completed_at": (datetime, none_type), + "config_id": (str,), + "config_snapshot": (LLMObsPatternsConfigSnapshot,), + "created_at": (datetime,), + "previous_run_id": (str,), + "run_id": (str,), + "topics": ([LLMObsPatternsTopic],), + } + + attribute_map = { + "completed_at": "completed_at", + "config_id": "config_id", + "config_snapshot": "config_snapshot", + "created_at": "created_at", + "previous_run_id": "previous_run_id", + "run_id": "run_id", + "topics": "topics", + } + + def __init__( + self_, + config_id: str, + created_at: datetime, + previous_run_id: str, + run_id: str, + topics: List[LLMObsPatternsTopic], + completed_at: Union[datetime, none_type, UnsetType] = unset, + config_snapshot: Union[LLMObsPatternsConfigSnapshot, UnsetType] = unset, + **kwargs, + ): + """ + Attributes of an LLM Observability patterns topics response. + + :param completed_at: Timestamp when the run completed. Null if the run has not completed. + :type completed_at: datetime, none_type, optional + + :param config_id: Identifier of the configuration that produced the run. + :type config_id: str + + :param config_snapshot: Snapshot of the configuration used for a patterns run. + :type config_snapshot: LLMObsPatternsConfigSnapshot, optional + + :param created_at: Timestamp when the run was created. + :type created_at: datetime + + :param previous_run_id: Identifier of the run that completed immediately before this one. Empty if none. + :type previous_run_id: str + + :param run_id: Identifier of the run that produced the topics. + :type run_id: str + + :param topics: List of discovered topics. + :type topics: [LLMObsPatternsTopic] + """ + if completed_at is not unset: + kwargs["completed_at"] = completed_at + if config_snapshot is not unset: + kwargs["config_snapshot"] = config_snapshot + super().__init__(kwargs) + + self_.config_id = config_id + self_.created_at = created_at + self_.previous_run_id = previous_run_id + self_.run_id = run_id + self_.topics = topics diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_topics_response_data.py b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_response_data.py new file mode 100644 index 0000000000..ad604caf1c --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_response_data.py @@ -0,0 +1,60 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_topics_response_attributes import ( + LLMObsPatternsTopicsResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_topics_type import LLMObsPatternsTopicsType + + +class LLMObsPatternsTopicsResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_topics_response_attributes import ( + LLMObsPatternsTopicsResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_topics_type import LLMObsPatternsTopicsType + + return { + "attributes": (LLMObsPatternsTopicsResponseAttributes,), + "id": (str,), + "type": (LLMObsPatternsTopicsType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, attributes: LLMObsPatternsTopicsResponseAttributes, id: str, type: LLMObsPatternsTopicsType, **kwargs + ): + """ + Data object of an LLM Observability patterns topics response. + + :param attributes: Attributes of an LLM Observability patterns topics response. + :type attributes: LLMObsPatternsTopicsResponseAttributes + + :param id: Identifier of the run the topics belong to. + :type id: str + + :param type: Resource type of an LLM Observability patterns topics response. + :type type: LLMObsPatternsTopicsType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_topics_type.py b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_type.py new file mode 100644 index 0000000000..28c3c3afcf --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class LLMObsPatternsTopicsType(ModelSimple): + """ + Resource type of an LLM Observability patterns topics response. + + :param value: If omitted defaults to "get_topics_response". Must be one of ["get_topics_response"]. + :type value: str + """ + + allowed_values = { + "get_topics_response", + } + GET_TOPICS_RESPONSE: ClassVar["LLMObsPatternsTopicsType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +LLMObsPatternsTopicsType.GET_TOPICS_RESPONSE = LLMObsPatternsTopicsType("get_topics_response") diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_topics_with_clustered_points_response.py b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_with_clustered_points_response.py new file mode 100644 index 0000000000..daf8893650 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_with_clustered_points_response.py @@ -0,0 +1,45 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_response_data import ( + LLMObsPatternsTopicsWithClusteredPointsResponseData, + ) + + +class LLMObsPatternsTopicsWithClusteredPointsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_response_data import ( + LLMObsPatternsTopicsWithClusteredPointsResponseData, + ) + + return { + "data": (LLMObsPatternsTopicsWithClusteredPointsResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsPatternsTopicsWithClusteredPointsResponseData, **kwargs): + """ + Response containing the topics, and the clustered points of their leaf topics, + discovered by an LLM Observability patterns run. + + :param data: Data object of an LLM Observability patterns topics-with-clustered-points response. + :type data: LLMObsPatternsTopicsWithClusteredPointsResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_topics_with_clustered_points_response_attributes.py b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_with_clustered_points_response_attributes.py new file mode 100644 index 0000000000..8765ad67af --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_with_clustered_points_response_attributes.py @@ -0,0 +1,98 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_config_snapshot import LLMObsPatternsConfigSnapshot + from datadog_api_client.v2.model.llm_obs_patterns_topic_with_clustered_points import ( + LLMObsPatternsTopicWithClusteredPoints, + ) + + +class LLMObsPatternsTopicsWithClusteredPointsResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_config_snapshot import LLMObsPatternsConfigSnapshot + from datadog_api_client.v2.model.llm_obs_patterns_topic_with_clustered_points import ( + LLMObsPatternsTopicWithClusteredPoints, + ) + + return { + "completed_at": (datetime, none_type), + "config_id": (str,), + "config_snapshot": (LLMObsPatternsConfigSnapshot,), + "created_at": (datetime,), + "previous_run_id": (str,), + "run_id": (str,), + "topics": ([LLMObsPatternsTopicWithClusteredPoints],), + } + + attribute_map = { + "completed_at": "completed_at", + "config_id": "config_id", + "config_snapshot": "config_snapshot", + "created_at": "created_at", + "previous_run_id": "previous_run_id", + "run_id": "run_id", + "topics": "topics", + } + + def __init__( + self_, + config_id: str, + created_at: datetime, + previous_run_id: str, + run_id: str, + topics: List[LLMObsPatternsTopicWithClusteredPoints], + completed_at: Union[datetime, none_type, UnsetType] = unset, + config_snapshot: Union[LLMObsPatternsConfigSnapshot, UnsetType] = unset, + **kwargs, + ): + """ + Attributes of an LLM Observability patterns topics-with-clustered-points response. + + :param completed_at: Timestamp when the run completed. Null if the run has not completed. + :type completed_at: datetime, none_type, optional + + :param config_id: Identifier of the configuration that produced the run. + :type config_id: str + + :param config_snapshot: Snapshot of the configuration used for a patterns run. + :type config_snapshot: LLMObsPatternsConfigSnapshot, optional + + :param created_at: Timestamp when the run was created. + :type created_at: datetime + + :param previous_run_id: Identifier of the run that completed immediately before this one. Empty if none. + :type previous_run_id: str + + :param run_id: Identifier of the run that produced the topics. + :type run_id: str + + :param topics: List of discovered topics with their clustered points. + :type topics: [LLMObsPatternsTopicWithClusteredPoints] + """ + if completed_at is not unset: + kwargs["completed_at"] = completed_at + if config_snapshot is not unset: + kwargs["config_snapshot"] = config_snapshot + super().__init__(kwargs) + + self_.config_id = config_id + self_.created_at = created_at + self_.previous_run_id = previous_run_id + self_.run_id = run_id + self_.topics = topics diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_topics_with_clustered_points_response_data.py b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_with_clustered_points_response_data.py new file mode 100644 index 0000000000..7ebe2e1ba8 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_with_clustered_points_response_data.py @@ -0,0 +1,68 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_response_attributes import ( + LLMObsPatternsTopicsWithClusteredPointsResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_type import ( + LLMObsPatternsTopicsWithClusteredPointsType, + ) + + +class LLMObsPatternsTopicsWithClusteredPointsResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_response_attributes import ( + LLMObsPatternsTopicsWithClusteredPointsResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_type import ( + LLMObsPatternsTopicsWithClusteredPointsType, + ) + + return { + "attributes": (LLMObsPatternsTopicsWithClusteredPointsResponseAttributes,), + "id": (str,), + "type": (LLMObsPatternsTopicsWithClusteredPointsType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: LLMObsPatternsTopicsWithClusteredPointsResponseAttributes, + id: str, + type: LLMObsPatternsTopicsWithClusteredPointsType, + **kwargs, + ): + """ + Data object of an LLM Observability patterns topics-with-clustered-points response. + + :param attributes: Attributes of an LLM Observability patterns topics-with-clustered-points response. + :type attributes: LLMObsPatternsTopicsWithClusteredPointsResponseAttributes + + :param id: Identifier of the run the topics belong to. + :type id: str + + :param type: Resource type of an LLM Observability patterns topics-with-clustered-points response. + :type type: LLMObsPatternsTopicsWithClusteredPointsType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_topics_with_clustered_points_type.py b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_with_clustered_points_type.py new file mode 100644 index 0000000000..fb053dcd85 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_topics_with_clustered_points_type.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class LLMObsPatternsTopicsWithClusteredPointsType(ModelSimple): + """ + Resource type of an LLM Observability patterns topics-with-clustered-points response. + + :param value: If omitted defaults to "get_topics_with_cluster_points_response". Must be one of ["get_topics_with_cluster_points_response"]. + :type value: str + """ + + allowed_values = { + "get_topics_with_cluster_points_response", + } + GET_TOPICS_WITH_CLUSTER_POINTS_RESPONSE: ClassVar["LLMObsPatternsTopicsWithClusteredPointsType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +LLMObsPatternsTopicsWithClusteredPointsType.GET_TOPICS_WITH_CLUSTER_POINTS_RESPONSE = ( + LLMObsPatternsTopicsWithClusteredPointsType("get_topics_with_cluster_points_response") +) diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_request.py b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_request.py new file mode 100644 index 0000000000..7b58d10d3c --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_trigger_request_data import LLMObsPatternsTriggerRequestData + + +class LLMObsPatternsTriggerRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_trigger_request_data import LLMObsPatternsTriggerRequestData + + return { + "data": (LLMObsPatternsTriggerRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsPatternsTriggerRequestData, **kwargs): + """ + Request to trigger an LLM Observability patterns run. + + :param data: Data object for triggering an LLM Observability patterns run. + :type data: LLMObsPatternsTriggerRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_request_attributes.py b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_request_attributes.py new file mode 100644 index 0000000000..3b5db92984 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_request_attributes.py @@ -0,0 +1,33 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class LLMObsPatternsTriggerRequestAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "config_id": (str,), + } + + attribute_map = { + "config_id": "config_id", + } + + def __init__(self_, config_id: str, **kwargs): + """ + Attributes for triggering an LLM Observability patterns run. + + :param config_id: The ID of the patterns configuration to run. + :type config_id: str + """ + super().__init__(kwargs) + + self_.config_id = config_id diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_request_data.py b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_request_data.py new file mode 100644 index 0000000000..785b7975f4 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_request_data.py @@ -0,0 +1,52 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_trigger_request_attributes import ( + LLMObsPatternsTriggerRequestAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_request_type import LLMObsPatternsRequestType + + +class LLMObsPatternsTriggerRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_trigger_request_attributes import ( + LLMObsPatternsTriggerRequestAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_request_type import LLMObsPatternsRequestType + + return { + "attributes": (LLMObsPatternsTriggerRequestAttributes,), + "type": (LLMObsPatternsRequestType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: LLMObsPatternsTriggerRequestAttributes, type: LLMObsPatternsRequestType, **kwargs): + """ + Data object for triggering an LLM Observability patterns run. + + :param attributes: Attributes for triggering an LLM Observability patterns run. + :type attributes: LLMObsPatternsTriggerRequestAttributes + + :param type: Resource type for triggering an LLM Observability patterns run. + :type type: LLMObsPatternsRequestType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_response.py b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_response.py new file mode 100644 index 0000000000..460ba97946 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_trigger_response_data import LLMObsPatternsTriggerResponseData + + +class LLMObsPatternsTriggerResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_trigger_response_data import LLMObsPatternsTriggerResponseData + + return { + "data": (LLMObsPatternsTriggerResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: LLMObsPatternsTriggerResponseData, **kwargs): + """ + Response after triggering an LLM Observability patterns run. + + :param data: Data object of an LLM Observability patterns trigger response. + :type data: LLMObsPatternsTriggerResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_response_attributes.py b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_response_attributes.py new file mode 100644 index 0000000000..df2346f0c8 --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_response_attributes.py @@ -0,0 +1,45 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class LLMObsPatternsTriggerResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "config_id": (str,), + "run_id": (str,), + "status": (str,), + } + + attribute_map = { + "config_id": "config_id", + "run_id": "run_id", + "status": "status", + } + + def __init__(self_, config_id: str, run_id: str, status: str, **kwargs): + """ + Attributes of an LLM Observability patterns trigger response. + + :param config_id: The ID of the patterns configuration that was run. + :type config_id: str + + :param run_id: The ID of the patterns run that was started. + :type run_id: str + + :param status: Status of the patterns run. + :type status: str + """ + super().__init__(kwargs) + + self_.config_id = config_id + self_.run_id = run_id + self_.status = status diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_response_data.py b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_response_data.py new file mode 100644 index 0000000000..e86713a4ad --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_response_data.py @@ -0,0 +1,64 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_patterns_trigger_response_attributes import ( + LLMObsPatternsTriggerResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_trigger_response_type import LLMObsPatternsTriggerResponseType + + +class LLMObsPatternsTriggerResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_patterns_trigger_response_attributes import ( + LLMObsPatternsTriggerResponseAttributes, + ) + from datadog_api_client.v2.model.llm_obs_patterns_trigger_response_type import LLMObsPatternsTriggerResponseType + + return { + "attributes": (LLMObsPatternsTriggerResponseAttributes,), + "id": (str,), + "type": (LLMObsPatternsTriggerResponseType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: LLMObsPatternsTriggerResponseAttributes, + id: str, + type: LLMObsPatternsTriggerResponseType, + **kwargs, + ): + """ + Data object of an LLM Observability patterns trigger response. + + :param attributes: Attributes of an LLM Observability patterns trigger response. + :type attributes: LLMObsPatternsTriggerResponseAttributes + + :param id: The ID of the patterns configuration that was run. + :type id: str + + :param type: Resource type of an LLM Observability patterns trigger response. + :type type: LLMObsPatternsTriggerResponseType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_response_type.py b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_response_type.py new file mode 100644 index 0000000000..f6a2d8236b --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_patterns_trigger_response_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class LLMObsPatternsTriggerResponseType(ModelSimple): + """ + Resource type of an LLM Observability patterns trigger response. + + :param value: If omitted defaults to "topic_discovery_run". Must be one of ["topic_discovery_run"]. + :type value: str + """ + + allowed_values = { + "topic_discovery_run", + } + TOPIC_DISCOVERY_RUN: ClassVar["LLMObsPatternsTriggerResponseType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +LLMObsPatternsTriggerResponseType.TOPIC_DISCOVERY_RUN = LLMObsPatternsTriggerResponseType("topic_discovery_run") diff --git a/src/datadog_api_client/v2/model/llm_obs_upsert_annotation_item.py b/src/datadog_api_client/v2/model/llm_obs_upsert_annotation_item.py new file mode 100644 index 0000000000..01892782fe --- /dev/null +++ b/src/datadog_api_client/v2/model/llm_obs_upsert_annotation_item.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.llm_obs_annotation_label_value import LLMObsAnnotationLabelValue + + +class LLMObsUpsertAnnotationItem(ModelNormal): + validations = { + "label_values": { + "min_items": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.llm_obs_annotation_label_value import LLMObsAnnotationLabelValue + + return { + "interaction_id": (str,), + "label_values": ([LLMObsAnnotationLabelValue],), + } + + attribute_map = { + "interaction_id": "interaction_id", + "label_values": "label_values", + } + + def __init__(self_, interaction_id: str, label_values: List[LLMObsAnnotationLabelValue], **kwargs): + """ + A single annotation to create or update. The annotation is matched by + ``interaction_id`` and the requesting user's identity. + + :param interaction_id: ID of the interaction to annotate. + :type interaction_id: str + + :param label_values: Label values for this annotation. Each entry references a label schema by ID + and provides the corresponding value validated against the schema type constraints. + :type label_values: [LLMObsAnnotationLabelValue] + """ + super().__init__(kwargs) + + self_.interaction_id = interaction_id + self_.label_values = label_values diff --git a/src/datadog_api_client/v2/model/max_session_duration_type.py b/src/datadog_api_client/v2/model/max_session_duration_type.py new file mode 100644 index 0000000000..0580812b5f --- /dev/null +++ b/src/datadog_api_client/v2/model/max_session_duration_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class MaxSessionDurationType(ModelSimple): + """ + Data type of a maximum session duration update. + + :param value: If omitted defaults to "max_session_duration". Must be one of ["max_session_duration"]. + :type value: str + """ + + allowed_values = { + "max_session_duration", + } + MAX_SESSION_DURATION: ClassVar["MaxSessionDurationType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +MaxSessionDurationType.MAX_SESSION_DURATION = MaxSessionDurationType("max_session_duration") diff --git a/src/datadog_api_client/v2/model/max_session_duration_update_attributes.py b/src/datadog_api_client/v2/model/max_session_duration_update_attributes.py new file mode 100644 index 0000000000..83e90d3951 --- /dev/null +++ b/src/datadog_api_client/v2/model/max_session_duration_update_attributes.py @@ -0,0 +1,39 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class MaxSessionDurationUpdateAttributes(ModelNormal): + validations = { + "max_session_duration": { + "inclusive_minimum": 1, + }, + } + + @cached_property + def openapi_types(_): + return { + "max_session_duration": (int,), + } + + attribute_map = { + "max_session_duration": "max_session_duration", + } + + def __init__(self_, max_session_duration: int, **kwargs): + """ + Attributes for the maximum session duration update request. + + :param max_session_duration: The maximum session duration, in seconds. + :type max_session_duration: int + """ + super().__init__(kwargs) + + self_.max_session_duration = max_session_duration diff --git a/src/datadog_api_client/v2/model/max_session_duration_update_data.py b/src/datadog_api_client/v2/model/max_session_duration_update_data.py new file mode 100644 index 0000000000..72c45f26a3 --- /dev/null +++ b/src/datadog_api_client/v2/model/max_session_duration_update_data.py @@ -0,0 +1,50 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.max_session_duration_update_attributes import MaxSessionDurationUpdateAttributes + from datadog_api_client.v2.model.max_session_duration_type import MaxSessionDurationType + + +class MaxSessionDurationUpdateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.max_session_duration_update_attributes import ( + MaxSessionDurationUpdateAttributes, + ) + from datadog_api_client.v2.model.max_session_duration_type import MaxSessionDurationType + + return { + "attributes": (MaxSessionDurationUpdateAttributes,), + "type": (MaxSessionDurationType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: MaxSessionDurationUpdateAttributes, type: MaxSessionDurationType, **kwargs): + """ + The data object for a maximum session duration update request. + + :param attributes: Attributes for the maximum session duration update request. + :type attributes: MaxSessionDurationUpdateAttributes + + :param type: Data type of a maximum session duration update. + :type type: MaxSessionDurationType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/max_session_duration_update_request.py b/src/datadog_api_client/v2/model/max_session_duration_update_request.py new file mode 100644 index 0000000000..4d8a6b6490 --- /dev/null +++ b/src/datadog_api_client/v2/model/max_session_duration_update_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.max_session_duration_update_data import MaxSessionDurationUpdateData + + +class MaxSessionDurationUpdateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.max_session_duration_update_data import MaxSessionDurationUpdateData + + return { + "data": (MaxSessionDurationUpdateData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: MaxSessionDurationUpdateData, **kwargs): + """ + A request to update the maximum session duration for an organization. + + :param data: The data object for a maximum session duration update request. + :type data: MaxSessionDurationUpdateData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/network_health_insight.py b/src/datadog_api_client/v2/model/network_health_insight.py new file mode 100644 index 0000000000..2f9a7ca052 --- /dev/null +++ b/src/datadog_api_client/v2/model/network_health_insight.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.network_health_insight_attributes import NetworkHealthInsightAttributes + from datadog_api_client.v2.model.network_health_insights_type import NetworkHealthInsightsType + + +class NetworkHealthInsight(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.network_health_insight_attributes import NetworkHealthInsightAttributes + from datadog_api_client.v2.model.network_health_insights_type import NetworkHealthInsightsType + + return { + "attributes": (NetworkHealthInsightAttributes,), + "id": (str,), + "type": (NetworkHealthInsightsType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: NetworkHealthInsightAttributes, id: str, type: NetworkHealthInsightsType, **kwargs): + """ + A single network health insight describing a service-to-service connectivity issue. + + :param attributes: Detailed attributes of a network health insight. + :type attributes: NetworkHealthInsightAttributes + + :param id: Unique identifier for this network health insight. + :type id: str + + :param type: The resource type for network health insights. Always ``network-health-insights``. + :type type: NetworkHealthInsightsType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/network_health_insight_attributes.py b/src/datadog_api_client/v2/model/network_health_insight_attributes.py new file mode 100644 index 0000000000..8719136fd6 --- /dev/null +++ b/src/datadog_api_client/v2/model/network_health_insight_attributes.py @@ -0,0 +1,208 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.network_health_insight_failure_type import NetworkHealthInsightFailureType + from datadog_api_client.v2.model.network_health_insight_traffic_volume import NetworkHealthInsightTrafficVolume + from datadog_api_client.v2.model.network_health_insight_category import NetworkHealthInsightCategory + + +class NetworkHealthInsightAttributes(ModelNormal): + validations = { + "failure_magnitude": { + "inclusive_minimum": 0, + }, + "failure_rate": { + "inclusive_maximum": 100, + "inclusive_minimum": 0, + }, + "total_requests": { + "inclusive_minimum": 0, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.network_health_insight_failure_type import NetworkHealthInsightFailureType + from datadog_api_client.v2.model.network_health_insight_traffic_volume import NetworkHealthInsightTrafficVolume + from datadog_api_client.v2.model.network_health_insight_category import NetworkHealthInsightCategory + + return { + "account_id": (str,), + "certificate_id": (str,), + "certificate_lifetime_percent": (float,), + "client_region": (str,), + "client_service": (str,), + "days_until_expiration": (int,), + "dns_query": (str,), + "dns_server": (str,), + "domain_name": (str,), + "failure_magnitude": (int,), + "failure_rate": (float,), + "failure_type": (NetworkHealthInsightFailureType,), + "loadbalancer_id": (str,), + "server_region": (str,), + "server_service": (str,), + "total_requests": (int,), + "traffic_volume": (NetworkHealthInsightTrafficVolume,), + "type": (NetworkHealthInsightCategory,), + } + + attribute_map = { + "account_id": "account_id", + "certificate_id": "certificate_id", + "certificate_lifetime_percent": "certificate_lifetime_percent", + "client_region": "client_region", + "client_service": "client_service", + "days_until_expiration": "days_until_expiration", + "dns_query": "dns_query", + "dns_server": "dns_server", + "domain_name": "domain_name", + "failure_magnitude": "failure_magnitude", + "failure_rate": "failure_rate", + "failure_type": "failure_type", + "loadbalancer_id": "loadbalancer_id", + "server_region": "server_region", + "server_service": "server_service", + "total_requests": "total_requests", + "traffic_volume": "traffic_volume", + "type": "type", + } + + def __init__( + self_, + account_id: Union[str, UnsetType] = unset, + certificate_id: Union[str, UnsetType] = unset, + certificate_lifetime_percent: Union[float, UnsetType] = unset, + client_region: Union[str, UnsetType] = unset, + client_service: Union[str, UnsetType] = unset, + days_until_expiration: Union[int, UnsetType] = unset, + dns_query: Union[str, UnsetType] = unset, + dns_server: Union[str, UnsetType] = unset, + domain_name: Union[str, UnsetType] = unset, + failure_magnitude: Union[int, UnsetType] = unset, + failure_rate: Union[float, UnsetType] = unset, + failure_type: Union[NetworkHealthInsightFailureType, UnsetType] = unset, + loadbalancer_id: Union[str, UnsetType] = unset, + server_region: Union[str, UnsetType] = unset, + server_service: Union[str, UnsetType] = unset, + total_requests: Union[int, UnsetType] = unset, + traffic_volume: Union[NetworkHealthInsightTrafficVolume, UnsetType] = unset, + type: Union[NetworkHealthInsightCategory, UnsetType] = unset, + **kwargs, + ): + """ + Detailed attributes of a network health insight. + + :param account_id: AWS account identifier where the certificate is located. Only set for ``tls-cert`` insights. + :type account_id: str, optional + + :param certificate_id: ARN or identifier of the certificate. Only set for ``tls-cert`` insights. + :type certificate_id: str, optional + + :param certificate_lifetime_percent: Percentage of the certificate's validity period that has elapsed, ranging from 0 to 100. + Only set for ``tls-cert`` insights. + :type certificate_lifetime_percent: float, optional + + :param client_region: AWS region where the client is located. Only set for ``tls-cert`` insights. + :type client_region: str, optional + + :param client_service: Name of the service making the request (DNS query or TLS-secured connection). + Set to ``N/A`` when the client service cannot be determined. + :type client_service: str, optional + + :param days_until_expiration: Number of days remaining until the certificate expires. Negative values indicate the + certificate has already expired. Only set for ``tls-cert`` insights. + :type days_until_expiration: int, optional + + :param dns_query: Domain name that was being resolved when the DNS failure occurred. Only set for ``dns`` insights. + :type dns_query: str, optional + + :param dns_server: DNS server that received the failing query. Only set for ``dns`` insights. + :type dns_server: str, optional + + :param domain_name: Domain name covered by the certificate. Only set for ``tls-cert`` insights. + :type domain_name: str, optional + + :param failure_magnitude: Count of failed events observed during the query window. Only set for ``dns`` , ``tcp`` , + and ``security-group`` insights. + :type failure_magnitude: int, optional + + :param failure_rate: Percentage of requests that failed during the query window, ranging from 0 to 100. + Only set for ``dns`` , ``tcp`` , and ``security-group`` insights. + :type failure_rate: float, optional + + :param failure_type: Specific failure type within the insight category. For DNS insights: ``timeout`` , ``nxdomain`` , + ``servfail`` , or ``general_failure``. For TLS certificate insights: ``expired`` or ``expiring_soon``. + For security group insights: ``denied``. + :type failure_type: NetworkHealthInsightFailureType, optional + + :param loadbalancer_id: ARN of the load balancer using the certificate. Only set for ``tls-cert`` insights. + :type loadbalancer_id: str, optional + + :param server_region: AWS region where the server or load balancer is located. Only set for ``tls-cert`` insights. + :type server_region: str, optional + + :param server_service: Name of the target service the client was trying to reach. + :type server_service: str, optional + + :param total_requests: Total number of requests observed during the query window. Provides context for + ``failure_magnitude`` and ``failure_rate``. Only set for ``dns`` , ``tcp`` , and ``security-group`` insights. + :type total_requests: int, optional + + :param traffic_volume: Network traffic volume metrics between the client and server services during the query window. + :type traffic_volume: NetworkHealthInsightTrafficVolume, optional + + :param type: Category of network health insight. Indicates whether the insight relates to a DNS issue ( ``dns`` ), + a TCP issue ( ``tcp`` ), a TLS certificate issue ( ``tls-cert`` ), or a security group denial ( ``security-group`` ). + :type type: NetworkHealthInsightCategory, optional + """ + if account_id is not unset: + kwargs["account_id"] = account_id + if certificate_id is not unset: + kwargs["certificate_id"] = certificate_id + if certificate_lifetime_percent is not unset: + kwargs["certificate_lifetime_percent"] = certificate_lifetime_percent + if client_region is not unset: + kwargs["client_region"] = client_region + if client_service is not unset: + kwargs["client_service"] = client_service + if days_until_expiration is not unset: + kwargs["days_until_expiration"] = days_until_expiration + if dns_query is not unset: + kwargs["dns_query"] = dns_query + if dns_server is not unset: + kwargs["dns_server"] = dns_server + if domain_name is not unset: + kwargs["domain_name"] = domain_name + if failure_magnitude is not unset: + kwargs["failure_magnitude"] = failure_magnitude + if failure_rate is not unset: + kwargs["failure_rate"] = failure_rate + if failure_type is not unset: + kwargs["failure_type"] = failure_type + if loadbalancer_id is not unset: + kwargs["loadbalancer_id"] = loadbalancer_id + if server_region is not unset: + kwargs["server_region"] = server_region + if server_service is not unset: + kwargs["server_service"] = server_service + if total_requests is not unset: + kwargs["total_requests"] = total_requests + if traffic_volume is not unset: + kwargs["traffic_volume"] = traffic_volume + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/network_health_insight_category.py b/src/datadog_api_client/v2/model/network_health_insight_category.py new file mode 100644 index 0000000000..59854f9b80 --- /dev/null +++ b/src/datadog_api_client/v2/model/network_health_insight_category.py @@ -0,0 +1,45 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class NetworkHealthInsightCategory(ModelSimple): + """ + Category of network health insight. Indicates whether the insight relates to a DNS issue (`dns`), + a TCP issue (`tcp`), a TLS certificate issue (`tls-cert`), or a security group denial (`security-group`). + + :param value: Must be one of ["dns", "tcp", "tls-cert", "security-group"]. + :type value: str + """ + + allowed_values = { + "dns", + "tcp", + "tls-cert", + "security-group", + } + DNS: ClassVar["NetworkHealthInsightCategory"] + TCP: ClassVar["NetworkHealthInsightCategory"] + TLS_CERT: ClassVar["NetworkHealthInsightCategory"] + SECURITY_GROUP: ClassVar["NetworkHealthInsightCategory"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +NetworkHealthInsightCategory.DNS = NetworkHealthInsightCategory("dns") +NetworkHealthInsightCategory.TCP = NetworkHealthInsightCategory("tcp") +NetworkHealthInsightCategory.TLS_CERT = NetworkHealthInsightCategory("tls-cert") +NetworkHealthInsightCategory.SECURITY_GROUP = NetworkHealthInsightCategory("security-group") diff --git a/src/datadog_api_client/v2/model/network_health_insight_failure_type.py b/src/datadog_api_client/v2/model/network_health_insight_failure_type.py new file mode 100644 index 0000000000..7ff4b63c19 --- /dev/null +++ b/src/datadog_api_client/v2/model/network_health_insight_failure_type.py @@ -0,0 +1,55 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class NetworkHealthInsightFailureType(ModelSimple): + """ + Specific failure type within the insight category. For DNS insights: `timeout`, `nxdomain`, + `servfail`, or `general_failure`. For TLS certificate insights: `expired` or `expiring_soon`. + For security group insights: `denied`. + + :param value: Must be one of ["timeout", "nxdomain", "servfail", "general_failure", "expired", "expiring_soon", "denied"]. + :type value: str + """ + + allowed_values = { + "timeout", + "nxdomain", + "servfail", + "general_failure", + "expired", + "expiring_soon", + "denied", + } + TIMEOUT: ClassVar["NetworkHealthInsightFailureType"] + NXDOMAIN: ClassVar["NetworkHealthInsightFailureType"] + SERVFAIL: ClassVar["NetworkHealthInsightFailureType"] + GENERAL_FAILURE: ClassVar["NetworkHealthInsightFailureType"] + EXPIRED: ClassVar["NetworkHealthInsightFailureType"] + EXPIRING_SOON: ClassVar["NetworkHealthInsightFailureType"] + DENIED: ClassVar["NetworkHealthInsightFailureType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +NetworkHealthInsightFailureType.TIMEOUT = NetworkHealthInsightFailureType("timeout") +NetworkHealthInsightFailureType.NXDOMAIN = NetworkHealthInsightFailureType("nxdomain") +NetworkHealthInsightFailureType.SERVFAIL = NetworkHealthInsightFailureType("servfail") +NetworkHealthInsightFailureType.GENERAL_FAILURE = NetworkHealthInsightFailureType("general_failure") +NetworkHealthInsightFailureType.EXPIRED = NetworkHealthInsightFailureType("expired") +NetworkHealthInsightFailureType.EXPIRING_SOON = NetworkHealthInsightFailureType("expiring_soon") +NetworkHealthInsightFailureType.DENIED = NetworkHealthInsightFailureType("denied") diff --git a/src/datadog_api_client/v2/model/network_health_insight_traffic_volume.py b/src/datadog_api_client/v2/model/network_health_insight_traffic_volume.py new file mode 100644 index 0000000000..d47299f37c --- /dev/null +++ b/src/datadog_api_client/v2/model/network_health_insight_traffic_volume.py @@ -0,0 +1,56 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class NetworkHealthInsightTrafficVolume(ModelNormal): + @cached_property + def openapi_types(_): + return { + "bytes_read": (int,), + "bytes_written": (int,), + "total_traffic": (int,), + } + + attribute_map = { + "bytes_read": "bytes_read", + "bytes_written": "bytes_written", + "total_traffic": "total_traffic", + } + + def __init__( + self_, + bytes_read: Union[int, UnsetType] = unset, + bytes_written: Union[int, UnsetType] = unset, + total_traffic: Union[int, UnsetType] = unset, + **kwargs, + ): + """ + Network traffic volume metrics between the client and server services during the query window. + + :param bytes_read: Total bytes read from the server to the client during the query window. + :type bytes_read: int, optional + + :param bytes_written: Total bytes written from the client to the server during the query window. + :type bytes_written: int, optional + + :param total_traffic: Sum of bytes written and bytes read across the query window. + :type total_traffic: int, optional + """ + if bytes_read is not unset: + kwargs["bytes_read"] = bytes_read + if bytes_written is not unset: + kwargs["bytes_written"] = bytes_written + if total_traffic is not unset: + kwargs["total_traffic"] = total_traffic + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/network_health_insights_response.py b/src/datadog_api_client/v2/model/network_health_insights_response.py new file mode 100644 index 0000000000..e12c957359 --- /dev/null +++ b/src/datadog_api_client/v2/model/network_health_insights_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.network_health_insight import NetworkHealthInsight + + +class NetworkHealthInsightsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.network_health_insight import NetworkHealthInsight + + return { + "data": ([NetworkHealthInsight],), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: List[NetworkHealthInsight], **kwargs): + """ + Response containing a list of network health insights for the organization. + + :param data: Array of network health insights returned for the query window. + :type data: [NetworkHealthInsight] + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/network_health_insights_type.py b/src/datadog_api_client/v2/model/network_health_insights_type.py new file mode 100644 index 0000000000..b2aaaf1f7e --- /dev/null +++ b/src/datadog_api_client/v2/model/network_health_insights_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class NetworkHealthInsightsType(ModelSimple): + """ + The resource type for network health insights. Always `network-health-insights`. + + :param value: If omitted defaults to "network-health-insights". Must be one of ["network-health-insights"]. + :type value: str + """ + + allowed_values = { + "network-health-insights", + } + NETWORK_HEALTH_INSIGHTS: ClassVar["NetworkHealthInsightsType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +NetworkHealthInsightsType.NETWORK_HEALTH_INSIGHTS = NetworkHealthInsightsType("network-health-insights") diff --git a/src/datadog_api_client/v2/model/notification_rule_preview_notification_status.py b/src/datadog_api_client/v2/model/notification_rule_preview_notification_status.py new file mode 100644 index 0000000000..cbad8f8982 --- /dev/null +++ b/src/datadog_api_client/v2/model/notification_rule_preview_notification_status.py @@ -0,0 +1,41 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class NotificationRulePreviewNotificationStatus(ModelSimple): + """ + The notification status for the given rule type. `SUCCESS` means a matching event was found and the notification was sent successfully. `DEFAULT` means no matching event was found and a default placeholder notification was sent instead. `ERROR` means an error occurred while sending the notification. + + :param value: Must be one of ["SUCCESS", "DEFAULT", "ERROR"]. + :type value: str + """ + + allowed_values = { + "SUCCESS", + "DEFAULT", + "ERROR", + } + SUCCESS: ClassVar["NotificationRulePreviewNotificationStatus"] + DEFAULT: ClassVar["NotificationRulePreviewNotificationStatus"] + ERROR: ClassVar["NotificationRulePreviewNotificationStatus"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +NotificationRulePreviewNotificationStatus.SUCCESS = NotificationRulePreviewNotificationStatus("SUCCESS") +NotificationRulePreviewNotificationStatus.DEFAULT = NotificationRulePreviewNotificationStatus("DEFAULT") +NotificationRulePreviewNotificationStatus.ERROR = NotificationRulePreviewNotificationStatus("ERROR") diff --git a/src/datadog_api_client/v2/model/notification_rule_preview_response.py b/src/datadog_api_client/v2/model/notification_rule_preview_response.py new file mode 100644 index 0000000000..ca3c41d710 --- /dev/null +++ b/src/datadog_api_client/v2/model/notification_rule_preview_response.py @@ -0,0 +1,42 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.notification_rule_preview_response_data import NotificationRulePreviewResponseData + + +class NotificationRulePreviewResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.notification_rule_preview_response_data import ( + NotificationRulePreviewResponseData, + ) + + return { + "data": (NotificationRulePreviewResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: NotificationRulePreviewResponseData, **kwargs): + """ + Response from the notification preview request. + + :param data: The notification preview response data. + :type data: NotificationRulePreviewResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/notification_rule_preview_response_attributes.py b/src/datadog_api_client/v2/model/notification_rule_preview_response_attributes.py new file mode 100644 index 0000000000..55b1c0dc3b --- /dev/null +++ b/src/datadog_api_client/v2/model/notification_rule_preview_response_attributes.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.notification_rule_preview_result import NotificationRulePreviewResult + + +class NotificationRulePreviewResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.notification_rule_preview_result import NotificationRulePreviewResult + + return { + "preview_results": ([NotificationRulePreviewResult],), + } + + attribute_map = { + "preview_results": "preview_results", + } + + def __init__(self_, preview_results: List[NotificationRulePreviewResult], **kwargs): + """ + Attributes of the notification preview response. + + :param preview_results: List of preview results for each rule type matched by the notification rule. + :type preview_results: [NotificationRulePreviewResult] + """ + super().__init__(kwargs) + + self_.preview_results = preview_results diff --git a/src/datadog_api_client/v2/model/notification_rule_preview_response_data.py b/src/datadog_api_client/v2/model/notification_rule_preview_response_data.py new file mode 100644 index 0000000000..2709f215c7 --- /dev/null +++ b/src/datadog_api_client/v2/model/notification_rule_preview_response_data.py @@ -0,0 +1,69 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.notification_rule_preview_response_attributes import ( + NotificationRulePreviewResponseAttributes, + ) + from datadog_api_client.v2.model.notification_rule_preview_response_type import NotificationRulePreviewResponseType + + +class NotificationRulePreviewResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.notification_rule_preview_response_attributes import ( + NotificationRulePreviewResponseAttributes, + ) + from datadog_api_client.v2.model.notification_rule_preview_response_type import ( + NotificationRulePreviewResponseType, + ) + + return { + "attributes": (NotificationRulePreviewResponseAttributes,), + "id": (str,), + "type": (NotificationRulePreviewResponseType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: NotificationRulePreviewResponseAttributes, + type: NotificationRulePreviewResponseType, + id: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + The notification preview response data. + + :param attributes: Attributes of the notification preview response. + :type attributes: NotificationRulePreviewResponseAttributes + + :param id: The ID of the notification preview response. + :type id: str, optional + + :param type: The type of the notification preview response. + :type type: NotificationRulePreviewResponseType + """ + if id is not unset: + kwargs["id"] = id + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/notification_rule_preview_response_type.py b/src/datadog_api_client/v2/model/notification_rule_preview_response_type.py new file mode 100644 index 0000000000..1f2d07684a --- /dev/null +++ b/src/datadog_api_client/v2/model/notification_rule_preview_response_type.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class NotificationRulePreviewResponseType(ModelSimple): + """ + The type of the notification preview response. + + :param value: If omitted defaults to "notification_preview_response". Must be one of ["notification_preview_response"]. + :type value: str + """ + + allowed_values = { + "notification_preview_response", + } + NOTIFICATION_PREVIEW_RESPONSE: ClassVar["NotificationRulePreviewResponseType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +NotificationRulePreviewResponseType.NOTIFICATION_PREVIEW_RESPONSE = NotificationRulePreviewResponseType( + "notification_preview_response" +) diff --git a/src/datadog_api_client/v2/model/notification_rule_preview_result.py b/src/datadog_api_client/v2/model/notification_rule_preview_result.py new file mode 100644 index 0000000000..8cd5ae1051 --- /dev/null +++ b/src/datadog_api_client/v2/model/notification_rule_preview_result.py @@ -0,0 +1,59 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.notification_rule_preview_notification_status import ( + NotificationRulePreviewNotificationStatus, + ) + from datadog_api_client.v2.model.rule_types_items import RuleTypesItems + + +class NotificationRulePreviewResult(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.notification_rule_preview_notification_status import ( + NotificationRulePreviewNotificationStatus, + ) + from datadog_api_client.v2.model.rule_types_items import RuleTypesItems + + return { + "notification_status": (NotificationRulePreviewNotificationStatus,), + "rule_type": (RuleTypesItems,), + } + + attribute_map = { + "notification_status": "notification_status", + "rule_type": "rule_type", + } + + def __init__( + self_, notification_status: NotificationRulePreviewNotificationStatus, rule_type: RuleTypesItems, **kwargs + ): + """ + The preview result for a single rule type. + + :param notification_status: The notification status for the given rule type. ``SUCCESS`` means a matching event was found and the notification was sent successfully. ``DEFAULT`` means no matching event was found and a default placeholder notification was sent instead. ``ERROR`` means an error occurred while sending the notification. + :type notification_status: NotificationRulePreviewNotificationStatus + + :param rule_type: Security rule type which can be used in security rules. + Signal-based notification rules can filter signals based on rule types application_security, log_detection, + workload_security, signal_correlation, cloud_configuration and infrastructure_configuration. + Vulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability, + application_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, + api_security, host_vulnerability, iac_misconfiguration, sast_vulnerability and secret_vulnerability. + :type rule_type: RuleTypesItems + """ + super().__init__(kwargs) + + self_.notification_status = notification_status + self_.rule_type = rule_type diff --git a/src/datadog_api_client/v2/model/notification_rule_routing.py b/src/datadog_api_client/v2/model/notification_rule_routing.py new file mode 100644 index 0000000000..cb35b9b0a5 --- /dev/null +++ b/src/datadog_api_client/v2/model/notification_rule_routing.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.notification_rule_routing_mode import NotificationRuleRoutingMode + + +class NotificationRuleRouting(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.notification_rule_routing_mode import NotificationRuleRoutingMode + + return { + "mode": (NotificationRuleRoutingMode,), + } + + attribute_map = { + "mode": "mode", + } + + def __init__(self_, mode: NotificationRuleRoutingMode, **kwargs): + """ + Routing configuration for the notification rule. + + :param mode: The routing mode for the notification rule. ``manual`` sends notifications to the configured targets. + :type mode: NotificationRuleRoutingMode + """ + super().__init__(kwargs) + + self_.mode = mode diff --git a/src/datadog_api_client/v2/model/notification_rule_routing_mode.py b/src/datadog_api_client/v2/model/notification_rule_routing_mode.py new file mode 100644 index 0000000000..53cdf98acc --- /dev/null +++ b/src/datadog_api_client/v2/model/notification_rule_routing_mode.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class NotificationRuleRoutingMode(ModelSimple): + """ + The routing mode for the notification rule. `manual` sends notifications to the configured targets. + + :param value: If omitted defaults to "manual". Must be one of ["manual"]. + :type value: str + """ + + allowed_values = { + "manual", + } + MANUAL: ClassVar["NotificationRuleRoutingMode"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +NotificationRuleRoutingMode.MANUAL = NotificationRuleRoutingMode("manual") diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filters_response.py b/src/datadog_api_client/v2/model/notification_rules_list_response.py similarity index 52% rename from src/datadog_api_client/v2/model/rum_hardcoded_retention_filters_response.py rename to src/datadog_api_client/v2/model/notification_rules_list_response.py index 3359bd3434..e3168dd5c6 100644 --- a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filters_response.py +++ b/src/datadog_api_client/v2/model/notification_rules_list_response.py @@ -14,28 +14,28 @@ if TYPE_CHECKING: - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_data import RumHardcodedRetentionFilterData + from datadog_api_client.v2.model.notification_rule import NotificationRule -class RumHardcodedRetentionFiltersResponse(ModelNormal): +class NotificationRulesListResponse(ModelNormal): @cached_property def openapi_types(_): - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_data import RumHardcodedRetentionFilterData + from datadog_api_client.v2.model.notification_rule import NotificationRule return { - "data": ([RumHardcodedRetentionFilterData],), + "data": ([NotificationRule],), } attribute_map = { "data": "data", } - def __init__(self_, data: Union[List[RumHardcodedRetentionFilterData], UnsetType] = unset, **kwargs): + def __init__(self_, data: Union[List[NotificationRule], UnsetType] = unset, **kwargs): """ - All hardcoded retention filters for a RUM application. + The list of notification rules. - :param data: A list of hardcoded retention filters. - :type data: [RumHardcodedRetentionFilterData], optional + :param data: + :type data: [NotificationRule], optional """ if data is not unset: kwargs["data"] = data diff --git a/src/datadog_api_client/v2/model/observability_pipeline_config_processor_group.py b/src/datadog_api_client/v2/model/observability_pipeline_config_processor_group.py index 4f47b4b242..d2cad80203 100644 --- a/src/datadog_api_client/v2/model/observability_pipeline_config_processor_group.py +++ b/src/datadog_api_client/v2/model/observability_pipeline_config_processor_group.py @@ -38,6 +38,9 @@ from datadog_api_client.v2.model.observability_pipeline_generate_metrics_processor import ( ObservabilityPipelineGenerateMetricsProcessor, ) + from datadog_api_client.v2.model.observability_pipeline_generate_metrics_v2_processor import ( + ObservabilityPipelineGenerateMetricsV2Processor, + ) from datadog_api_client.v2.model.observability_pipeline_ocsf_mapper_processor import ( ObservabilityPipelineOcsfMapperProcessor, ) @@ -128,6 +131,7 @@ def __init__( ObservabilityPipelineDedupeProcessor, ObservabilityPipelineEnrichmentTableProcessor, ObservabilityPipelineGenerateMetricsProcessor, + ObservabilityPipelineGenerateMetricsV2Processor, ObservabilityPipelineOcsfMapperProcessor, ObservabilityPipelineParseGrokProcessor, ObservabilityPipelineParseJSONProcessor, diff --git a/src/datadog_api_client/v2/model/observability_pipeline_config_processor_item.py b/src/datadog_api_client/v2/model/observability_pipeline_config_processor_item.py index 50f54e3a3f..e269334825 100644 --- a/src/datadog_api_client/v2/model/observability_pipeline_config_processor_item.py +++ b/src/datadog_api_client/v2/model/observability_pipeline_config_processor_item.py @@ -203,6 +203,9 @@ def _composed_schemas(_): from datadog_api_client.v2.model.observability_pipeline_generate_metrics_processor import ( ObservabilityPipelineGenerateMetricsProcessor, ) + from datadog_api_client.v2.model.observability_pipeline_generate_metrics_v2_processor import ( + ObservabilityPipelineGenerateMetricsV2Processor, + ) from datadog_api_client.v2.model.observability_pipeline_ocsf_mapper_processor import ( ObservabilityPipelineOcsfMapperProcessor, ) @@ -266,6 +269,7 @@ def _composed_schemas(_): ObservabilityPipelineDedupeProcessor, ObservabilityPipelineEnrichmentTableProcessor, ObservabilityPipelineGenerateMetricsProcessor, + ObservabilityPipelineGenerateMetricsV2Processor, ObservabilityPipelineOcsfMapperProcessor, ObservabilityPipelineParseGrokProcessor, ObservabilityPipelineParseJSONProcessor, diff --git a/src/datadog_api_client/v2/model/observability_pipeline_generate_metrics_v2_processor.py b/src/datadog_api_client/v2/model/observability_pipeline_generate_metrics_v2_processor.py new file mode 100644 index 0000000000..bb077fec1a --- /dev/null +++ b/src/datadog_api_client/v2/model/observability_pipeline_generate_metrics_v2_processor.py @@ -0,0 +1,96 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.observability_pipeline_generated_metric import ObservabilityPipelineGeneratedMetric + from datadog_api_client.v2.model.observability_pipeline_generate_metrics_v2_processor_type import ( + ObservabilityPipelineGenerateMetricsV2ProcessorType, + ) + + +class ObservabilityPipelineGenerateMetricsV2Processor(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.observability_pipeline_generated_metric import ( + ObservabilityPipelineGeneratedMetric, + ) + from datadog_api_client.v2.model.observability_pipeline_generate_metrics_v2_processor_type import ( + ObservabilityPipelineGenerateMetricsV2ProcessorType, + ) + + return { + "display_name": (str,), + "enabled": (bool,), + "id": (str,), + "include": (str,), + "metrics": ([ObservabilityPipelineGeneratedMetric],), + "type": (ObservabilityPipelineGenerateMetricsV2ProcessorType,), + } + + attribute_map = { + "display_name": "display_name", + "enabled": "enabled", + "id": "id", + "include": "include", + "metrics": "metrics", + "type": "type", + } + + def __init__( + self_, + enabled: bool, + id: str, + type: ObservabilityPipelineGenerateMetricsV2ProcessorType, + display_name: Union[str, UnsetType] = unset, + include: Union[str, UnsetType] = unset, + metrics: Union[List[ObservabilityPipelineGeneratedMetric], UnsetType] = unset, + **kwargs, + ): + """ + The ``generate_metrics`` processor creates custom metrics from logs. + Metrics can be counters, gauges, or distributions and optionally grouped by log fields. + The generated metrics must be routed to a metrics destination using the input ``.metrics``. + + **Supported pipeline types:** logs + + :param display_name: The display name for a component. + :type display_name: str, optional + + :param enabled: Indicates whether the processor is enabled. + :type enabled: bool + + :param id: The unique identifier for this component. Used to reference this component in other parts of the pipeline. + :type id: str + + :param include: A Datadog search query used to determine which logs this processor targets. + :type include: str, optional + + :param metrics: Configuration for generating individual metrics. + :type metrics: [ObservabilityPipelineGeneratedMetric], optional + + :param type: The processor type. Always ``generate_metrics``. + :type type: ObservabilityPipelineGenerateMetricsV2ProcessorType + """ + if display_name is not unset: + kwargs["display_name"] = display_name + if include is not unset: + kwargs["include"] = include + if metrics is not unset: + kwargs["metrics"] = metrics + super().__init__(kwargs) + + self_.enabled = enabled + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/observability_pipeline_generate_metrics_v2_processor_type.py b/src/datadog_api_client/v2/model/observability_pipeline_generate_metrics_v2_processor_type.py new file mode 100644 index 0000000000..a7939ab711 --- /dev/null +++ b/src/datadog_api_client/v2/model/observability_pipeline_generate_metrics_v2_processor_type.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ObservabilityPipelineGenerateMetricsV2ProcessorType(ModelSimple): + """ + The processor type. Always `generate_metrics`. + + :param value: If omitted defaults to "generate_metrics". Must be one of ["generate_metrics"]. + :type value: str + """ + + allowed_values = { + "generate_metrics", + } + GENERATE_METRICS: ClassVar["ObservabilityPipelineGenerateMetricsV2ProcessorType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ObservabilityPipelineGenerateMetricsV2ProcessorType.GENERATE_METRICS = ( + ObservabilityPipelineGenerateMetricsV2ProcessorType("generate_metrics") +) diff --git a/src/datadog_api_client/v2/model/ownership_evidence_attributes.py b/src/datadog_api_client/v2/model/ownership_evidence_attributes.py new file mode 100644 index 0000000000..1e61a6cb12 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_evidence_attributes.py @@ -0,0 +1,41 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_evidence_version import OwnershipEvidenceVersion + + +class OwnershipEvidenceAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_evidence_version import OwnershipEvidenceVersion + + return { + "evidence_versions": ([OwnershipEvidenceVersion],), + } + + attribute_map = { + "evidence_versions": "evidence_versions", + } + + def __init__(self_, evidence_versions: Union[List[OwnershipEvidenceVersion], none_type], **kwargs): + """ + The attributes of an ownership evidence response. + + :param evidence_versions: The list of evidence versions associated with an inference. + :type evidence_versions: [OwnershipEvidenceVersion], none_type + """ + super().__init__(kwargs) + + self_.evidence_versions = evidence_versions diff --git a/src/datadog_api_client/v2/model/ownership_evidence_data.py b/src/datadog_api_client/v2/model/ownership_evidence_data.py new file mode 100644 index 0000000000..3659323cce --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_evidence_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_evidence_attributes import OwnershipEvidenceAttributes + from datadog_api_client.v2.model.ownership_evidence_type import OwnershipEvidenceType + + +class OwnershipEvidenceData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_evidence_attributes import OwnershipEvidenceAttributes + from datadog_api_client.v2.model.ownership_evidence_type import OwnershipEvidenceType + + return { + "attributes": (OwnershipEvidenceAttributes,), + "id": (str,), + "type": (OwnershipEvidenceType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: OwnershipEvidenceAttributes, id: str, type: OwnershipEvidenceType, **kwargs): + """ + The data wrapper for an ownership evidence response. + + :param attributes: The attributes of an ownership evidence response. + :type attributes: OwnershipEvidenceAttributes + + :param id: The identifier of the resource the evidence applies to. + :type id: str + + :param type: The type of the ownership evidence resource. The value should always be ``ownership_evidence``. + :type type: OwnershipEvidenceType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/ownership_evidence_response.py b/src/datadog_api_client/v2/model/ownership_evidence_response.py new file mode 100644 index 0000000000..9333c23823 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_evidence_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_evidence_data import OwnershipEvidenceData + + +class OwnershipEvidenceResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_evidence_data import OwnershipEvidenceData + + return { + "data": (OwnershipEvidenceData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: OwnershipEvidenceData, **kwargs): + """ + The response returned when retrieving the evidence backing an ownership inference for an owner type. + + :param data: The data wrapper for an ownership evidence response. + :type data: OwnershipEvidenceData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/ownership_evidence_type.py b/src/datadog_api_client/v2/model/ownership_evidence_type.py new file mode 100644 index 0000000000..f14ae88e52 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_evidence_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class OwnershipEvidenceType(ModelSimple): + """ + The type of the ownership evidence resource. The value should always be `ownership_evidence`. + + :param value: If omitted defaults to "ownership_evidence". Must be one of ["ownership_evidence"]. + :type value: str + """ + + allowed_values = { + "ownership_evidence", + } + OWNERSHIP_EVIDENCE: ClassVar["OwnershipEvidenceType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +OwnershipEvidenceType.OWNERSHIP_EVIDENCE = OwnershipEvidenceType("ownership_evidence") diff --git a/src/datadog_api_client/v2/model/fleet_cluster_node_count_by_status.py b/src/datadog_api_client/v2/model/ownership_evidence_version.py similarity index 68% rename from src/datadog_api_client/v2/model/fleet_cluster_node_count_by_status.py rename to src/datadog_api_client/v2/model/ownership_evidence_version.py index f236d153d3..76b93a4157 100644 --- a/src/datadog_api_client/v2/model/fleet_cluster_node_count_by_status.py +++ b/src/datadog_api_client/v2/model/ownership_evidence_version.py @@ -6,17 +6,12 @@ from datadog_api_client.model_utils import ( ModelNormal, - cached_property, ) -class FleetClusterNodeCountByStatus(ModelNormal): - @cached_property - def additional_properties_type(_): - return (int,) - +class OwnershipEvidenceVersion(ModelNormal): def __init__(self_, **kwargs): """ - Node counts grouped by status. + A single evidence version entry describing how an inference was produced. """ super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/ownership_feedback_action.py b/src/datadog_api_client/v2/model/ownership_feedback_action.py new file mode 100644 index 0000000000..87143d4de1 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_feedback_action.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class OwnershipFeedbackAction(ModelSimple): + """ + The feedback action to apply to an inference. + + :param value: Must be one of ["confirm", "reject", "correct", "persist"]. + :type value: str + """ + + allowed_values = { + "confirm", + "reject", + "correct", + "persist", + } + CONFIRM: ClassVar["OwnershipFeedbackAction"] + REJECT: ClassVar["OwnershipFeedbackAction"] + CORRECT: ClassVar["OwnershipFeedbackAction"] + PERSIST: ClassVar["OwnershipFeedbackAction"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +OwnershipFeedbackAction.CONFIRM = OwnershipFeedbackAction("confirm") +OwnershipFeedbackAction.REJECT = OwnershipFeedbackAction("reject") +OwnershipFeedbackAction.CORRECT = OwnershipFeedbackAction("correct") +OwnershipFeedbackAction.PERSIST = OwnershipFeedbackAction("persist") diff --git a/src/datadog_api_client/v2/model/ownership_feedback_request.py b/src/datadog_api_client/v2/model/ownership_feedback_request.py new file mode 100644 index 0000000000..950416aaf9 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_feedback_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_feedback_request_data import OwnershipFeedbackRequestData + + +class OwnershipFeedbackRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_feedback_request_data import OwnershipFeedbackRequestData + + return { + "data": (OwnershipFeedbackRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: OwnershipFeedbackRequestData, **kwargs): + """ + The request body for submitting ownership feedback. + + :param data: The data wrapper for an ownership feedback request. + :type data: OwnershipFeedbackRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/ownership_feedback_request_attributes.py b/src/datadog_api_client/v2/model/ownership_feedback_request_attributes.py new file mode 100644 index 0000000000..46888507e0 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_feedback_request_attributes.py @@ -0,0 +1,92 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_feedback_action import OwnershipFeedbackAction + + +class OwnershipFeedbackRequestAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_feedback_action import OwnershipFeedbackAction + + return { + "action": (OwnershipFeedbackAction,), + "actor_handle": (str,), + "actor_type": (str,), + "corrected_owner_handle": (str, none_type), + "corrected_owner_type": (str, none_type), + "inference_checksum": (str,), + "reason": (str, none_type), + } + + attribute_map = { + "action": "action", + "actor_handle": "actor_handle", + "actor_type": "actor_type", + "corrected_owner_handle": "corrected_owner_handle", + "corrected_owner_type": "corrected_owner_type", + "inference_checksum": "inference_checksum", + "reason": "reason", + } + + def __init__( + self_, + action: OwnershipFeedbackAction, + actor_handle: str, + actor_type: str, + inference_checksum: str, + corrected_owner_handle: Union[str, none_type, UnsetType] = unset, + corrected_owner_type: Union[str, none_type, UnsetType] = unset, + reason: Union[str, none_type, UnsetType] = unset, + **kwargs, + ): + """ + The attributes of an ownership feedback request. + + :param action: The feedback action to apply to an inference. + :type action: OwnershipFeedbackAction + + :param actor_handle: The handle of the actor submitting the feedback. + :type actor_handle: str + + :param actor_type: The type of actor submitting the feedback, for example ``user`` or ``service``. + :type actor_type: str + + :param corrected_owner_handle: The corrected owner handle. Required when ``action`` is ``correct``. + :type corrected_owner_handle: str, none_type, optional + + :param corrected_owner_type: The corrected owner type. Required when ``action`` is ``correct``. + :type corrected_owner_type: str, none_type, optional + + :param inference_checksum: The checksum of the inference being acted upon. Must match the current inference checksum or the request returns a conflict. + :type inference_checksum: str + + :param reason: An optional free-form reason explaining the feedback. + :type reason: str, none_type, optional + """ + if corrected_owner_handle is not unset: + kwargs["corrected_owner_handle"] = corrected_owner_handle + if corrected_owner_type is not unset: + kwargs["corrected_owner_type"] = corrected_owner_type + if reason is not unset: + kwargs["reason"] = reason + super().__init__(kwargs) + + self_.action = action + self_.actor_handle = actor_handle + self_.actor_type = actor_type + self_.inference_checksum = inference_checksum diff --git a/src/datadog_api_client/v2/model/ownership_feedback_request_data.py b/src/datadog_api_client/v2/model/ownership_feedback_request_data.py new file mode 100644 index 0000000000..507b60c10a --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_feedback_request_data.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_feedback_request_attributes import OwnershipFeedbackRequestAttributes + from datadog_api_client.v2.model.ownership_feedback_type import OwnershipFeedbackType + + +class OwnershipFeedbackRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_feedback_request_attributes import OwnershipFeedbackRequestAttributes + from datadog_api_client.v2.model.ownership_feedback_type import OwnershipFeedbackType + + return { + "attributes": (OwnershipFeedbackRequestAttributes,), + "type": (OwnershipFeedbackType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: OwnershipFeedbackRequestAttributes, type: OwnershipFeedbackType, **kwargs): + """ + The data wrapper for an ownership feedback request. + + :param attributes: The attributes of an ownership feedback request. + :type attributes: OwnershipFeedbackRequestAttributes + + :param type: The type of the ownership feedback request resource. The value should always be ``ownership_feedback``. + :type type: OwnershipFeedbackType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/ownership_feedback_response.py b/src/datadog_api_client/v2/model/ownership_feedback_response.py new file mode 100644 index 0000000000..ba58388775 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_feedback_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_feedback_result_data import OwnershipFeedbackResultData + + +class OwnershipFeedbackResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_feedback_result_data import OwnershipFeedbackResultData + + return { + "data": (OwnershipFeedbackResultData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: OwnershipFeedbackResultData, **kwargs): + """ + The response returned after applying ownership feedback to an inference. + + :param data: The data wrapper for an ownership feedback result response. + :type data: OwnershipFeedbackResultData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/ownership_feedback_result_attributes.py b/src/datadog_api_client/v2/model/ownership_feedback_result_attributes.py new file mode 100644 index 0000000000..e14edf5f36 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_feedback_result_attributes.py @@ -0,0 +1,95 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_feedback_action import OwnershipFeedbackAction + from datadog_api_client.v2.model.ownership_inference_status import OwnershipInferenceStatus + from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType + + +class OwnershipFeedbackResultAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_feedback_action import OwnershipFeedbackAction + from datadog_api_client.v2.model.ownership_inference_status import OwnershipInferenceStatus + from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType + + return { + "action": (OwnershipFeedbackAction,), + "checksum": (str,), + "new_status": (OwnershipInferenceStatus,), + "owner_type": (OwnershipOwnerType,), + "previous_status": (OwnershipInferenceStatus,), + "primary_contact_ref": (str, none_type), + "updated_at": (datetime,), + } + + attribute_map = { + "action": "action", + "checksum": "checksum", + "new_status": "new_status", + "owner_type": "owner_type", + "previous_status": "previous_status", + "primary_contact_ref": "primary_contact_ref", + "updated_at": "updated_at", + } + + def __init__( + self_, + action: OwnershipFeedbackAction, + checksum: str, + new_status: OwnershipInferenceStatus, + owner_type: OwnershipOwnerType, + previous_status: OwnershipInferenceStatus, + updated_at: datetime, + primary_contact_ref: Union[str, none_type, UnsetType] = unset, + **kwargs, + ): + """ + The attributes of an ownership feedback result. + + :param action: The feedback action to apply to an inference. + :type action: OwnershipFeedbackAction + + :param checksum: The checksum of the inference after the feedback was applied. + :type checksum: str + + :param new_status: The lifecycle status of an ownership inference. + :type new_status: OwnershipInferenceStatus + + :param owner_type: The owner type for an ownership inference. + :type owner_type: OwnershipOwnerType + + :param previous_status: The lifecycle status of an ownership inference. + :type previous_status: OwnershipInferenceStatus + + :param primary_contact_ref: The primary contact reference for the inferred owner after the feedback was applied, formatted as ``ref:handle/``. + :type primary_contact_ref: str, none_type, optional + + :param updated_at: The time when the inference was updated by the feedback. + :type updated_at: datetime + """ + if primary_contact_ref is not unset: + kwargs["primary_contact_ref"] = primary_contact_ref + super().__init__(kwargs) + + self_.action = action + self_.checksum = checksum + self_.new_status = new_status + self_.owner_type = owner_type + self_.previous_status = previous_status + self_.updated_at = updated_at diff --git a/src/datadog_api_client/v2/model/ownership_feedback_result_data.py b/src/datadog_api_client/v2/model/ownership_feedback_result_data.py new file mode 100644 index 0000000000..ea39b46a75 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_feedback_result_data.py @@ -0,0 +1,56 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_feedback_result_attributes import OwnershipFeedbackResultAttributes + from datadog_api_client.v2.model.ownership_feedback_result_type import OwnershipFeedbackResultType + + +class OwnershipFeedbackResultData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_feedback_result_attributes import OwnershipFeedbackResultAttributes + from datadog_api_client.v2.model.ownership_feedback_result_type import OwnershipFeedbackResultType + + return { + "attributes": (OwnershipFeedbackResultAttributes,), + "id": (str,), + "type": (OwnershipFeedbackResultType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, attributes: OwnershipFeedbackResultAttributes, id: str, type: OwnershipFeedbackResultType, **kwargs + ): + """ + The data wrapper for an ownership feedback result response. + + :param attributes: The attributes of an ownership feedback result. + :type attributes: OwnershipFeedbackResultAttributes + + :param id: The identifier of the resource that the feedback was applied to. + :type id: str + + :param type: The type of the ownership feedback result resource. The value should always be ``ownership_feedback_result``. + :type type: OwnershipFeedbackResultType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/ownership_feedback_result_type.py b/src/datadog_api_client/v2/model/ownership_feedback_result_type.py new file mode 100644 index 0000000000..9879cda507 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_feedback_result_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class OwnershipFeedbackResultType(ModelSimple): + """ + The type of the ownership feedback result resource. The value should always be `ownership_feedback_result`. + + :param value: If omitted defaults to "ownership_feedback_result". Must be one of ["ownership_feedback_result"]. + :type value: str + """ + + allowed_values = { + "ownership_feedback_result", + } + OWNERSHIP_FEEDBACK_RESULT: ClassVar["OwnershipFeedbackResultType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +OwnershipFeedbackResultType.OWNERSHIP_FEEDBACK_RESULT = OwnershipFeedbackResultType("ownership_feedback_result") diff --git a/src/datadog_api_client/v2/model/ownership_feedback_type.py b/src/datadog_api_client/v2/model/ownership_feedback_type.py new file mode 100644 index 0000000000..9cf003955b --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_feedback_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class OwnershipFeedbackType(ModelSimple): + """ + The type of the ownership feedback request resource. The value should always be `ownership_feedback`. + + :param value: If omitted defaults to "ownership_feedback". Must be one of ["ownership_feedback"]. + :type value: str + """ + + allowed_values = { + "ownership_feedback", + } + OWNERSHIP_FEEDBACK: ClassVar["OwnershipFeedbackType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +OwnershipFeedbackType.OWNERSHIP_FEEDBACK = OwnershipFeedbackType("ownership_feedback") diff --git a/src/datadog_api_client/v2/model/ownership_history_attributes.py b/src/datadog_api_client/v2/model/ownership_history_attributes.py new file mode 100644 index 0000000000..95c867b778 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_history_attributes.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_history_item import OwnershipHistoryItem + from datadog_api_client.v2.model.ownership_history_pagination import OwnershipHistoryPagination + + +class OwnershipHistoryAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_history_item import OwnershipHistoryItem + from datadog_api_client.v2.model.ownership_history_pagination import OwnershipHistoryPagination + + return { + "items": ([OwnershipHistoryItem],), + "pagination": (OwnershipHistoryPagination,), + } + + attribute_map = { + "items": "items", + "pagination": "pagination", + } + + def __init__(self_, items: List[OwnershipHistoryItem], pagination: OwnershipHistoryPagination, **kwargs): + """ + The attributes of an ownership history response. + + :param items: The list of history entries returned for this page. + :type items: [OwnershipHistoryItem] + + :param pagination: Cursor-based pagination metadata for the history response. + :type pagination: OwnershipHistoryPagination + """ + super().__init__(kwargs) + + self_.items = items + self_.pagination = pagination diff --git a/src/datadog_api_client/v2/model/ownership_history_data.py b/src/datadog_api_client/v2/model/ownership_history_data.py new file mode 100644 index 0000000000..789c0a9021 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_history_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_history_attributes import OwnershipHistoryAttributes + from datadog_api_client.v2.model.ownership_history_type import OwnershipHistoryType + + +class OwnershipHistoryData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_history_attributes import OwnershipHistoryAttributes + from datadog_api_client.v2.model.ownership_history_type import OwnershipHistoryType + + return { + "attributes": (OwnershipHistoryAttributes,), + "id": (str,), + "type": (OwnershipHistoryType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: OwnershipHistoryAttributes, id: str, type: OwnershipHistoryType, **kwargs): + """ + The data wrapper for an ownership history response. + + :param attributes: The attributes of an ownership history response. + :type attributes: OwnershipHistoryAttributes + + :param id: The resource identifier for which history is returned. + :type id: str + + :param type: The type of the ownership history resource. The value should always be ``ownership_history``. + :type type: OwnershipHistoryType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/ownership_history_item.py b/src/datadog_api_client/v2/model/ownership_history_item.py new file mode 100644 index 0000000000..255a5734ee --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_history_item.py @@ -0,0 +1,149 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_evidence_version import OwnershipEvidenceVersion + from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType + from datadog_api_client.v2.model.ownership_inference_source import OwnershipInferenceSource + from datadog_api_client.v2.model.ownership_inference_status import OwnershipInferenceStatus + + +class OwnershipHistoryItem(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_evidence_version import OwnershipEvidenceVersion + from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType + from datadog_api_client.v2.model.ownership_inference_source import OwnershipInferenceSource + from datadog_api_client.v2.model.ownership_inference_status import OwnershipInferenceStatus + + return { + "checksum": (str,), + "confidence": (str,), + "created_at": (datetime,), + "evidence_versions": ([OwnershipEvidenceVersion],), + "explanation": (str,), + "failed_at": (datetime, none_type), + "failure_reason": (str, none_type), + "id": (int,), + "owner_type": (OwnershipOwnerType,), + "primary_contact_ref": (str, none_type), + "resource_id": (str,), + "retry_schedule": (datetime, none_type), + "sources": ([OwnershipInferenceSource],), + "status": (OwnershipInferenceStatus,), + } + + attribute_map = { + "checksum": "checksum", + "confidence": "confidence", + "created_at": "created_at", + "evidence_versions": "evidence_versions", + "explanation": "explanation", + "failed_at": "failed_at", + "failure_reason": "failure_reason", + "id": "id", + "owner_type": "owner_type", + "primary_contact_ref": "primary_contact_ref", + "resource_id": "resource_id", + "retry_schedule": "retry_schedule", + "sources": "sources", + "status": "status", + } + + def __init__( + self_, + checksum: str, + confidence: str, + created_at: datetime, + evidence_versions: Union[List[OwnershipEvidenceVersion], none_type], + explanation: str, + id: int, + owner_type: OwnershipOwnerType, + resource_id: str, + sources: List[OwnershipInferenceSource], + status: OwnershipInferenceStatus, + failed_at: Union[datetime, none_type, UnsetType] = unset, + failure_reason: Union[str, none_type, UnsetType] = unset, + primary_contact_ref: Union[str, none_type, UnsetType] = unset, + retry_schedule: Union[datetime, none_type, UnsetType] = unset, + **kwargs, + ): + """ + A single ownership inference history entry. + + :param checksum: A checksum identifying the state of the inference at this point in time. + :type checksum: str + + :param confidence: The confidence score of the inference, expressed as a numeric string with up to four decimal places. + :type confidence: str + + :param created_at: The time this history entry was created. + :type created_at: datetime + + :param evidence_versions: The list of evidence versions associated with an inference. + :type evidence_versions: [OwnershipEvidenceVersion], none_type + + :param explanation: A human-readable explanation of how the inference was produced. + :type explanation: str + + :param failed_at: The time when this inference failed, if applicable. + :type failed_at: datetime, none_type, optional + + :param failure_reason: The reason why this inference failed, if applicable. + :type failure_reason: str, none_type, optional + + :param id: The unique identifier of the history entry. + :type id: int + + :param owner_type: The owner type for an ownership inference. + :type owner_type: OwnershipOwnerType + + :param primary_contact_ref: The primary contact reference for the inferred owner, formatted as ``ref:handle/``. + :type primary_contact_ref: str, none_type, optional + + :param resource_id: The identifier of the resource that the inference applies to. + :type resource_id: str + + :param retry_schedule: The scheduled retry time for a failed inference, if applicable. + :type retry_schedule: datetime, none_type, optional + + :param sources: The list of sources backing an ownership inference. Empty when the inference status is not whitelisted to expose sources. + :type sources: [OwnershipInferenceSource] + + :param status: The lifecycle status of an ownership inference. + :type status: OwnershipInferenceStatus + """ + if failed_at is not unset: + kwargs["failed_at"] = failed_at + if failure_reason is not unset: + kwargs["failure_reason"] = failure_reason + if primary_contact_ref is not unset: + kwargs["primary_contact_ref"] = primary_contact_ref + if retry_schedule is not unset: + kwargs["retry_schedule"] = retry_schedule + super().__init__(kwargs) + + self_.checksum = checksum + self_.confidence = confidence + self_.created_at = created_at + self_.evidence_versions = evidence_versions + self_.explanation = explanation + self_.id = id + self_.owner_type = owner_type + self_.resource_id = resource_id + self_.sources = sources + self_.status = status diff --git a/src/datadog_api_client/v2/model/ownership_history_pagination.py b/src/datadog_api_client/v2/model/ownership_history_pagination.py new file mode 100644 index 0000000000..033a6da289 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_history_pagination.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, + unset, + UnsetType, +) + + +class OwnershipHistoryPagination(ModelNormal): + @cached_property + def openapi_types(_): + return { + "has_more": (bool,), + "next_cursor": (str, none_type), + } + + attribute_map = { + "has_more": "has_more", + "next_cursor": "next_cursor", + } + + def __init__(self_, has_more: bool, next_cursor: Union[str, none_type, UnsetType] = unset, **kwargs): + """ + Cursor-based pagination metadata for the history response. + + :param has_more: Whether more history entries are available beyond this page. + :type has_more: bool + + :param next_cursor: An opaque, base64-encoded cursor token. Pass it as the ``cursor`` query parameter to retrieve the next page. Absent or ``null`` when there are no further pages. + :type next_cursor: str, none_type, optional + """ + if next_cursor is not unset: + kwargs["next_cursor"] = next_cursor + super().__init__(kwargs) + + self_.has_more = has_more diff --git a/src/datadog_api_client/v2/model/ownership_history_response.py b/src/datadog_api_client/v2/model/ownership_history_response.py new file mode 100644 index 0000000000..cce37df7de --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_history_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_history_data import OwnershipHistoryData + + +class OwnershipHistoryResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_history_data import OwnershipHistoryData + + return { + "data": (OwnershipHistoryData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: OwnershipHistoryData, **kwargs): + """ + The response returned when listing the inference history for a resource. + + :param data: The data wrapper for an ownership history response. + :type data: OwnershipHistoryData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/ownership_history_type.py b/src/datadog_api_client/v2/model/ownership_history_type.py new file mode 100644 index 0000000000..7625bfbcd8 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_history_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class OwnershipHistoryType(ModelSimple): + """ + The type of the ownership history resource. The value should always be `ownership_history`. + + :param value: If omitted defaults to "ownership_history". Must be one of ["ownership_history"]. + :type value: str + """ + + allowed_values = { + "ownership_history", + } + OWNERSHIP_HISTORY: ClassVar["OwnershipHistoryType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +OwnershipHistoryType.OWNERSHIP_HISTORY = OwnershipHistoryType("ownership_history") diff --git a/src/datadog_api_client/v2/model/ownership_inference_attributes.py b/src/datadog_api_client/v2/model/ownership_inference_attributes.py new file mode 100644 index 0000000000..dd17e9b998 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_inference_attributes.py @@ -0,0 +1,118 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_evidence_version import OwnershipEvidenceVersion + from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType + from datadog_api_client.v2.model.ownership_inference_source import OwnershipInferenceSource + from datadog_api_client.v2.model.ownership_inference_status import OwnershipInferenceStatus + + +class OwnershipInferenceAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_evidence_version import OwnershipEvidenceVersion + from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType + from datadog_api_client.v2.model.ownership_inference_source import OwnershipInferenceSource + from datadog_api_client.v2.model.ownership_inference_status import OwnershipInferenceStatus + + return { + "checksum": (str,), + "confidence": (str,), + "created_at": (datetime,), + "evidence_versions": ([OwnershipEvidenceVersion],), + "explanation": (str,), + "owner_type": (OwnershipOwnerType,), + "primary_contact_ref": (str, none_type), + "sources": ([OwnershipInferenceSource],), + "status": (OwnershipInferenceStatus,), + "updated_at": (datetime,), + } + + attribute_map = { + "checksum": "checksum", + "confidence": "confidence", + "created_at": "created_at", + "evidence_versions": "evidence_versions", + "explanation": "explanation", + "owner_type": "owner_type", + "primary_contact_ref": "primary_contact_ref", + "sources": "sources", + "status": "status", + "updated_at": "updated_at", + } + + def __init__( + self_, + checksum: str, + confidence: str, + created_at: datetime, + evidence_versions: Union[List[OwnershipEvidenceVersion], none_type], + explanation: str, + owner_type: OwnershipOwnerType, + sources: List[OwnershipInferenceSource], + status: OwnershipInferenceStatus, + updated_at: datetime, + primary_contact_ref: Union[str, none_type, UnsetType] = unset, + **kwargs, + ): + """ + The attributes of a single ownership inference. + + :param checksum: A checksum that uniquely identifies the current state of the inference. Required when submitting feedback. + :type checksum: str + + :param confidence: The confidence score of the inference, expressed as a numeric string with up to four decimal places. + :type confidence: str + + :param created_at: The time when the inference was created. + :type created_at: datetime + + :param evidence_versions: The list of evidence versions associated with an inference. + :type evidence_versions: [OwnershipEvidenceVersion], none_type + + :param explanation: A human-readable explanation of how the inference was produced. + :type explanation: str + + :param owner_type: The owner type for an ownership inference. + :type owner_type: OwnershipOwnerType + + :param primary_contact_ref: The primary contact reference for the inferred owner, formatted as ``ref:handle/``. + :type primary_contact_ref: str, none_type, optional + + :param sources: The list of sources backing an ownership inference. Empty when the inference status is not whitelisted to expose sources. + :type sources: [OwnershipInferenceSource] + + :param status: The lifecycle status of an ownership inference. + :type status: OwnershipInferenceStatus + + :param updated_at: The time when the inference was last updated. + :type updated_at: datetime + """ + if primary_contact_ref is not unset: + kwargs["primary_contact_ref"] = primary_contact_ref + super().__init__(kwargs) + + self_.checksum = checksum + self_.confidence = confidence + self_.created_at = created_at + self_.evidence_versions = evidence_versions + self_.explanation = explanation + self_.owner_type = owner_type + self_.sources = sources + self_.status = status + self_.updated_at = updated_at diff --git a/src/datadog_api_client/v2/model/ownership_inference_data.py b/src/datadog_api_client/v2/model/ownership_inference_data.py new file mode 100644 index 0000000000..8dcb8cdca7 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_inference_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_inference_attributes import OwnershipInferenceAttributes + from datadog_api_client.v2.model.ownership_inference_type import OwnershipInferenceType + + +class OwnershipInferenceData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_inference_attributes import OwnershipInferenceAttributes + from datadog_api_client.v2.model.ownership_inference_type import OwnershipInferenceType + + return { + "attributes": (OwnershipInferenceAttributes,), + "id": (str,), + "type": (OwnershipInferenceType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: OwnershipInferenceAttributes, id: str, type: OwnershipInferenceType, **kwargs): + """ + The data wrapper for a single ownership inference response. + + :param attributes: The attributes of a single ownership inference. + :type attributes: OwnershipInferenceAttributes + + :param id: The identifier of the inference, formatted as ``resource_id:owner_type``. + :type id: str + + :param type: The type of the ownership inference resource. The value should always be ``ownership_inference``. + :type type: OwnershipInferenceType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/ownership_inference_item.py b/src/datadog_api_client/v2/model/ownership_inference_item.py new file mode 100644 index 0000000000..b624527d99 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_inference_item.py @@ -0,0 +1,125 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_evidence_version import OwnershipEvidenceVersion + from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType + from datadog_api_client.v2.model.ownership_inference_source import OwnershipInferenceSource + from datadog_api_client.v2.model.ownership_inference_status import OwnershipInferenceStatus + + +class OwnershipInferenceItem(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_evidence_version import OwnershipEvidenceVersion + from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType + from datadog_api_client.v2.model.ownership_inference_source import OwnershipInferenceSource + from datadog_api_client.v2.model.ownership_inference_status import OwnershipInferenceStatus + + return { + "checksum": (str,), + "confidence": (str,), + "created_at": (datetime,), + "evidence_versions": ([OwnershipEvidenceVersion],), + "explanation": (str,), + "id": (str,), + "owner_type": (OwnershipOwnerType,), + "primary_contact_ref": (str, none_type), + "sources": ([OwnershipInferenceSource],), + "status": (OwnershipInferenceStatus,), + "updated_at": (datetime,), + } + + attribute_map = { + "checksum": "checksum", + "confidence": "confidence", + "created_at": "created_at", + "evidence_versions": "evidence_versions", + "explanation": "explanation", + "id": "id", + "owner_type": "owner_type", + "primary_contact_ref": "primary_contact_ref", + "sources": "sources", + "status": "status", + "updated_at": "updated_at", + } + + def __init__( + self_, + checksum: str, + confidence: str, + created_at: datetime, + evidence_versions: Union[List[OwnershipEvidenceVersion], none_type], + explanation: str, + id: str, + owner_type: OwnershipOwnerType, + sources: List[OwnershipInferenceSource], + status: OwnershipInferenceStatus, + updated_at: datetime, + primary_contact_ref: Union[str, none_type, UnsetType] = unset, + **kwargs, + ): + """ + A single ownership inference, scoped to a specific owner type. + + :param checksum: A checksum that uniquely identifies the current state of the inference. Required when submitting feedback. + :type checksum: str + + :param confidence: The confidence score of the inference, expressed as a numeric string with up to four decimal places. + :type confidence: str + + :param created_at: The time when the inference was created. + :type created_at: datetime + + :param evidence_versions: The list of evidence versions associated with an inference. + :type evidence_versions: [OwnershipEvidenceVersion], none_type + + :param explanation: A human-readable explanation of how the inference was produced. + :type explanation: str + + :param id: The identifier of the inference, formatted as ``resource_id:owner_type``. + :type id: str + + :param owner_type: The owner type for an ownership inference. + :type owner_type: OwnershipOwnerType + + :param primary_contact_ref: The primary contact reference for the inferred owner, formatted as ``ref:handle/``. + :type primary_contact_ref: str, none_type, optional + + :param sources: The list of sources backing an ownership inference. Empty when the inference status is not whitelisted to expose sources. + :type sources: [OwnershipInferenceSource] + + :param status: The lifecycle status of an ownership inference. + :type status: OwnershipInferenceStatus + + :param updated_at: The time when the inference was last updated. + :type updated_at: datetime + """ + if primary_contact_ref is not unset: + kwargs["primary_contact_ref"] = primary_contact_ref + super().__init__(kwargs) + + self_.checksum = checksum + self_.confidence = confidence + self_.created_at = created_at + self_.evidence_versions = evidence_versions + self_.explanation = explanation + self_.id = id + self_.owner_type = owner_type + self_.sources = sources + self_.status = status + self_.updated_at = updated_at diff --git a/src/datadog_api_client/v2/model/ownership_inference_list_attributes.py b/src/datadog_api_client/v2/model/ownership_inference_list_attributes.py new file mode 100644 index 0000000000..2409d84db0 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_inference_list_attributes.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_inference_item import OwnershipInferenceItem + + +class OwnershipInferenceListAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_inference_item import OwnershipInferenceItem + + return { + "items": ([OwnershipInferenceItem],), + } + + attribute_map = { + "items": "items", + } + + def __init__(self_, items: List[OwnershipInferenceItem], **kwargs): + """ + The attributes of the ownership inferences collection response. + + :param items: The list of inferences for a resource, with one inference per owner type. + :type items: [OwnershipInferenceItem] + """ + super().__init__(kwargs) + + self_.items = items diff --git a/src/datadog_api_client/v2/model/ownership_inference_list_data.py b/src/datadog_api_client/v2/model/ownership_inference_list_data.py new file mode 100644 index 0000000000..8051b71a9a --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_inference_list_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_inference_list_attributes import OwnershipInferenceListAttributes + from datadog_api_client.v2.model.ownership_inferences_type import OwnershipInferencesType + + +class OwnershipInferenceListData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_inference_list_attributes import OwnershipInferenceListAttributes + from datadog_api_client.v2.model.ownership_inferences_type import OwnershipInferencesType + + return { + "attributes": (OwnershipInferenceListAttributes,), + "id": (str,), + "type": (OwnershipInferencesType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: OwnershipInferenceListAttributes, id: str, type: OwnershipInferencesType, **kwargs): + """ + The data wrapper for the ownership inferences collection response. + + :param attributes: The attributes of the ownership inferences collection response. + :type attributes: OwnershipInferenceListAttributes + + :param id: The resource identifier associated with the returned inferences. + :type id: str + + :param type: The type of the ownership inferences collection resource. The value should always be ``ownership_inferences``. + :type type: OwnershipInferencesType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/ownership_inference_list_response.py b/src/datadog_api_client/v2/model/ownership_inference_list_response.py new file mode 100644 index 0000000000..42723e7336 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_inference_list_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_inference_list_data import OwnershipInferenceListData + + +class OwnershipInferenceListResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_inference_list_data import OwnershipInferenceListData + + return { + "data": (OwnershipInferenceListData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: OwnershipInferenceListData, **kwargs): + """ + The response returned when listing all current ownership inferences for a resource. + + :param data: The data wrapper for the ownership inferences collection response. + :type data: OwnershipInferenceListData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/ownership_inference_response.py b/src/datadog_api_client/v2/model/ownership_inference_response.py new file mode 100644 index 0000000000..e34ca8f20a --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_inference_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.ownership_inference_data import OwnershipInferenceData + + +class OwnershipInferenceResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.ownership_inference_data import OwnershipInferenceData + + return { + "data": (OwnershipInferenceData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: OwnershipInferenceData, **kwargs): + """ + The response returned when retrieving a single ownership inference for an owner type. + + :param data: The data wrapper for a single ownership inference response. + :type data: OwnershipInferenceData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/ownership_inference_source.py b/src/datadog_api_client/v2/model/ownership_inference_source.py new file mode 100644 index 0000000000..036d000b04 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_inference_source.py @@ -0,0 +1,17 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, +) + + +class OwnershipInferenceSource(ModelNormal): + def __init__(self_, **kwargs): + """ + A source describing how an inference was derived. + """ + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/ownership_inference_status.py b/src/datadog_api_client/v2/model/ownership_inference_status.py new file mode 100644 index 0000000000..23c3f1ff73 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_inference_status.py @@ -0,0 +1,47 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class OwnershipInferenceStatus(ModelSimple): + """ + The lifecycle status of an ownership inference. + + :param value: Must be one of ["suggested", "persisted", "overridden", "failed", "unknown"]. + :type value: str + """ + + allowed_values = { + "suggested", + "persisted", + "overridden", + "failed", + "unknown", + } + SUGGESTED: ClassVar["OwnershipInferenceStatus"] + PERSISTED: ClassVar["OwnershipInferenceStatus"] + OVERRIDDEN: ClassVar["OwnershipInferenceStatus"] + FAILED: ClassVar["OwnershipInferenceStatus"] + UNKNOWN: ClassVar["OwnershipInferenceStatus"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +OwnershipInferenceStatus.SUGGESTED = OwnershipInferenceStatus("suggested") +OwnershipInferenceStatus.PERSISTED = OwnershipInferenceStatus("persisted") +OwnershipInferenceStatus.OVERRIDDEN = OwnershipInferenceStatus("overridden") +OwnershipInferenceStatus.FAILED = OwnershipInferenceStatus("failed") +OwnershipInferenceStatus.UNKNOWN = OwnershipInferenceStatus("unknown") diff --git a/src/datadog_api_client/v2/model/ownership_inference_type.py b/src/datadog_api_client/v2/model/ownership_inference_type.py new file mode 100644 index 0000000000..526e87dc92 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_inference_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class OwnershipInferenceType(ModelSimple): + """ + The type of the ownership inference resource. The value should always be `ownership_inference`. + + :param value: If omitted defaults to "ownership_inference". Must be one of ["ownership_inference"]. + :type value: str + """ + + allowed_values = { + "ownership_inference", + } + OWNERSHIP_INFERENCE: ClassVar["OwnershipInferenceType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +OwnershipInferenceType.OWNERSHIP_INFERENCE = OwnershipInferenceType("ownership_inference") diff --git a/src/datadog_api_client/v2/model/ownership_inferences_type.py b/src/datadog_api_client/v2/model/ownership_inferences_type.py new file mode 100644 index 0000000000..b1ab25b618 --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_inferences_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class OwnershipInferencesType(ModelSimple): + """ + The type of the ownership inferences collection resource. The value should always be `ownership_inferences`. + + :param value: If omitted defaults to "ownership_inferences". Must be one of ["ownership_inferences"]. + :type value: str + """ + + allowed_values = { + "ownership_inferences", + } + OWNERSHIP_INFERENCES: ClassVar["OwnershipInferencesType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +OwnershipInferencesType.OWNERSHIP_INFERENCES = OwnershipInferencesType("ownership_inferences") diff --git a/src/datadog_api_client/v2/model/ownership_owner_type.py b/src/datadog_api_client/v2/model/ownership_owner_type.py new file mode 100644 index 0000000000..b1bee47a3a --- /dev/null +++ b/src/datadog_api_client/v2/model/ownership_owner_type.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class OwnershipOwnerType(ModelSimple): + """ + The owner type for an ownership inference. + + :param value: Must be one of ["user", "team", "service", "unknown"]. + :type value: str + """ + + allowed_values = { + "user", + "team", + "service", + "unknown", + } + USER: ClassVar["OwnershipOwnerType"] + TEAM: ClassVar["OwnershipOwnerType"] + SERVICE: ClassVar["OwnershipOwnerType"] + UNKNOWN: ClassVar["OwnershipOwnerType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +OwnershipOwnerType.USER = OwnershipOwnerType("user") +OwnershipOwnerType.TEAM = OwnershipOwnerType("team") +OwnershipOwnerType.SERVICE = OwnershipOwnerType("service") +OwnershipOwnerType.UNKNOWN = OwnershipOwnerType("unknown") diff --git a/src/datadog_api_client/v2/model/patch_notification_rule_parameters_data_attributes.py b/src/datadog_api_client/v2/model/patch_notification_rule_parameters_data_attributes.py index 4d37c94b2e..b0fae6ed4d 100644 --- a/src/datadog_api_client/v2/model/patch_notification_rule_parameters_data_attributes.py +++ b/src/datadog_api_client/v2/model/patch_notification_rule_parameters_data_attributes.py @@ -14,17 +14,20 @@ if TYPE_CHECKING: + from datadog_api_client.v2.model.notification_rule_routing import NotificationRuleRouting from datadog_api_client.v2.model.selectors import Selectors class PatchNotificationRuleParametersDataAttributes(ModelNormal): @cached_property def openapi_types(_): + from datadog_api_client.v2.model.notification_rule_routing import NotificationRuleRouting from datadog_api_client.v2.model.selectors import Selectors return { "enabled": (bool,), "name": (str,), + "routing": (NotificationRuleRouting,), "selectors": (Selectors,), "targets": ([str],), "time_aggregation": (int,), @@ -34,6 +37,7 @@ def openapi_types(_): attribute_map = { "enabled": "enabled", "name": "name", + "routing": "routing", "selectors": "selectors", "targets": "targets", "time_aggregation": "time_aggregation", @@ -44,6 +48,7 @@ def __init__( self_, enabled: Union[bool, UnsetType] = unset, name: Union[str, UnsetType] = unset, + routing: Union[NotificationRuleRouting, UnsetType] = unset, selectors: Union[Selectors, UnsetType] = unset, targets: Union[List[str], UnsetType] = unset, time_aggregation: Union[int, UnsetType] = unset, @@ -59,6 +64,9 @@ def __init__( :param name: Name of the notification rule. :type name: str, optional + :param routing: Routing configuration for the notification rule. + :type routing: NotificationRuleRouting, optional + :param selectors: Selectors are used to filter security issues for which notifications should be generated. Users can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source. Only the trigger_source field is required. @@ -83,6 +91,8 @@ def __init__( kwargs["enabled"] = enabled if name is not unset: kwargs["name"] = name + if routing is not unset: + kwargs["routing"] = routing if selectors is not unset: kwargs["selectors"] = selectors if targets is not unset: diff --git a/src/datadog_api_client/v2/model/publish_form_data.py b/src/datadog_api_client/v2/model/publish_form_data.py new file mode 100644 index 0000000000..62f6878191 --- /dev/null +++ b/src/datadog_api_client/v2/model/publish_form_data.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.publish_form_data_attributes import PublishFormDataAttributes + from datadog_api_client.v2.model.form_publication_type import FormPublicationType + + +class PublishFormData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.publish_form_data_attributes import PublishFormDataAttributes + from datadog_api_client.v2.model.form_publication_type import FormPublicationType + + return { + "attributes": (PublishFormDataAttributes,), + "type": (FormPublicationType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: PublishFormDataAttributes, type: FormPublicationType, **kwargs): + """ + The data for publishing a form version. + + :param attributes: The attributes for publishing a form version. + :type attributes: PublishFormDataAttributes + + :param type: The resource type for a form publication. + :type type: FormPublicationType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/publish_form_data_attributes.py b/src/datadog_api_client/v2/model/publish_form_data_attributes.py new file mode 100644 index 0000000000..4ec0adbf07 --- /dev/null +++ b/src/datadog_api_client/v2/model/publish_form_data_attributes.py @@ -0,0 +1,33 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class PublishFormDataAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "version": (int,), + } + + attribute_map = { + "version": "version", + } + + def __init__(self_, version: int, **kwargs): + """ + The attributes for publishing a form version. + + :param version: The version number to publish. + :type version: int + """ + super().__init__(kwargs) + + self_.version = version diff --git a/src/datadog_api_client/v2/model/publish_form_request.py b/src/datadog_api_client/v2/model/publish_form_request.py new file mode 100644 index 0000000000..850d8a820e --- /dev/null +++ b/src/datadog_api_client/v2/model/publish_form_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.publish_form_data import PublishFormData + + +class PublishFormRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.publish_form_data import PublishFormData + + return { + "data": (PublishFormData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: PublishFormData, **kwargs): + """ + A request to publish a form version. + + :param data: The data for publishing a form version. + :type data: PublishFormData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/report_schedule_author.py b/src/datadog_api_client/v2/model/report_schedule_author.py new file mode 100644 index 0000000000..73f8b2faeb --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_author.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.report_schedule_author_attributes import ReportScheduleAuthorAttributes + from datadog_api_client.v2.model.report_schedule_author_type import ReportScheduleAuthorType + + +class ReportScheduleAuthor(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.report_schedule_author_attributes import ReportScheduleAuthorAttributes + from datadog_api_client.v2.model.report_schedule_author_type import ReportScheduleAuthorType + + return { + "attributes": (ReportScheduleAuthorAttributes,), + "id": (str,), + "type": (ReportScheduleAuthorType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: ReportScheduleAuthorAttributes, id: str, type: ReportScheduleAuthorType, **kwargs): + """ + A user included as a related JSON:API resource. + + :param attributes: Attributes of the report author. + :type attributes: ReportScheduleAuthorAttributes + + :param id: The user UUID. + :type id: str + + :param type: JSON:API resource type for the included report author. + :type type: ReportScheduleAuthorType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/report_schedule_author_attributes.py b/src/datadog_api_client/v2/model/report_schedule_author_attributes.py new file mode 100644 index 0000000000..de95bfb07e --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_author_attributes.py @@ -0,0 +1,41 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, +) + + +class ReportScheduleAuthorAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "email": (str, none_type), + "name": (str, none_type), + } + + attribute_map = { + "email": "email", + "name": "name", + } + + def __init__(self_, email: Union[str, none_type], name: Union[str, none_type], **kwargs): + """ + Attributes of the report author. + + :param email: The email address of the report author, or ``null`` if unavailable. + :type email: str, none_type + + :param name: The display name of the report author, or ``null`` if unavailable. + :type name: str, none_type + """ + super().__init__(kwargs) + + self_.email = email + self_.name = name diff --git a/src/datadog_api_client/v2/model/report_schedule_author_relationship.py b/src/datadog_api_client/v2/model/report_schedule_author_relationship.py new file mode 100644 index 0000000000..8975ed65c5 --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_author_relationship.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.report_schedule_author_relationship_data import ( + ReportScheduleAuthorRelationshipData, + ) + + +class ReportScheduleAuthorRelationship(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.report_schedule_author_relationship_data import ( + ReportScheduleAuthorRelationshipData, + ) + + return { + "data": (ReportScheduleAuthorRelationshipData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: ReportScheduleAuthorRelationshipData, **kwargs): + """ + Relationship to the author of the report schedule. + + :param data: Relationship data for the author of the report schedule. + :type data: ReportScheduleAuthorRelationshipData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/report_schedule_author_relationship_data.py b/src/datadog_api_client/v2/model/report_schedule_author_relationship_data.py new file mode 100644 index 0000000000..bf74934133 --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_author_relationship_data.py @@ -0,0 +1,46 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.report_schedule_author_type import ReportScheduleAuthorType + + +class ReportScheduleAuthorRelationshipData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.report_schedule_author_type import ReportScheduleAuthorType + + return { + "id": (str,), + "type": (ReportScheduleAuthorType,), + } + + attribute_map = { + "id": "id", + "type": "type", + } + + def __init__(self_, id: str, type: ReportScheduleAuthorType, **kwargs): + """ + Relationship data for the author of the report schedule. + + :param id: The user UUID of the report schedule author. + :type id: str + + :param type: JSON:API resource type for the included report author. + :type type: ReportScheduleAuthorType + """ + super().__init__(kwargs) + + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/report_schedule_author_type.py b/src/datadog_api_client/v2/model/report_schedule_author_type.py new file mode 100644 index 0000000000..e3e714598a --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_author_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ReportScheduleAuthorType(ModelSimple): + """ + JSON:API resource type for the included report author. + + :param value: If omitted defaults to "users". Must be one of ["users"]. + :type value: str + """ + + allowed_values = { + "users", + } + USERS: ClassVar["ReportScheduleAuthorType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ReportScheduleAuthorType.USERS = ReportScheduleAuthorType("users") diff --git a/src/datadog_api_client/v2/model/report_schedule_create_request.py b/src/datadog_api_client/v2/model/report_schedule_create_request.py new file mode 100644 index 0000000000..438eaf18fc --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_create_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.report_schedule_create_request_data import ReportScheduleCreateRequestData + + +class ReportScheduleCreateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.report_schedule_create_request_data import ReportScheduleCreateRequestData + + return { + "data": (ReportScheduleCreateRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: ReportScheduleCreateRequestData, **kwargs): + """ + Request body for creating a report schedule. + + :param data: The JSON:API data object for a report schedule creation request. + :type data: ReportScheduleCreateRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/report_schedule_create_request_attributes.py b/src/datadog_api_client/v2/model/report_schedule_create_request_attributes.py new file mode 100644 index 0000000000..54abbe4f04 --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_create_request_attributes.py @@ -0,0 +1,136 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, + UUID, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.report_schedule_delivery_format import ReportScheduleDeliveryFormat + from datadog_api_client.v2.model.report_schedule_resource_type import ReportScheduleResourceType + from datadog_api_client.v2.model.report_schedule_template_variable import ReportScheduleTemplateVariable + + +class ReportScheduleCreateRequestAttributes(ModelNormal): + validations = { + "description": { + "max_length": 4096, + }, + "title": { + "max_length": 78, + "min_length": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.report_schedule_delivery_format import ReportScheduleDeliveryFormat + from datadog_api_client.v2.model.report_schedule_resource_type import ReportScheduleResourceType + from datadog_api_client.v2.model.report_schedule_template_variable import ReportScheduleTemplateVariable + + return { + "delivery_format": (ReportScheduleDeliveryFormat,), + "description": (str,), + "recipients": ([str],), + "resource_id": (str,), + "resource_type": (ReportScheduleResourceType,), + "rrule": (str,), + "tab_id": (UUID,), + "template_variables": ([ReportScheduleTemplateVariable],), + "timeframe": (str,), + "timezone": (str,), + "title": (str,), + } + + attribute_map = { + "delivery_format": "delivery_format", + "description": "description", + "recipients": "recipients", + "resource_id": "resource_id", + "resource_type": "resource_type", + "rrule": "rrule", + "tab_id": "tab_id", + "template_variables": "template_variables", + "timeframe": "timeframe", + "timezone": "timezone", + "title": "title", + } + + def __init__( + self_, + description: str, + recipients: List[str], + resource_id: str, + resource_type: ReportScheduleResourceType, + rrule: str, + template_variables: List[ReportScheduleTemplateVariable], + timeframe: str, + timezone: str, + title: str, + delivery_format: Union[ReportScheduleDeliveryFormat, UnsetType] = unset, + tab_id: Union[UUID, UnsetType] = unset, + **kwargs, + ): + """ + The configuration of the report schedule to create. + + :param delivery_format: How a PDF-export report is delivered. ``pdf`` attaches a PDF file, ``png`` embeds + an inline PNG image, and ``pdf_and_png`` delivers both. + :type delivery_format: ReportScheduleDeliveryFormat, optional + + :param description: A description of the report, up to 4096 characters. + :type description: str + + :param recipients: The recipients of the report. Each entry is an email address, a Slack channel + reference in the form ``slack:{team_id}.{channel_id}.{channel_name}`` , or a Microsoft + Teams channel reference in the form ``teams:{tenant_id}|{team_id}|{channel_id}``. + :type recipients: [str] + + :param resource_id: The identifier of the dashboard or integration dashboard to render in the report. + :type resource_id: str + + :param resource_type: The type of dashboard resource the report schedule targets. + :type resource_type: ReportScheduleResourceType + + :param rrule: The recurrence rule for the schedule, expressed as an iCalendar ``RRULE`` string. + :type rrule: str + + :param tab_id: The identifier of the dashboard tab to render, when the dashboard has tabs. + :type tab_id: UUID, optional + + :param template_variables: The dashboard template variables applied when rendering the report. + :type template_variables: [ReportScheduleTemplateVariable] + + :param timeframe: The relative timeframe of data to include in the report. + :type timeframe: str + + :param timezone: The IANA time zone identifier the recurrence rule is evaluated in. + :type timezone: str + + :param title: The title of the report, between 1 and 78 characters. + :type title: str + """ + if delivery_format is not unset: + kwargs["delivery_format"] = delivery_format + if tab_id is not unset: + kwargs["tab_id"] = tab_id + super().__init__(kwargs) + + self_.description = description + self_.recipients = recipients + self_.resource_id = resource_id + self_.resource_type = resource_type + self_.rrule = rrule + self_.template_variables = template_variables + self_.timeframe = timeframe + self_.timezone = timezone + self_.title = title diff --git a/src/datadog_api_client/v2/model/report_schedule_create_request_data.py b/src/datadog_api_client/v2/model/report_schedule_create_request_data.py new file mode 100644 index 0000000000..7c64815a53 --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_create_request_data.py @@ -0,0 +1,52 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.report_schedule_create_request_attributes import ( + ReportScheduleCreateRequestAttributes, + ) + from datadog_api_client.v2.model.report_schedule_type import ReportScheduleType + + +class ReportScheduleCreateRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.report_schedule_create_request_attributes import ( + ReportScheduleCreateRequestAttributes, + ) + from datadog_api_client.v2.model.report_schedule_type import ReportScheduleType + + return { + "attributes": (ReportScheduleCreateRequestAttributes,), + "type": (ReportScheduleType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: ReportScheduleCreateRequestAttributes, type: ReportScheduleType, **kwargs): + """ + The JSON:API data object for a report schedule creation request. + + :param attributes: The configuration of the report schedule to create. + :type attributes: ReportScheduleCreateRequestAttributes + + :param type: JSON:API resource type for report schedules. + :type type: ReportScheduleType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/report_schedule_delivery_format.py b/src/datadog_api_client/v2/model/report_schedule_delivery_format.py new file mode 100644 index 0000000000..7fb8396f1c --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_delivery_format.py @@ -0,0 +1,42 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ReportScheduleDeliveryFormat(ModelSimple): + """ + How a PDF-export report is delivered. `pdf` attaches a PDF file, `png` embeds + an inline PNG image, and `pdf_and_png` delivers both. + + :param value: Must be one of ["pdf", "png", "pdf_and_png"]. + :type value: str + """ + + allowed_values = { + "pdf", + "png", + "pdf_and_png", + } + PDF: ClassVar["ReportScheduleDeliveryFormat"] + PNG: ClassVar["ReportScheduleDeliveryFormat"] + PDF_AND_PNG: ClassVar["ReportScheduleDeliveryFormat"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ReportScheduleDeliveryFormat.PDF = ReportScheduleDeliveryFormat("pdf") +ReportScheduleDeliveryFormat.PNG = ReportScheduleDeliveryFormat("png") +ReportScheduleDeliveryFormat.PDF_AND_PNG = ReportScheduleDeliveryFormat("pdf_and_png") diff --git a/src/datadog_api_client/v2/model/incident_service_included_items.py b/src/datadog_api_client/v2/model/report_schedule_included_resource.py similarity index 60% rename from src/datadog_api_client/v2/model/incident_service_included_items.py rename to src/datadog_api_client/v2/model/report_schedule_included_resource.py index edc03cca8a..43e7c6e840 100644 --- a/src/datadog_api_client/v2/model/incident_service_included_items.py +++ b/src/datadog_api_client/v2/model/report_schedule_included_resource.py @@ -10,22 +10,19 @@ ) -class IncidentServiceIncludedItems(ModelComposed): +class ReportScheduleIncludedResource(ModelComposed): def __init__(self, **kwargs): """ - An object related to an incident service which is present in the included payload. + A related resource included with a report schedule. - :param attributes: Attributes of user object returned by the API. - :type attributes: UserAttributes, optional + :param attributes: Attributes of the report author. + :type attributes: ReportScheduleAuthorAttributes - :param id: ID of the user. - :type id: str, optional + :param id: The user UUID. + :type id: str - :param relationships: Relationships of the user object returned by the API. - :type relationships: UserResponseRelationships, optional - - :param type: Users resource type. - :type type: UsersType, optional + :param type: JSON:API resource type for the included report author. + :type type: ReportScheduleAuthorType """ super().__init__(kwargs) @@ -38,10 +35,10 @@ def _composed_schemas(_): # code would be run when this module is imported, and these composed # classes don't exist yet because their module has not finished # loading - from datadog_api_client.v2.model.user import User + from datadog_api_client.v2.model.report_schedule_author import ReportScheduleAuthor return { "oneOf": [ - User, + ReportScheduleAuthor, ], } diff --git a/src/datadog_api_client/v2/model/report_schedule_patch_request.py b/src/datadog_api_client/v2/model/report_schedule_patch_request.py new file mode 100644 index 0000000000..d7c9fc69d0 --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_patch_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.report_schedule_patch_request_data import ReportSchedulePatchRequestData + + +class ReportSchedulePatchRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.report_schedule_patch_request_data import ReportSchedulePatchRequestData + + return { + "data": (ReportSchedulePatchRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: ReportSchedulePatchRequestData, **kwargs): + """ + Request body for updating a report schedule. + + :param data: The JSON:API data object for a report schedule update request. + :type data: ReportSchedulePatchRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/report_schedule_patch_request_attributes.py b/src/datadog_api_client/v2/model/report_schedule_patch_request_attributes.py new file mode 100644 index 0000000000..949a902b7e --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_patch_request_attributes.py @@ -0,0 +1,121 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, + UUID, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.report_schedule_delivery_format import ReportScheduleDeliveryFormat + from datadog_api_client.v2.model.report_schedule_template_variable import ReportScheduleTemplateVariable + + +class ReportSchedulePatchRequestAttributes(ModelNormal): + validations = { + "description": { + "max_length": 4096, + }, + "title": { + "max_length": 78, + "min_length": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.report_schedule_delivery_format import ReportScheduleDeliveryFormat + from datadog_api_client.v2.model.report_schedule_template_variable import ReportScheduleTemplateVariable + + return { + "delivery_format": (ReportScheduleDeliveryFormat,), + "description": (str,), + "recipients": ([str],), + "rrule": (str,), + "tab_id": (UUID,), + "template_variables": ([ReportScheduleTemplateVariable],), + "timeframe": (str,), + "timezone": (str,), + "title": (str,), + } + + attribute_map = { + "delivery_format": "delivery_format", + "description": "description", + "recipients": "recipients", + "rrule": "rrule", + "tab_id": "tab_id", + "template_variables": "template_variables", + "timeframe": "timeframe", + "timezone": "timezone", + "title": "title", + } + + def __init__( + self_, + description: str, + recipients: List[str], + rrule: str, + template_variables: List[ReportScheduleTemplateVariable], + timeframe: str, + timezone: str, + title: str, + delivery_format: Union[ReportScheduleDeliveryFormat, UnsetType] = unset, + tab_id: Union[UUID, UnsetType] = unset, + **kwargs, + ): + """ + The updated configuration of the report schedule. These values replace the existing + ones; the targeted resource ( ``resource_id`` and ``resource_type`` ) cannot be changed. + + :param delivery_format: How a PDF-export report is delivered. ``pdf`` attaches a PDF file, ``png`` embeds + an inline PNG image, and ``pdf_and_png`` delivers both. + :type delivery_format: ReportScheduleDeliveryFormat, optional + + :param description: A description of the report, up to 4096 characters. + :type description: str + + :param recipients: The recipients of the report. Each entry is an email address, a Slack channel + reference in the form ``slack:{team_id}.{channel_id}.{channel_name}`` , or a Microsoft + Teams channel reference in the form ``teams:{tenant_id}|{team_id}|{channel_id}``. + :type recipients: [str] + + :param rrule: The recurrence rule for the schedule, expressed as an iCalendar ``RRULE`` string. + :type rrule: str + + :param tab_id: The identifier of the dashboard tab to render, when the dashboard has tabs. + :type tab_id: UUID, optional + + :param template_variables: The dashboard template variables applied when rendering the report. + :type template_variables: [ReportScheduleTemplateVariable] + + :param timeframe: The relative timeframe of data to include in the report. + :type timeframe: str + + :param timezone: The IANA time zone identifier the recurrence rule is evaluated in. + :type timezone: str + + :param title: The title of the report, between 1 and 78 characters. + :type title: str + """ + if delivery_format is not unset: + kwargs["delivery_format"] = delivery_format + if tab_id is not unset: + kwargs["tab_id"] = tab_id + super().__init__(kwargs) + + self_.description = description + self_.recipients = recipients + self_.rrule = rrule + self_.template_variables = template_variables + self_.timeframe = timeframe + self_.timezone = timezone + self_.title = title diff --git a/src/datadog_api_client/v2/model/report_schedule_patch_request_data.py b/src/datadog_api_client/v2/model/report_schedule_patch_request_data.py new file mode 100644 index 0000000000..c639f414bb --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_patch_request_data.py @@ -0,0 +1,53 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.report_schedule_patch_request_attributes import ( + ReportSchedulePatchRequestAttributes, + ) + from datadog_api_client.v2.model.report_schedule_type import ReportScheduleType + + +class ReportSchedulePatchRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.report_schedule_patch_request_attributes import ( + ReportSchedulePatchRequestAttributes, + ) + from datadog_api_client.v2.model.report_schedule_type import ReportScheduleType + + return { + "attributes": (ReportSchedulePatchRequestAttributes,), + "type": (ReportScheduleType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: ReportSchedulePatchRequestAttributes, type: ReportScheduleType, **kwargs): + """ + The JSON:API data object for a report schedule update request. + + :param attributes: The updated configuration of the report schedule. These values replace the existing + ones; the targeted resource ( ``resource_id`` and ``resource_type`` ) cannot be changed. + :type attributes: ReportSchedulePatchRequestAttributes + + :param type: JSON:API resource type for report schedules. + :type type: ReportScheduleType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/report_schedule_resource_type.py b/src/datadog_api_client/v2/model/report_schedule_resource_type.py new file mode 100644 index 0000000000..5e6d3847e1 --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_resource_type.py @@ -0,0 +1,38 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ReportScheduleResourceType(ModelSimple): + """ + The type of dashboard resource the report schedule targets. + + :param value: Must be one of ["dashboard", "integration_dashboard"]. + :type value: str + """ + + allowed_values = { + "dashboard", + "integration_dashboard", + } + DASHBOARD: ClassVar["ReportScheduleResourceType"] + INTEGRATION_DASHBOARD: ClassVar["ReportScheduleResourceType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ReportScheduleResourceType.DASHBOARD = ReportScheduleResourceType("dashboard") +ReportScheduleResourceType.INTEGRATION_DASHBOARD = ReportScheduleResourceType("integration_dashboard") diff --git a/src/datadog_api_client/v2/model/report_schedule_response.py b/src/datadog_api_client/v2/model/report_schedule_response.py new file mode 100644 index 0000000000..d1fce42762 --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_response.py @@ -0,0 +1,57 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.report_schedule_response_data import ReportScheduleResponseData + from datadog_api_client.v2.model.report_schedule_included_resource import ReportScheduleIncludedResource + from datadog_api_client.v2.model.report_schedule_author import ReportScheduleAuthor + + +class ReportScheduleResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.report_schedule_response_data import ReportScheduleResponseData + from datadog_api_client.v2.model.report_schedule_included_resource import ReportScheduleIncludedResource + + return { + "data": (ReportScheduleResponseData,), + "included": ([ReportScheduleIncludedResource],), + } + + attribute_map = { + "data": "data", + "included": "included", + } + + def __init__( + self_, + data: ReportScheduleResponseData, + included: Union[List[Union[ReportScheduleIncludedResource, ReportScheduleAuthor]], UnsetType] = unset, + **kwargs, + ): + """ + Response containing a single report schedule. + + :param data: The JSON:API data object representing a report schedule. + :type data: ReportScheduleResponseData + + :param included: Related resources included with the report schedule, such as the author. + :type included: [ReportScheduleIncludedResource], optional + """ + if included is not unset: + kwargs["included"] = included + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/report_schedule_response_attributes.py b/src/datadog_api_client/v2/model/report_schedule_response_attributes.py new file mode 100644 index 0000000000..2f4f5e6da6 --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_response_attributes.py @@ -0,0 +1,142 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.report_schedule_response_attributes_delivery_format import ( + ReportScheduleResponseAttributesDeliveryFormat, + ) + from datadog_api_client.v2.model.report_schedule_resource_type import ReportScheduleResourceType + from datadog_api_client.v2.model.report_schedule_status import ReportScheduleStatus + from datadog_api_client.v2.model.report_schedule_template_variable import ReportScheduleTemplateVariable + + +class ReportScheduleResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.report_schedule_response_attributes_delivery_format import ( + ReportScheduleResponseAttributesDeliveryFormat, + ) + from datadog_api_client.v2.model.report_schedule_resource_type import ReportScheduleResourceType + from datadog_api_client.v2.model.report_schedule_status import ReportScheduleStatus + from datadog_api_client.v2.model.report_schedule_template_variable import ReportScheduleTemplateVariable + + return { + "delivery_format": (ReportScheduleResponseAttributesDeliveryFormat,), + "description": (str,), + "next_recurrence": (int, none_type), + "recipients": ([str],), + "resource_id": (str,), + "resource_type": (ReportScheduleResourceType,), + "rrule": (str,), + "status": (ReportScheduleStatus,), + "tab_id": (str, none_type), + "template_variables": ([ReportScheduleTemplateVariable],), + "timeframe": (str, none_type), + "timezone": (str,), + "title": (str,), + } + + attribute_map = { + "delivery_format": "delivery_format", + "description": "description", + "next_recurrence": "next_recurrence", + "recipients": "recipients", + "resource_id": "resource_id", + "resource_type": "resource_type", + "rrule": "rrule", + "status": "status", + "tab_id": "tab_id", + "template_variables": "template_variables", + "timeframe": "timeframe", + "timezone": "timezone", + "title": "title", + } + + def __init__( + self_, + description: str, + next_recurrence: Union[int, none_type], + recipients: List[str], + resource_id: str, + resource_type: ReportScheduleResourceType, + rrule: str, + status: ReportScheduleStatus, + tab_id: Union[str, none_type], + template_variables: List[ReportScheduleTemplateVariable], + timeframe: Union[str, none_type], + timezone: str, + title: str, + delivery_format: Union[ReportScheduleResponseAttributesDeliveryFormat, none_type, UnsetType] = unset, + **kwargs, + ): + """ + The configuration and derived state of a report schedule. + + :param delivery_format: The delivery format for dashboard report schedules, or ``null`` if not set. + :type delivery_format: ReportScheduleResponseAttributesDeliveryFormat, none_type, optional + + :param description: The description of the report. + :type description: str + + :param next_recurrence: The Unix timestamp, in milliseconds, of the next scheduled delivery, or ``null`` if none is scheduled. + :type next_recurrence: int, none_type + + :param recipients: The recipients of the report (email addresses, Slack channel references, or Microsoft Teams channel references). + :type recipients: [str] + + :param resource_id: The identifier of the resource rendered in the report. + :type resource_id: str + + :param resource_type: The type of dashboard resource the report schedule targets. + :type resource_type: ReportScheduleResourceType + + :param rrule: The recurrence rule for the schedule, expressed as an iCalendar ``RRULE`` string. + :type rrule: str + + :param status: Whether the schedule is currently delivering reports ( ``active`` ) or paused ( ``inactive`` ). + :type status: ReportScheduleStatus + + :param tab_id: The identifier of the dashboard tab rendered in the report, or ``null`` if not set. + :type tab_id: str, none_type + + :param template_variables: The dashboard template variables applied when rendering the report. + :type template_variables: [ReportScheduleTemplateVariable] + + :param timeframe: The relative timeframe of data included in the report, or ``null`` if not set. + :type timeframe: str, none_type + + :param timezone: The IANA time zone identifier the recurrence rule is evaluated in. + :type timezone: str + + :param title: The title of the report. + :type title: str + """ + if delivery_format is not unset: + kwargs["delivery_format"] = delivery_format + super().__init__(kwargs) + + self_.description = description + self_.next_recurrence = next_recurrence + self_.recipients = recipients + self_.resource_id = resource_id + self_.resource_type = resource_type + self_.rrule = rrule + self_.status = status + self_.tab_id = tab_id + self_.template_variables = template_variables + self_.timeframe = timeframe + self_.timezone = timezone + self_.title = title diff --git a/src/datadog_api_client/v2/model/report_schedule_response_attributes_delivery_format.py b/src/datadog_api_client/v2/model/report_schedule_response_attributes_delivery_format.py new file mode 100644 index 0000000000..7f73c88792 --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_response_attributes_delivery_format.py @@ -0,0 +1,45 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ReportScheduleResponseAttributesDeliveryFormat(ModelSimple): + """ + The delivery format for dashboard report schedules, or `null` if not set. + + :param value: Must be one of ["pdf", "png", "pdf_and_png"]. + :type value: str + """ + + allowed_values = { + "pdf", + "png", + "pdf_and_png", + } + PDF: ClassVar["ReportScheduleResponseAttributesDeliveryFormat"] + PNG: ClassVar["ReportScheduleResponseAttributesDeliveryFormat"] + PDF_AND_PNG: ClassVar["ReportScheduleResponseAttributesDeliveryFormat"] + + _nullable = True + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ReportScheduleResponseAttributesDeliveryFormat.PDF = ReportScheduleResponseAttributesDeliveryFormat("pdf") +ReportScheduleResponseAttributesDeliveryFormat.PNG = ReportScheduleResponseAttributesDeliveryFormat("png") +ReportScheduleResponseAttributesDeliveryFormat.PDF_AND_PNG = ReportScheduleResponseAttributesDeliveryFormat( + "pdf_and_png" +) diff --git a/src/datadog_api_client/v2/model/report_schedule_response_data.py b/src/datadog_api_client/v2/model/report_schedule_response_data.py new file mode 100644 index 0000000000..566d875294 --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_response_data.py @@ -0,0 +1,71 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.report_schedule_response_attributes import ReportScheduleResponseAttributes + from datadog_api_client.v2.model.report_schedule_response_relationships import ReportScheduleResponseRelationships + from datadog_api_client.v2.model.report_schedule_type import ReportScheduleType + + +class ReportScheduleResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.report_schedule_response_attributes import ReportScheduleResponseAttributes + from datadog_api_client.v2.model.report_schedule_response_relationships import ( + ReportScheduleResponseRelationships, + ) + from datadog_api_client.v2.model.report_schedule_type import ReportScheduleType + + return { + "attributes": (ReportScheduleResponseAttributes,), + "id": (str,), + "relationships": (ReportScheduleResponseRelationships,), + "type": (ReportScheduleType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "relationships": "relationships", + "type": "type", + } + + def __init__( + self_, + attributes: ReportScheduleResponseAttributes, + id: str, + relationships: ReportScheduleResponseRelationships, + type: ReportScheduleType, + **kwargs, + ): + """ + The JSON:API data object representing a report schedule. + + :param attributes: The configuration and derived state of a report schedule. + :type attributes: ReportScheduleResponseAttributes + + :param id: The unique identifier of the report schedule. + :type id: str + + :param relationships: Relationships for the report schedule. + :type relationships: ReportScheduleResponseRelationships + + :param type: JSON:API resource type for report schedules. + :type type: ReportScheduleType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.relationships = relationships + self_.type = type diff --git a/src/datadog_api_client/v2/model/report_schedule_response_relationships.py b/src/datadog_api_client/v2/model/report_schedule_response_relationships.py new file mode 100644 index 0000000000..6ff2e51879 --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_response_relationships.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.report_schedule_author_relationship import ReportScheduleAuthorRelationship + + +class ReportScheduleResponseRelationships(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.report_schedule_author_relationship import ReportScheduleAuthorRelationship + + return { + "author": (ReportScheduleAuthorRelationship,), + } + + attribute_map = { + "author": "author", + } + + def __init__(self_, author: ReportScheduleAuthorRelationship, **kwargs): + """ + Relationships for the report schedule. + + :param author: Relationship to the author of the report schedule. + :type author: ReportScheduleAuthorRelationship + """ + super().__init__(kwargs) + + self_.author = author diff --git a/src/datadog_api_client/v2/model/report_schedule_status.py b/src/datadog_api_client/v2/model/report_schedule_status.py new file mode 100644 index 0000000000..91e527582d --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_status.py @@ -0,0 +1,38 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ReportScheduleStatus(ModelSimple): + """ + Whether the schedule is currently delivering reports (`active`) or paused (`inactive`). + + :param value: Must be one of ["active", "inactive"]. + :type value: str + """ + + allowed_values = { + "active", + "inactive", + } + ACTIVE: ClassVar["ReportScheduleStatus"] + INACTIVE: ClassVar["ReportScheduleStatus"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ReportScheduleStatus.ACTIVE = ReportScheduleStatus("active") +ReportScheduleStatus.INACTIVE = ReportScheduleStatus("inactive") diff --git a/src/datadog_api_client/v2/model/report_schedule_template_variable.py b/src/datadog_api_client/v2/model/report_schedule_template_variable.py new file mode 100644 index 0000000000..1de7d97c57 --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_template_variable.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class ReportScheduleTemplateVariable(ModelNormal): + @cached_property + def openapi_types(_): + return { + "name": (str,), + "values": ([str],), + } + + attribute_map = { + "name": "name", + "values": "values", + } + + def __init__(self_, name: str, values: List[str], **kwargs): + """ + A dashboard template variable applied when rendering the report. + + :param name: The name of the template variable. + :type name: str + + :param values: The selected values for the template variable. + :type values: [str] + """ + super().__init__(kwargs) + + self_.name = name + self_.values = values diff --git a/src/datadog_api_client/v2/model/report_schedule_type.py b/src/datadog_api_client/v2/model/report_schedule_type.py new file mode 100644 index 0000000000..3476892c2e --- /dev/null +++ b/src/datadog_api_client/v2/model/report_schedule_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ReportScheduleType(ModelSimple): + """ + JSON:API resource type for report schedules. + + :param value: If omitted defaults to "schedule". Must be one of ["schedule"]. + :type value: str + """ + + allowed_values = { + "schedule", + } + SCHEDULE: ClassVar["ReportScheduleType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ReportScheduleType.SCHEDULE = ReportScheduleType("schedule") diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_cross_product_sampling.py b/src/datadog_api_client/v2/model/rum_hardcoded_cross_product_sampling.py deleted file mode 100644 index b8e4ad5a06..0000000000 --- a/src/datadog_api_client/v2/model/rum_hardcoded_cross_product_sampling.py +++ /dev/null @@ -1,75 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Union - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -class RumHardcodedCrossProductSampling(ModelNormal): - validations = { - "session_replay_sample_rate": { - "inclusive_maximum": 100, - "inclusive_minimum": 0, - }, - "trace_sample_rate": { - "inclusive_maximum": 100, - "inclusive_minimum": 0, - }, - } - - @cached_property - def openapi_types(_): - return { - "session_replay_enabled": (bool,), - "session_replay_sample_rate": (float,), - "trace_enabled": (bool,), - "trace_sample_rate": (float,), - } - - attribute_map = { - "session_replay_enabled": "session_replay_enabled", - "session_replay_sample_rate": "session_replay_sample_rate", - "trace_enabled": "trace_enabled", - "trace_sample_rate": "trace_sample_rate", - } - - def __init__( - self_, - session_replay_enabled: Union[bool, UnsetType] = unset, - session_replay_sample_rate: Union[float, UnsetType] = unset, - trace_enabled: Union[bool, UnsetType] = unset, - trace_sample_rate: Union[float, UnsetType] = unset, - **kwargs, - ): - """ - Cross-product retention settings for a hardcoded retention filter. - - :param session_replay_enabled: Indicates whether Session Replay cross-product retention is active. - :type session_replay_enabled: bool, optional - - :param session_replay_sample_rate: Percentage (0–100) of retained sessions with an ingested replay whose replay data is kept. - :type session_replay_sample_rate: float, optional - - :param trace_enabled: Indicates whether Trace cross-product retention is active. - :type trace_enabled: bool, optional - - :param trace_sample_rate: Percentage (0–100) of retained sessions with ingested traces whose traces are indexed. - :type trace_sample_rate: float, optional - """ - if session_replay_enabled is not unset: - kwargs["session_replay_enabled"] = session_replay_enabled - if session_replay_sample_rate is not unset: - kwargs["session_replay_sample_rate"] = session_replay_sample_rate - if trace_enabled is not unset: - kwargs["trace_enabled"] = trace_enabled - if trace_sample_rate is not unset: - kwargs["trace_sample_rate"] = trace_sample_rate - super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_cross_product_sampling_editability.py b/src/datadog_api_client/v2/model/rum_hardcoded_cross_product_sampling_editability.py deleted file mode 100644 index 3f0afdaf3b..0000000000 --- a/src/datadog_api_client/v2/model/rum_hardcoded_cross_product_sampling_editability.py +++ /dev/null @@ -1,48 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Union - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -class RumHardcodedCrossProductSamplingEditability(ModelNormal): - @cached_property - def openapi_types(_): - return { - "session_replay_sample_rate": (bool,), - "trace_sample_rate": (bool,), - } - - attribute_map = { - "session_replay_sample_rate": "session_replay_sample_rate", - "trace_sample_rate": "trace_sample_rate", - } - - def __init__( - self_, - session_replay_sample_rate: Union[bool, UnsetType] = unset, - trace_sample_rate: Union[bool, UnsetType] = unset, - **kwargs, - ): - """ - Flags indicating which ``cross_product_sampling`` fields can be updated. Read-only. - - :param session_replay_sample_rate: If ``true`` , ``cross_product_sampling.session_replay_sample_rate`` can be updated on this filter. - :type session_replay_sample_rate: bool, optional - - :param trace_sample_rate: If ``true`` , ``cross_product_sampling.trace_sample_rate`` can be updated on this filter. - :type trace_sample_rate: bool, optional - """ - if session_replay_sample_rate is not unset: - kwargs["session_replay_sample_rate"] = session_replay_sample_rate - if trace_sample_rate is not unset: - kwargs["trace_sample_rate"] = trace_sample_rate - super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_cross_product_sampling_update.py b/src/datadog_api_client/v2/model/rum_hardcoded_cross_product_sampling_update.py deleted file mode 100644 index 680ae7f33f..0000000000 --- a/src/datadog_api_client/v2/model/rum_hardcoded_cross_product_sampling_update.py +++ /dev/null @@ -1,78 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Union - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -class RumHardcodedCrossProductSamplingUpdate(ModelNormal): - validations = { - "session_replay_sample_rate": { - "inclusive_maximum": 100, - "inclusive_minimum": 0, - }, - "trace_sample_rate": { - "inclusive_maximum": 100, - "inclusive_minimum": 0, - }, - } - - @cached_property - def openapi_types(_): - return { - "session_replay_enabled": (bool,), - "session_replay_sample_rate": (float,), - "trace_enabled": (bool,), - "trace_sample_rate": (float,), - } - - attribute_map = { - "session_replay_enabled": "session_replay_enabled", - "session_replay_sample_rate": "session_replay_sample_rate", - "trace_enabled": "trace_enabled", - "trace_sample_rate": "trace_sample_rate", - } - - def __init__( - self_, - session_replay_enabled: Union[bool, UnsetType] = unset, - session_replay_sample_rate: Union[float, UnsetType] = unset, - trace_enabled: Union[bool, UnsetType] = unset, - trace_sample_rate: Union[float, UnsetType] = unset, - **kwargs, - ): - """ - Partial update for cross-product retention of a hardcoded retention filter. - Only fields whose matching flag in ``cross_product_sampling_editability`` is ``true`` can be updated. - - :param session_replay_enabled: Controls whether Session Replay cross-product retention is active. Omit to leave unchanged. - :type session_replay_enabled: bool, optional - - :param session_replay_sample_rate: Percentage (0–100) of retained sessions with an ingested replay whose replay data is kept. - Omit to leave unchanged. - :type session_replay_sample_rate: float, optional - - :param trace_enabled: Controls whether Trace cross-product retention is active. Omit to leave unchanged. - :type trace_enabled: bool, optional - - :param trace_sample_rate: Percentage (0–100) of retained sessions with ingested traces whose traces are indexed. - Omit to leave unchanged. - :type trace_sample_rate: float, optional - """ - if session_replay_enabled is not unset: - kwargs["session_replay_enabled"] = session_replay_enabled - if session_replay_sample_rate is not unset: - kwargs["session_replay_sample_rate"] = session_replay_sample_rate - if trace_enabled is not unset: - kwargs["trace_enabled"] = trace_enabled - if trace_sample_rate is not unset: - kwargs["trace_sample_rate"] = trace_sample_rate - super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_attributes.py b/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_attributes.py deleted file mode 100644 index f1474f2357..0000000000 --- a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_attributes.py +++ /dev/null @@ -1,113 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.rum_hardcoded_cross_product_sampling import RumHardcodedCrossProductSampling - from datadog_api_client.v2.model.rum_hardcoded_cross_product_sampling_editability import ( - RumHardcodedCrossProductSamplingEditability, - ) - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_event_type import ( - RumHardcodedRetentionFilterEventType, - ) - - -class RumHardcodedRetentionFilterAttributes(ModelNormal): - validations = { - "sample_rate": { - "inclusive_maximum": 100, - "inclusive_minimum": 0, - }, - } - - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.rum_hardcoded_cross_product_sampling import RumHardcodedCrossProductSampling - from datadog_api_client.v2.model.rum_hardcoded_cross_product_sampling_editability import ( - RumHardcodedCrossProductSamplingEditability, - ) - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_event_type import ( - RumHardcodedRetentionFilterEventType, - ) - - return { - "cross_product_sampling": (RumHardcodedCrossProductSampling,), - "cross_product_sampling_editability": (RumHardcodedCrossProductSamplingEditability,), - "enabled": (bool,), - "event_type": (RumHardcodedRetentionFilterEventType,), - "name": (str,), - "query": (str,), - "sample_rate": (float,), - } - - attribute_map = { - "cross_product_sampling": "cross_product_sampling", - "cross_product_sampling_editability": "cross_product_sampling_editability", - "enabled": "enabled", - "event_type": "event_type", - "name": "name", - "query": "query", - "sample_rate": "sample_rate", - } - - def __init__( - self_, - cross_product_sampling: Union[RumHardcodedCrossProductSampling, UnsetType] = unset, - cross_product_sampling_editability: Union[RumHardcodedCrossProductSamplingEditability, UnsetType] = unset, - enabled: Union[bool, UnsetType] = unset, - event_type: Union[RumHardcodedRetentionFilterEventType, UnsetType] = unset, - name: Union[str, UnsetType] = unset, - query: Union[str, UnsetType] = unset, - sample_rate: Union[float, UnsetType] = unset, - **kwargs, - ): - """ - The attributes of a hardcoded retention filter. - - :param cross_product_sampling: Cross-product retention settings for a hardcoded retention filter. - :type cross_product_sampling: RumHardcodedCrossProductSampling, optional - - :param cross_product_sampling_editability: Flags indicating which ``cross_product_sampling`` fields can be updated. Read-only. - :type cross_product_sampling_editability: RumHardcodedCrossProductSamplingEditability, optional - - :param enabled: Indicates whether the hardcoded retention filter is active. Read-only. - :type enabled: bool, optional - - :param event_type: The type of RUM events the hardcoded filter applies to. Read-only. - :type event_type: RumHardcodedRetentionFilterEventType, optional - - :param name: The name of the hardcoded retention filter. Read-only. - :type name: str, optional - - :param query: The query string for the hardcoded retention filter. Read-only. - :type query: str, optional - - :param sample_rate: The retention sample rate (0–100) for the hardcoded filter. Read-only. - :type sample_rate: float, optional - """ - if cross_product_sampling is not unset: - kwargs["cross_product_sampling"] = cross_product_sampling - if cross_product_sampling_editability is not unset: - kwargs["cross_product_sampling_editability"] = cross_product_sampling_editability - if enabled is not unset: - kwargs["enabled"] = enabled - if event_type is not unset: - kwargs["event_type"] = event_type - if name is not unset: - kwargs["name"] = name - if query is not unset: - kwargs["query"] = query - if sample_rate is not unset: - kwargs["sample_rate"] = sample_rate - super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_data.py b/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_data.py deleted file mode 100644 index 1af6575e70..0000000000 --- a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_data.py +++ /dev/null @@ -1,78 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_attributes import ( - RumHardcodedRetentionFilterAttributes, - ) - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_meta import RumHardcodedRetentionFilterMeta - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_type import RumHardcodedRetentionFilterType - - -class RumHardcodedRetentionFilterData(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_attributes import ( - RumHardcodedRetentionFilterAttributes, - ) - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_meta import RumHardcodedRetentionFilterMeta - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_type import RumHardcodedRetentionFilterType - - return { - "attributes": (RumHardcodedRetentionFilterAttributes,), - "id": (str,), - "meta": (RumHardcodedRetentionFilterMeta,), - "type": (RumHardcodedRetentionFilterType,), - } - - attribute_map = { - "attributes": "attributes", - "id": "id", - "meta": "meta", - "type": "type", - } - - def __init__( - self_, - attributes: Union[RumHardcodedRetentionFilterAttributes, UnsetType] = unset, - id: Union[str, UnsetType] = unset, - meta: Union[RumHardcodedRetentionFilterMeta, UnsetType] = unset, - type: Union[RumHardcodedRetentionFilterType, UnsetType] = unset, - **kwargs, - ): - """ - A hardcoded retention filter. - - :param attributes: The attributes of a hardcoded retention filter. - :type attributes: RumHardcodedRetentionFilterAttributes, optional - - :param id: The ID of the hardcoded retention filter. - :type id: str, optional - - :param meta: Metadata about the hardcoded retention filter. - :type meta: RumHardcodedRetentionFilterMeta, optional - - :param type: The resource type. The value must be ``hardcoded_retention_filters``. - :type type: RumHardcodedRetentionFilterType, optional - """ - if attributes is not unset: - kwargs["attributes"] = attributes - if id is not unset: - kwargs["id"] = id - if meta is not unset: - kwargs["meta"] = meta - if type is not unset: - kwargs["type"] = type - super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_event_type.py b/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_event_type.py deleted file mode 100644 index abc2ee2f43..0000000000 --- a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_event_type.py +++ /dev/null @@ -1,53 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - - -from datadog_api_client.model_utils import ( - ModelSimple, - cached_property, -) - -from typing import ClassVar - - -class RumHardcodedRetentionFilterEventType(ModelSimple): - """ - The type of RUM events the hardcoded filter applies to. Read-only. - - :param value: Must be one of ["session", "view", "action", "error", "resource", "long_task", "vital"]. - :type value: str - """ - - allowed_values = { - "session", - "view", - "action", - "error", - "resource", - "long_task", - "vital", - } - SESSION: ClassVar["RumHardcodedRetentionFilterEventType"] - VIEW: ClassVar["RumHardcodedRetentionFilterEventType"] - ACTION: ClassVar["RumHardcodedRetentionFilterEventType"] - ERROR: ClassVar["RumHardcodedRetentionFilterEventType"] - RESOURCE: ClassVar["RumHardcodedRetentionFilterEventType"] - LONG_TASK: ClassVar["RumHardcodedRetentionFilterEventType"] - VITAL: ClassVar["RumHardcodedRetentionFilterEventType"] - - @cached_property - def openapi_types(_): - return { - "value": (str,), - } - - -RumHardcodedRetentionFilterEventType.SESSION = RumHardcodedRetentionFilterEventType("session") -RumHardcodedRetentionFilterEventType.VIEW = RumHardcodedRetentionFilterEventType("view") -RumHardcodedRetentionFilterEventType.ACTION = RumHardcodedRetentionFilterEventType("action") -RumHardcodedRetentionFilterEventType.ERROR = RumHardcodedRetentionFilterEventType("error") -RumHardcodedRetentionFilterEventType.RESOURCE = RumHardcodedRetentionFilterEventType("resource") -RumHardcodedRetentionFilterEventType.LONG_TASK = RumHardcodedRetentionFilterEventType("long_task") -RumHardcodedRetentionFilterEventType.VITAL = RumHardcodedRetentionFilterEventType("vital") diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_meta.py b/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_meta.py deleted file mode 100644 index 7b90351a50..0000000000 --- a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_meta.py +++ /dev/null @@ -1,66 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_meta_source import ( - RumHardcodedRetentionFilterMetaSource, - ) - - -class RumHardcodedRetentionFilterMeta(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_meta_source import ( - RumHardcodedRetentionFilterMetaSource, - ) - - return { - "source": (RumHardcodedRetentionFilterMetaSource,), - "updated_at": (int,), - "updated_by_handle": (str,), - } - - attribute_map = { - "source": "source", - "updated_at": "updated_at", - "updated_by_handle": "updated_by_handle", - } - - def __init__( - self_, - source: Union[RumHardcodedRetentionFilterMetaSource, UnsetType] = unset, - updated_at: Union[int, UnsetType] = unset, - updated_by_handle: Union[str, UnsetType] = unset, - **kwargs, - ): - """ - Metadata about the hardcoded retention filter. - - :param source: The source of the last update to a hardcoded retention filter. - :type source: RumHardcodedRetentionFilterMetaSource, optional - - :param updated_at: Unix epoch (in milliseconds) of the last update. - :type updated_at: int, optional - - :param updated_by_handle: Handle of the user who last updated the filter. - :type updated_by_handle: str, optional - """ - if source is not unset: - kwargs["source"] = source - if updated_at is not unset: - kwargs["updated_at"] = updated_at - if updated_by_handle is not unset: - kwargs["updated_by_handle"] = updated_by_handle - super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_meta_source.py b/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_meta_source.py deleted file mode 100644 index 5d16968853..0000000000 --- a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_meta_source.py +++ /dev/null @@ -1,41 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - - -from datadog_api_client.model_utils import ( - ModelSimple, - cached_property, -) - -from typing import ClassVar - - -class RumHardcodedRetentionFilterMetaSource(ModelSimple): - """ - The source of the last update to a hardcoded retention filter. - - :param value: Must be one of ["default", "ui", "terraform"]. - :type value: str - """ - - allowed_values = { - "default", - "ui", - "terraform", - } - DEFAULT: ClassVar["RumHardcodedRetentionFilterMetaSource"] - UI: ClassVar["RumHardcodedRetentionFilterMetaSource"] - TERRAFORM: ClassVar["RumHardcodedRetentionFilterMetaSource"] - - @cached_property - def openapi_types(_): - return { - "value": (str,), - } - - -RumHardcodedRetentionFilterMetaSource.DEFAULT = RumHardcodedRetentionFilterMetaSource("default") -RumHardcodedRetentionFilterMetaSource.UI = RumHardcodedRetentionFilterMetaSource("ui") -RumHardcodedRetentionFilterMetaSource.TERRAFORM = RumHardcodedRetentionFilterMetaSource("terraform") diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_update_attributes.py b/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_update_attributes.py deleted file mode 100644 index 5aca054b30..0000000000 --- a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_update_attributes.py +++ /dev/null @@ -1,50 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import Union, TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, - unset, - UnsetType, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.rum_hardcoded_cross_product_sampling_update import ( - RumHardcodedCrossProductSamplingUpdate, - ) - - -class RumHardcodedRetentionFilterUpdateAttributes(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.rum_hardcoded_cross_product_sampling_update import ( - RumHardcodedCrossProductSamplingUpdate, - ) - - return { - "cross_product_sampling": (RumHardcodedCrossProductSamplingUpdate,), - } - - attribute_map = { - "cross_product_sampling": "cross_product_sampling", - } - - def __init__( - self_, cross_product_sampling: Union[RumHardcodedCrossProductSamplingUpdate, UnsetType] = unset, **kwargs - ): - """ - The attributes of a hardcoded retention filter that can be updated. - Only fields whose matching flag in ``cross_product_sampling_editability`` is ``true`` can be modified. - - :param cross_product_sampling: Partial update for cross-product retention of a hardcoded retention filter. - Only fields whose matching flag in ``cross_product_sampling_editability`` is ``true`` can be updated. - :type cross_product_sampling: RumHardcodedCrossProductSamplingUpdate, optional - """ - if cross_product_sampling is not unset: - kwargs["cross_product_sampling"] = cross_product_sampling - super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_update_data.py b/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_update_data.py deleted file mode 100644 index db67623f1e..0000000000 --- a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_update_data.py +++ /dev/null @@ -1,65 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_attributes import ( - RumHardcodedRetentionFilterUpdateAttributes, - ) - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_type import RumHardcodedRetentionFilterType - - -class RumHardcodedRetentionFilterUpdateData(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_attributes import ( - RumHardcodedRetentionFilterUpdateAttributes, - ) - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_type import RumHardcodedRetentionFilterType - - return { - "attributes": (RumHardcodedRetentionFilterUpdateAttributes,), - "id": (str,), - "type": (RumHardcodedRetentionFilterType,), - } - - attribute_map = { - "attributes": "attributes", - "id": "id", - "type": "type", - } - - def __init__( - self_, - attributes: RumHardcodedRetentionFilterUpdateAttributes, - id: str, - type: RumHardcodedRetentionFilterType, - **kwargs, - ): - """ - The hardcoded retention filter properties to update. - - :param attributes: The attributes of a hardcoded retention filter that can be updated. - Only fields whose matching flag in ``cross_product_sampling_editability`` is ``true`` can be modified. - :type attributes: RumHardcodedRetentionFilterUpdateAttributes - - :param id: The ID of the hardcoded retention filter. Must match the ``rf_id`` path parameter. - :type id: str - - :param type: The resource type. The value must be ``hardcoded_retention_filters``. - :type type: RumHardcodedRetentionFilterType - """ - super().__init__(kwargs) - - self_.attributes = attributes - self_.id = id - self_.type = type diff --git a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_update_request.py b/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_update_request.py deleted file mode 100644 index e562703a6a..0000000000 --- a/src/datadog_api_client/v2/model/rum_hardcoded_retention_filter_update_request.py +++ /dev/null @@ -1,44 +0,0 @@ -# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. -# This product includes software developed at Datadog (https://www.datadoghq.com/). -# Copyright 2019-Present Datadog, Inc. -from __future__ import annotations - -from typing import TYPE_CHECKING - -from datadog_api_client.model_utils import ( - ModelNormal, - cached_property, -) - - -if TYPE_CHECKING: - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_data import ( - RumHardcodedRetentionFilterUpdateData, - ) - - -class RumHardcodedRetentionFilterUpdateRequest(ModelNormal): - @cached_property - def openapi_types(_): - from datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_data import ( - RumHardcodedRetentionFilterUpdateData, - ) - - return { - "data": (RumHardcodedRetentionFilterUpdateData,), - } - - attribute_map = { - "data": "data", - } - - def __init__(self_, data: RumHardcodedRetentionFilterUpdateData, **kwargs): - """ - The hardcoded retention filter body to update. - - :param data: The hardcoded retention filter properties to update. - :type data: RumHardcodedRetentionFilterUpdateData - """ - super().__init__(kwargs) - - self_.data = data diff --git a/src/datadog_api_client/v2/model/rum_rate_limit_adaptive_config.py b/src/datadog_api_client/v2/model/rum_rate_limit_adaptive_config.py new file mode 100644 index 0000000000..7215246800 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_rate_limit_adaptive_config.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class RumRateLimitAdaptiveConfig(ModelNormal): + validations = { + "max_retention_rate": { + "inclusive_maximum": 1, + "exclusive_minimum": 0, + }, + } + + @cached_property + def openapi_types(_): + return { + "max_retention_rate": (float,), + } + + attribute_map = { + "max_retention_rate": "max_retention_rate", + } + + def __init__(self_, max_retention_rate: float, **kwargs): + """ + The configuration used when ``mode`` is ``adaptive``. + + :param max_retention_rate: The maximum fraction of sessions to retain, in the range ``(0, 1]``. + :type max_retention_rate: float + """ + super().__init__(kwargs) + + self_.max_retention_rate = max_retention_rate diff --git a/src/datadog_api_client/v2/model/rum_rate_limit_config_attributes.py b/src/datadog_api_client/v2/model/rum_rate_limit_config_attributes.py new file mode 100644 index 0000000000..41a415c4fe --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_rate_limit_config_attributes.py @@ -0,0 +1,90 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_rate_limit_adaptive_config import RumRateLimitAdaptiveConfig + from datadog_api_client.v2.model.rum_rate_limit_custom_config import RumRateLimitCustomConfig + from datadog_api_client.v2.model.rum_rate_limit_mode import RumRateLimitMode + + +class RumRateLimitConfigAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_rate_limit_adaptive_config import RumRateLimitAdaptiveConfig + from datadog_api_client.v2.model.rum_rate_limit_custom_config import RumRateLimitCustomConfig + from datadog_api_client.v2.model.rum_rate_limit_mode import RumRateLimitMode + + return { + "adaptive": (RumRateLimitAdaptiveConfig,), + "custom": (RumRateLimitCustomConfig,), + "mode": (RumRateLimitMode,), + "org_id": (int,), + "updated_at": (str,), + "updated_by": (str,), + } + + attribute_map = { + "adaptive": "adaptive", + "custom": "custom", + "mode": "mode", + "org_id": "org_id", + "updated_at": "updated_at", + "updated_by": "updated_by", + } + + def __init__( + self_, + mode: RumRateLimitMode, + org_id: int, + adaptive: Union[RumRateLimitAdaptiveConfig, UnsetType] = unset, + custom: Union[RumRateLimitCustomConfig, UnsetType] = unset, + updated_at: Union[str, UnsetType] = unset, + updated_by: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + The RUM rate limit configuration properties. + + :param adaptive: The configuration used when ``mode`` is ``adaptive``. + :type adaptive: RumRateLimitAdaptiveConfig, optional + + :param custom: The configuration used when ``mode`` is ``custom``. + :type custom: RumRateLimitCustomConfig, optional + + :param mode: The rate limit mode. ``custom`` enforces a fixed session limit, while + ``adaptive`` dynamically adjusts retention. + :type mode: RumRateLimitMode + + :param org_id: The ID of the organization the rate limit configuration belongs to. + :type org_id: int + + :param updated_at: The date the rate limit configuration was last updated. + :type updated_at: str, optional + + :param updated_by: The handle of the user who last updated the rate limit configuration. + :type updated_by: str, optional + """ + if adaptive is not unset: + kwargs["adaptive"] = adaptive + if custom is not unset: + kwargs["custom"] = custom + if updated_at is not unset: + kwargs["updated_at"] = updated_at + if updated_by is not unset: + kwargs["updated_by"] = updated_by + super().__init__(kwargs) + + self_.mode = mode + self_.org_id = org_id diff --git a/src/datadog_api_client/v2/model/rum_rate_limit_config_data.py b/src/datadog_api_client/v2/model/rum_rate_limit_config_data.py new file mode 100644 index 0000000000..d57ee1f548 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_rate_limit_config_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_rate_limit_config_attributes import RumRateLimitConfigAttributes + from datadog_api_client.v2.model.rum_rate_limit_config_type import RumRateLimitConfigType + + +class RumRateLimitConfigData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_rate_limit_config_attributes import RumRateLimitConfigAttributes + from datadog_api_client.v2.model.rum_rate_limit_config_type import RumRateLimitConfigType + + return { + "attributes": (RumRateLimitConfigAttributes,), + "id": (str,), + "type": (RumRateLimitConfigType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: RumRateLimitConfigAttributes, id: str, type: RumRateLimitConfigType, **kwargs): + """ + The RUM rate limit configuration object. + + :param attributes: The RUM rate limit configuration properties. + :type attributes: RumRateLimitConfigAttributes + + :param id: The identifier of the scope the rate limit configuration applies to. + :type id: str + + :param type: The type of the resource, always ``rum_rate_limit_config``. + :type type: RumRateLimitConfigType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/rum_rate_limit_config_response.py b/src/datadog_api_client/v2/model/rum_rate_limit_config_response.py new file mode 100644 index 0000000000..9ab5a38e71 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_rate_limit_config_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_rate_limit_config_data import RumRateLimitConfigData + + +class RumRateLimitConfigResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_rate_limit_config_data import RumRateLimitConfigData + + return { + "data": (RumRateLimitConfigData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: RumRateLimitConfigData, **kwargs): + """ + The RUM rate limit configuration response. + + :param data: The RUM rate limit configuration object. + :type data: RumRateLimitConfigData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/rum_rate_limit_config_type.py b/src/datadog_api_client/v2/model/rum_rate_limit_config_type.py new file mode 100644 index 0000000000..be60502c53 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_rate_limit_config_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class RumRateLimitConfigType(ModelSimple): + """ + The type of the resource, always `rum_rate_limit_config`. + + :param value: If omitted defaults to "rum_rate_limit_config". Must be one of ["rum_rate_limit_config"]. + :type value: str + """ + + allowed_values = { + "rum_rate_limit_config", + } + RUM_RATE_LIMIT_CONFIG: ClassVar["RumRateLimitConfigType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +RumRateLimitConfigType.RUM_RATE_LIMIT_CONFIG = RumRateLimitConfigType("rum_rate_limit_config") diff --git a/src/datadog_api_client/v2/model/rum_rate_limit_config_update_attributes.py b/src/datadog_api_client/v2/model/rum_rate_limit_config_update_attributes.py new file mode 100644 index 0000000000..159fbe55f6 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_rate_limit_config_update_attributes.py @@ -0,0 +1,67 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_rate_limit_adaptive_config import RumRateLimitAdaptiveConfig + from datadog_api_client.v2.model.rum_rate_limit_custom_config import RumRateLimitCustomConfig + from datadog_api_client.v2.model.rum_rate_limit_mode import RumRateLimitMode + + +class RumRateLimitConfigUpdateAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_rate_limit_adaptive_config import RumRateLimitAdaptiveConfig + from datadog_api_client.v2.model.rum_rate_limit_custom_config import RumRateLimitCustomConfig + from datadog_api_client.v2.model.rum_rate_limit_mode import RumRateLimitMode + + return { + "adaptive": (RumRateLimitAdaptiveConfig,), + "custom": (RumRateLimitCustomConfig,), + "mode": (RumRateLimitMode,), + } + + attribute_map = { + "adaptive": "adaptive", + "custom": "custom", + "mode": "mode", + } + + def __init__( + self_, + mode: RumRateLimitMode, + adaptive: Union[RumRateLimitAdaptiveConfig, UnsetType] = unset, + custom: Union[RumRateLimitCustomConfig, UnsetType] = unset, + **kwargs, + ): + """ + The RUM rate limit configuration properties to create or update. + + :param adaptive: The configuration used when ``mode`` is ``adaptive``. + :type adaptive: RumRateLimitAdaptiveConfig, optional + + :param custom: The configuration used when ``mode`` is ``custom``. + :type custom: RumRateLimitCustomConfig, optional + + :param mode: The rate limit mode. ``custom`` enforces a fixed session limit, while + ``adaptive`` dynamically adjusts retention. + :type mode: RumRateLimitMode + """ + if adaptive is not unset: + kwargs["adaptive"] = adaptive + if custom is not unset: + kwargs["custom"] = custom + super().__init__(kwargs) + + self_.mode = mode diff --git a/src/datadog_api_client/v2/model/rum_rate_limit_config_update_data.py b/src/datadog_api_client/v2/model/rum_rate_limit_config_update_data.py new file mode 100644 index 0000000000..2adbc841e2 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_rate_limit_config_update_data.py @@ -0,0 +1,59 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_rate_limit_config_update_attributes import RumRateLimitConfigUpdateAttributes + from datadog_api_client.v2.model.rum_rate_limit_config_type import RumRateLimitConfigType + + +class RumRateLimitConfigUpdateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_rate_limit_config_update_attributes import ( + RumRateLimitConfigUpdateAttributes, + ) + from datadog_api_client.v2.model.rum_rate_limit_config_type import RumRateLimitConfigType + + return { + "attributes": (RumRateLimitConfigUpdateAttributes,), + "id": (str,), + "type": (RumRateLimitConfigType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, attributes: RumRateLimitConfigUpdateAttributes, id: str, type: RumRateLimitConfigType, **kwargs + ): + """ + The RUM rate limit configuration to create or update. + + :param attributes: The RUM rate limit configuration properties to create or update. + :type attributes: RumRateLimitConfigUpdateAttributes + + :param id: The identifier of the scope the rate limit configuration applies to. + Must match ``scope_id`` in the path. + :type id: str + + :param type: The type of the resource, always ``rum_rate_limit_config``. + :type type: RumRateLimitConfigType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/rum_rate_limit_config_update_request.py b/src/datadog_api_client/v2/model/rum_rate_limit_config_update_request.py new file mode 100644 index 0000000000..6ccf869a0e --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_rate_limit_config_update_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_rate_limit_config_update_data import RumRateLimitConfigUpdateData + + +class RumRateLimitConfigUpdateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_rate_limit_config_update_data import RumRateLimitConfigUpdateData + + return { + "data": (RumRateLimitConfigUpdateData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: RumRateLimitConfigUpdateData, **kwargs): + """ + The body of a request to create or update a RUM rate limit configuration. + + :param data: The RUM rate limit configuration to create or update. + :type data: RumRateLimitConfigUpdateData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/rum_rate_limit_custom_config.py b/src/datadog_api_client/v2/model/rum_rate_limit_custom_config.py new file mode 100644 index 0000000000..8e888415f1 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_rate_limit_custom_config.py @@ -0,0 +1,82 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.rum_rate_limit_quota_reached_action import RumRateLimitQuotaReachedAction + from datadog_api_client.v2.model.rum_rate_limit_window_type import RumRateLimitWindowType + + +class RumRateLimitCustomConfig(ModelNormal): + validations = { + "daily_reset_time": {}, + "daily_reset_timezone": {}, + "session_limit": { + "inclusive_minimum": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.rum_rate_limit_quota_reached_action import RumRateLimitQuotaReachedAction + from datadog_api_client.v2.model.rum_rate_limit_window_type import RumRateLimitWindowType + + return { + "daily_reset_time": (str,), + "daily_reset_timezone": (str,), + "quota_reached_action": (RumRateLimitQuotaReachedAction,), + "session_limit": (int,), + "window_type": (RumRateLimitWindowType,), + } + + attribute_map = { + "daily_reset_time": "daily_reset_time", + "daily_reset_timezone": "daily_reset_timezone", + "quota_reached_action": "quota_reached_action", + "session_limit": "session_limit", + "window_type": "window_type", + } + + def __init__( + self_, + daily_reset_time: str, + daily_reset_timezone: str, + quota_reached_action: RumRateLimitQuotaReachedAction, + session_limit: int, + window_type: RumRateLimitWindowType, + **kwargs, + ): + """ + The configuration used when ``mode`` is ``custom``. + + :param daily_reset_time: The time of day when the daily quota resets, in ``HH:MM`` 24-hour format. + :type daily_reset_time: str + + :param daily_reset_timezone: The timezone offset used for the daily reset time, in ``±HH:MM`` format. + :type daily_reset_timezone: str + + :param quota_reached_action: The action to take when the session quota is reached. + :type quota_reached_action: RumRateLimitQuotaReachedAction + + :param session_limit: The maximum number of sessions allowed within the window. + :type session_limit: int + + :param window_type: The window type over which the session limit is enforced. + :type window_type: RumRateLimitWindowType + """ + super().__init__(kwargs) + + self_.daily_reset_time = daily_reset_time + self_.daily_reset_timezone = daily_reset_timezone + self_.quota_reached_action = quota_reached_action + self_.session_limit = session_limit + self_.window_type = window_type diff --git a/src/datadog_api_client/v2/model/rum_rate_limit_mode.py b/src/datadog_api_client/v2/model/rum_rate_limit_mode.py new file mode 100644 index 0000000000..7e8b051586 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_rate_limit_mode.py @@ -0,0 +1,39 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class RumRateLimitMode(ModelSimple): + """ + The rate limit mode. `custom` enforces a fixed session limit, while + `adaptive` dynamically adjusts retention. + + :param value: Must be one of ["custom", "adaptive"]. + :type value: str + """ + + allowed_values = { + "custom", + "adaptive", + } + CUSTOM: ClassVar["RumRateLimitMode"] + ADAPTIVE: ClassVar["RumRateLimitMode"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +RumRateLimitMode.CUSTOM = RumRateLimitMode("custom") +RumRateLimitMode.ADAPTIVE = RumRateLimitMode("adaptive") diff --git a/src/datadog_api_client/v2/model/rum_rate_limit_quota_reached_action.py b/src/datadog_api_client/v2/model/rum_rate_limit_quota_reached_action.py new file mode 100644 index 0000000000..2500b3df18 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_rate_limit_quota_reached_action.py @@ -0,0 +1,38 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class RumRateLimitQuotaReachedAction(ModelSimple): + """ + The action to take when the session quota is reached. + + :param value: Must be one of ["stop", "slowdown"]. + :type value: str + """ + + allowed_values = { + "stop", + "slowdown", + } + STOP: ClassVar["RumRateLimitQuotaReachedAction"] + SLOWDOWN: ClassVar["RumRateLimitQuotaReachedAction"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +RumRateLimitQuotaReachedAction.STOP = RumRateLimitQuotaReachedAction("stop") +RumRateLimitQuotaReachedAction.SLOWDOWN = RumRateLimitQuotaReachedAction("slowdown") diff --git a/src/datadog_api_client/v2/model/rum_rate_limit_scope_type.py b/src/datadog_api_client/v2/model/rum_rate_limit_scope_type.py new file mode 100644 index 0000000000..48a1f2d1f7 --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_rate_limit_scope_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class RumRateLimitScopeType(ModelSimple): + """ + The type of scope the rate limit configuration applies to. + + :param value: If omitted defaults to "application". Must be one of ["application"]. + :type value: str + """ + + allowed_values = { + "application", + } + APPLICATION: ClassVar["RumRateLimitScopeType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +RumRateLimitScopeType.APPLICATION = RumRateLimitScopeType("application") diff --git a/src/datadog_api_client/v2/model/rum_rate_limit_window_type.py b/src/datadog_api_client/v2/model/rum_rate_limit_window_type.py new file mode 100644 index 0000000000..a3f4e68f5f --- /dev/null +++ b/src/datadog_api_client/v2/model/rum_rate_limit_window_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class RumRateLimitWindowType(ModelSimple): + """ + The window type over which the session limit is enforced. + + :param value: If omitted defaults to "daily". Must be one of ["daily"]. + :type value: str + """ + + allowed_values = { + "daily", + } + DAILY: ClassVar["RumRateLimitWindowType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +RumRateLimitWindowType.DAILY = RumRateLimitWindowType("daily") diff --git a/src/datadog_api_client/v2/model/run_data_observability_monitor_response.py b/src/datadog_api_client/v2/model/run_data_observability_monitor_response.py new file mode 100644 index 0000000000..e03a51b913 --- /dev/null +++ b/src/datadog_api_client/v2/model/run_data_observability_monitor_response.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.run_data_observability_monitor_response_data import ( + RunDataObservabilityMonitorResponseData, + ) + + +class RunDataObservabilityMonitorResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.run_data_observability_monitor_response_data import ( + RunDataObservabilityMonitorResponseData, + ) + + return { + "data": (RunDataObservabilityMonitorResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: RunDataObservabilityMonitorResponseData, **kwargs): + """ + The response returned when a data observability monitor run is triggered. + + :param data: The data object returned when a data observability monitor run is triggered. + :type data: RunDataObservabilityMonitorResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/run_data_observability_monitor_response_data.py b/src/datadog_api_client/v2/model/run_data_observability_monitor_response_data.py new file mode 100644 index 0000000000..b6928eb96f --- /dev/null +++ b/src/datadog_api_client/v2/model/run_data_observability_monitor_response_data.py @@ -0,0 +1,46 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.data_observability_monitor_run_type import DataObservabilityMonitorRunType + + +class RunDataObservabilityMonitorResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.data_observability_monitor_run_type import DataObservabilityMonitorRunType + + return { + "id": (str,), + "type": (DataObservabilityMonitorRunType,), + } + + attribute_map = { + "id": "id", + "type": "type", + } + + def __init__(self_, id: str, type: DataObservabilityMonitorRunType, **kwargs): + """ + The data object returned when a data observability monitor run is triggered. + + :param id: The unique identifier of the monitor run. + :type id: str + + :param type: The JSON:API resource type for a data observability monitor run. + :type type: DataObservabilityMonitorRunType + """ + super().__init__(kwargs) + + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/fleet_cluster_pod_count_by_state.py b/src/datadog_api_client/v2/model/shared_dashboard_global_time.py similarity index 69% rename from src/datadog_api_client/v2/model/fleet_cluster_pod_count_by_state.py rename to src/datadog_api_client/v2/model/shared_dashboard_global_time.py index 49db96f524..a93366f8cb 100644 --- a/src/datadog_api_client/v2/model/fleet_cluster_pod_count_by_state.py +++ b/src/datadog_api_client/v2/model/shared_dashboard_global_time.py @@ -6,17 +6,14 @@ from datadog_api_client.model_utils import ( ModelNormal, - cached_property, ) -class FleetClusterPodCountByState(ModelNormal): - @cached_property - def additional_properties_type(_): - return (int,) +class SharedDashboardGlobalTime(ModelNormal): + _nullable = True def __init__(self_, **kwargs): """ - Pod counts grouped by state. + Default time range configuration for the shared dashboard. """ super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/shared_dashboard_included.py b/src/datadog_api_client/v2/model/shared_dashboard_included.py new file mode 100644 index 0000000000..1dda4f1a70 --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_included.py @@ -0,0 +1,46 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class SharedDashboardIncluded(ModelComposed): + def __init__(self, **kwargs): + """ + Resource included with a shared dashboard. + + :param attributes: Attributes of the included dashboard. + :type attributes: SharedDashboardIncludedDashboardAttributes + + :param id: ID of the dashboard. + :type id: str + + :param type: Included dashboard resource type. + :type type: SharedDashboardIncludedDashboardType + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + from datadog_api_client.v2.model.shared_dashboard_included_dashboard import SharedDashboardIncludedDashboard + from datadog_api_client.v2.model.shared_dashboard_included_user import SharedDashboardIncludedUser + + return { + "oneOf": [ + SharedDashboardIncludedDashboard, + SharedDashboardIncludedUser, + ], + } diff --git a/src/datadog_api_client/v2/model/shared_dashboard_included_dashboard.py b/src/datadog_api_client/v2/model/shared_dashboard_included_dashboard.py new file mode 100644 index 0000000000..f5ee6658ba --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_included_dashboard.py @@ -0,0 +1,68 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.shared_dashboard_included_dashboard_attributes import ( + SharedDashboardIncludedDashboardAttributes, + ) + from datadog_api_client.v2.model.shared_dashboard_included_dashboard_type import ( + SharedDashboardIncludedDashboardType, + ) + + +class SharedDashboardIncludedDashboard(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.shared_dashboard_included_dashboard_attributes import ( + SharedDashboardIncludedDashboardAttributes, + ) + from datadog_api_client.v2.model.shared_dashboard_included_dashboard_type import ( + SharedDashboardIncludedDashboardType, + ) + + return { + "attributes": (SharedDashboardIncludedDashboardAttributes,), + "id": (str,), + "type": (SharedDashboardIncludedDashboardType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: SharedDashboardIncludedDashboardAttributes, + id: str, + type: SharedDashboardIncludedDashboardType, + **kwargs, + ): + """ + Included dashboard resource. + + :param attributes: Attributes of the included dashboard. + :type attributes: SharedDashboardIncludedDashboardAttributes + + :param id: ID of the dashboard. + :type id: str + + :param type: Included dashboard resource type. + :type type: SharedDashboardIncludedDashboardType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/incident_service_create_attributes.py b/src/datadog_api_client/v2/model/shared_dashboard_included_dashboard_attributes.py similarity index 62% rename from src/datadog_api_client/v2/model/incident_service_create_attributes.py rename to src/datadog_api_client/v2/model/shared_dashboard_included_dashboard_attributes.py index d2a960fd32..a0bf39ce72 100644 --- a/src/datadog_api_client/v2/model/incident_service_create_attributes.py +++ b/src/datadog_api_client/v2/model/shared_dashboard_included_dashboard_attributes.py @@ -10,24 +10,24 @@ ) -class IncidentServiceCreateAttributes(ModelNormal): +class SharedDashboardIncludedDashboardAttributes(ModelNormal): @cached_property def openapi_types(_): return { - "name": (str,), + "title": (str,), } attribute_map = { - "name": "name", + "title": "title", } - def __init__(self_, name: str, **kwargs): + def __init__(self_, title: str, **kwargs): """ - The incident service's attributes for a create request. + Attributes of the included dashboard. - :param name: Name of the incident service. - :type name: str + :param title: Dashboard title. + :type title: str """ super().__init__(kwargs) - self_.name = name + self_.title = title diff --git a/src/datadog_api_client/v2/model/shared_dashboard_included_dashboard_type.py b/src/datadog_api_client/v2/model/shared_dashboard_included_dashboard_type.py new file mode 100644 index 0000000000..54be875f05 --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_included_dashboard_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SharedDashboardIncludedDashboardType(ModelSimple): + """ + Included dashboard resource type. + + :param value: If omitted defaults to "dashboard". Must be one of ["dashboard"]. + :type value: str + """ + + allowed_values = { + "dashboard", + } + DASHBOARD: ClassVar["SharedDashboardIncludedDashboardType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SharedDashboardIncludedDashboardType.DASHBOARD = SharedDashboardIncludedDashboardType("dashboard") diff --git a/src/datadog_api_client/v2/model/shared_dashboard_included_user.py b/src/datadog_api_client/v2/model/shared_dashboard_included_user.py new file mode 100644 index 0000000000..b6bc5d8f53 --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_included_user.py @@ -0,0 +1,58 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.shared_dashboard_included_user_attributes import ( + SharedDashboardIncludedUserAttributes, + ) + from datadog_api_client.v2.model.user_resource_type import UserResourceType + + +class SharedDashboardIncludedUser(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.shared_dashboard_included_user_attributes import ( + SharedDashboardIncludedUserAttributes, + ) + from datadog_api_client.v2.model.user_resource_type import UserResourceType + + return { + "attributes": (SharedDashboardIncludedUserAttributes,), + "id": (str,), + "type": (UserResourceType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: SharedDashboardIncludedUserAttributes, id: str, type: UserResourceType, **kwargs): + """ + Included user resource. + + :param attributes: Attributes of the included user. + :type attributes: SharedDashboardIncludedUserAttributes + + :param id: ID of the user. + :type id: str + + :param type: User resource type. + :type type: UserResourceType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/incident_service_update_attributes.py b/src/datadog_api_client/v2/model/shared_dashboard_included_user_attributes.py similarity index 64% rename from src/datadog_api_client/v2/model/incident_service_update_attributes.py rename to src/datadog_api_client/v2/model/shared_dashboard_included_user_attributes.py index b1eb7017e5..2edeb038d3 100644 --- a/src/datadog_api_client/v2/model/incident_service_update_attributes.py +++ b/src/datadog_api_client/v2/model/shared_dashboard_included_user_attributes.py @@ -10,24 +10,30 @@ ) -class IncidentServiceUpdateAttributes(ModelNormal): +class SharedDashboardIncludedUserAttributes(ModelNormal): @cached_property def openapi_types(_): return { + "handle": (str,), "name": (str,), } attribute_map = { + "handle": "handle", "name": "name", } - def __init__(self_, name: str, **kwargs): + def __init__(self_, handle: str, name: str, **kwargs): """ - The incident service's attributes for an update request. + Attributes of the included user. - :param name: Name of the incident service. + :param handle: User handle. + :type handle: str + + :param name: User display name. :type name: str """ super().__init__(kwargs) + self_.handle = handle self_.name = name diff --git a/src/datadog_api_client/v2/model/shared_dashboard_invitee.py b/src/datadog_api_client/v2/model/shared_dashboard_invitee.py new file mode 100644 index 0000000000..b6cfdf1c07 --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_invitee.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, +) + + +class SharedDashboardInvitee(ModelNormal): + @cached_property + def openapi_types(_): + return { + "access_expiration": (datetime, none_type), + "created_at": (datetime,), + "email": (str,), + } + + attribute_map = { + "access_expiration": "access_expiration", + "created_at": "created_at", + "email": "email", + } + + def __init__(self_, access_expiration: Union[datetime, none_type], created_at: datetime, email: str, **kwargs): + """ + Invitee that can access an invite-only shared dashboard. + + :param access_expiration: Time when the invitee's access expires. + :type access_expiration: datetime, none_type + + :param created_at: Time when the invitee was added. + :type created_at: datetime + + :param email: Email address of the invitee. + :type email: str + """ + super().__init__(kwargs) + + self_.access_expiration = access_expiration + self_.created_at = created_at + self_.email = email diff --git a/src/datadog_api_client/v2/model/shared_dashboard_relationship_dashboard.py b/src/datadog_api_client/v2/model/shared_dashboard_relationship_dashboard.py new file mode 100644 index 0000000000..1329048a7b --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_relationship_dashboard.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.shared_dashboard_relationship_dashboard_data import ( + SharedDashboardRelationshipDashboardData, + ) + + +class SharedDashboardRelationshipDashboard(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.shared_dashboard_relationship_dashboard_data import ( + SharedDashboardRelationshipDashboardData, + ) + + return { + "data": (SharedDashboardRelationshipDashboardData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: SharedDashboardRelationshipDashboardData, **kwargs): + """ + Dashboard associated with the shared dashboard. + + :param data: Dashboard relationship data. + :type data: SharedDashboardRelationshipDashboardData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/shared_dashboard_relationship_dashboard_data.py b/src/datadog_api_client/v2/model/shared_dashboard_relationship_dashboard_data.py new file mode 100644 index 0000000000..302078ca5b --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_relationship_dashboard_data.py @@ -0,0 +1,50 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.shared_dashboard_included_dashboard_type import ( + SharedDashboardIncludedDashboardType, + ) + + +class SharedDashboardRelationshipDashboardData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.shared_dashboard_included_dashboard_type import ( + SharedDashboardIncludedDashboardType, + ) + + return { + "id": (str,), + "type": (SharedDashboardIncludedDashboardType,), + } + + attribute_map = { + "id": "id", + "type": "type", + } + + def __init__(self_, id: str, type: SharedDashboardIncludedDashboardType, **kwargs): + """ + Dashboard relationship data. + + :param id: ID of the dashboard. + :type id: str + + :param type: Included dashboard resource type. + :type type: SharedDashboardIncludedDashboardType + """ + super().__init__(kwargs) + + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/shared_dashboard_relationship_sharer.py b/src/datadog_api_client/v2/model/shared_dashboard_relationship_sharer.py new file mode 100644 index 0000000000..c37174855b --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_relationship_sharer.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.user_relationship_data import UserRelationshipData + + +class SharedDashboardRelationshipSharer(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.user_relationship_data import UserRelationshipData + + return { + "data": (UserRelationshipData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: UserRelationshipData, **kwargs): + """ + User who shared the dashboard. + + :param data: Relationship to user object. + :type data: UserRelationshipData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/shared_dashboard_relationships.py b/src/datadog_api_client/v2/model/shared_dashboard_relationships.py new file mode 100644 index 0000000000..c88e78cefe --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_relationships.py @@ -0,0 +1,52 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.shared_dashboard_relationship_dashboard import SharedDashboardRelationshipDashboard + from datadog_api_client.v2.model.shared_dashboard_relationship_sharer import SharedDashboardRelationshipSharer + + +class SharedDashboardRelationships(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.shared_dashboard_relationship_dashboard import ( + SharedDashboardRelationshipDashboard, + ) + from datadog_api_client.v2.model.shared_dashboard_relationship_sharer import SharedDashboardRelationshipSharer + + return { + "dashboard": (SharedDashboardRelationshipDashboard,), + "sharer": (SharedDashboardRelationshipSharer,), + } + + attribute_map = { + "dashboard": "dashboard", + "sharer": "sharer", + } + + def __init__( + self_, dashboard: SharedDashboardRelationshipDashboard, sharer: SharedDashboardRelationshipSharer, **kwargs + ): + """ + Relationships of a shared dashboard. + + :param dashboard: Dashboard associated with the shared dashboard. + :type dashboard: SharedDashboardRelationshipDashboard + + :param sharer: User who shared the dashboard. + :type sharer: SharedDashboardRelationshipSharer + """ + super().__init__(kwargs) + + self_.dashboard = dashboard + self_.sharer = sharer diff --git a/src/datadog_api_client/v2/model/shared_dashboard_response.py b/src/datadog_api_client/v2/model/shared_dashboard_response.py new file mode 100644 index 0000000000..8e0425d5e9 --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_response.py @@ -0,0 +1,69 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.shared_dashboard_response_attributes import SharedDashboardResponseAttributes + from datadog_api_client.v2.model.shared_dashboard_relationships import SharedDashboardRelationships + from datadog_api_client.v2.model.shared_dashboard_type import SharedDashboardType + + +class SharedDashboardResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.shared_dashboard_response_attributes import SharedDashboardResponseAttributes + from datadog_api_client.v2.model.shared_dashboard_relationships import SharedDashboardRelationships + from datadog_api_client.v2.model.shared_dashboard_type import SharedDashboardType + + return { + "attributes": (SharedDashboardResponseAttributes,), + "id": (str,), + "relationships": (SharedDashboardRelationships,), + "type": (SharedDashboardType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "relationships": "relationships", + "type": "type", + } + + def __init__( + self_, + attributes: SharedDashboardResponseAttributes, + id: str, + relationships: SharedDashboardRelationships, + type: SharedDashboardType, + **kwargs, + ): + """ + A shared dashboard response resource. + + :param attributes: Attributes of a shared dashboard response. + :type attributes: SharedDashboardResponseAttributes + + :param id: ID of the shared dashboard. + :type id: str + + :param relationships: Relationships of a shared dashboard. + :type relationships: SharedDashboardRelationships + + :param type: Shared dashboard resource type. + :type type: SharedDashboardType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.relationships = relationships + self_.type = type diff --git a/src/datadog_api_client/v2/model/shared_dashboard_response_attributes.py b/src/datadog_api_client/v2/model/shared_dashboard_response_attributes.py new file mode 100644 index 0000000000..b9d77251de --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_response_attributes.py @@ -0,0 +1,158 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.shared_dashboard_global_time import SharedDashboardGlobalTime + from datadog_api_client.v2.model.shared_dashboard_invitee import SharedDashboardInvitee + from datadog_api_client.v2.model.shared_dashboard_selectable_template_variable import ( + SharedDashboardSelectableTemplateVariable, + ) + from datadog_api_client.v2.model.shared_dashboard_share_type import SharedDashboardShareType + from datadog_api_client.v2.model.shared_dashboard_status import SharedDashboardStatus + from datadog_api_client.v2.model.shared_dashboard_viewing_preferences import SharedDashboardViewingPreferences + + +class SharedDashboardResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.shared_dashboard_global_time import SharedDashboardGlobalTime + from datadog_api_client.v2.model.shared_dashboard_invitee import SharedDashboardInvitee + from datadog_api_client.v2.model.shared_dashboard_selectable_template_variable import ( + SharedDashboardSelectableTemplateVariable, + ) + from datadog_api_client.v2.model.shared_dashboard_share_type import SharedDashboardShareType + from datadog_api_client.v2.model.shared_dashboard_status import SharedDashboardStatus + from datadog_api_client.v2.model.shared_dashboard_viewing_preferences import SharedDashboardViewingPreferences + + return { + "created_at": (datetime,), + "embeddable_domains": ([str],), + "expiration": (datetime, none_type), + "global_time": (SharedDashboardGlobalTime,), + "global_time_selectable": (bool,), + "invitees": ([SharedDashboardInvitee],), + "last_accessed": (datetime, none_type), + "selectable_template_vars": ([SharedDashboardSelectableTemplateVariable],), + "share_type": (SharedDashboardShareType,), + "sharer_disabled": (bool,), + "status": (SharedDashboardStatus,), + "title": (str,), + "token": (str,), + "url": (str,), + "viewing_preferences": (SharedDashboardViewingPreferences,), + } + + attribute_map = { + "created_at": "created_at", + "embeddable_domains": "embeddable_domains", + "expiration": "expiration", + "global_time": "global_time", + "global_time_selectable": "global_time_selectable", + "invitees": "invitees", + "last_accessed": "last_accessed", + "selectable_template_vars": "selectable_template_vars", + "share_type": "share_type", + "sharer_disabled": "sharer_disabled", + "status": "status", + "title": "title", + "token": "token", + "url": "url", + "viewing_preferences": "viewing_preferences", + } + + def __init__( + self_, + created_at: datetime, + embeddable_domains: List[str], + expiration: Union[datetime, none_type], + global_time: Union[SharedDashboardGlobalTime, none_type], + global_time_selectable: bool, + invitees: List[SharedDashboardInvitee], + last_accessed: Union[datetime, none_type], + selectable_template_vars: List[SharedDashboardSelectableTemplateVariable], + share_type: SharedDashboardShareType, + sharer_disabled: bool, + status: SharedDashboardStatus, + title: str, + token: str, + url: str, + viewing_preferences: SharedDashboardViewingPreferences, + **kwargs, + ): + """ + Attributes of a shared dashboard response. + + :param created_at: Time when the shared dashboard was created. + :type created_at: datetime + + :param embeddable_domains: Domains where embed-type shared dashboards can be embedded. + :type embeddable_domains: [str] + + :param expiration: Time when the shared dashboard expires. + :type expiration: datetime, none_type + + :param global_time: Default time range configuration for the shared dashboard. + :type global_time: SharedDashboardGlobalTime, none_type + + :param global_time_selectable: Whether viewers can select a different global time setting. + :type global_time_selectable: bool + + :param invitees: Invitees for invite-only shared dashboards. + :type invitees: [SharedDashboardInvitee] + + :param last_accessed: Time when the shared dashboard was last accessed. + :type last_accessed: datetime, none_type + + :param selectable_template_vars: Template variables that viewers can modify. + :type selectable_template_vars: [SharedDashboardSelectableTemplateVariable] + + :param share_type: Type of dashboard sharing. + :type share_type: SharedDashboardShareType + + :param sharer_disabled: Whether the user who shared the dashboard is disabled. + :type sharer_disabled: bool + + :param status: Status of the shared dashboard. + :type status: SharedDashboardStatus + + :param title: Display title for the shared dashboard. + :type title: str + + :param token: Token assigned to the shared dashboard. + :type token: str + + :param url: URL for the shared dashboard. + :type url: str + + :param viewing_preferences: Display settings for the shared dashboard. + :type viewing_preferences: SharedDashboardViewingPreferences + """ + super().__init__(kwargs) + + self_.created_at = created_at + self_.embeddable_domains = embeddable_domains + self_.expiration = expiration + self_.global_time = global_time + self_.global_time_selectable = global_time_selectable + self_.invitees = invitees + self_.last_accessed = last_accessed + self_.selectable_template_vars = selectable_template_vars + self_.share_type = share_type + self_.sharer_disabled = sharer_disabled + self_.status = status + self_.title = title + self_.token = token + self_.url = url + self_.viewing_preferences = viewing_preferences diff --git a/src/datadog_api_client/v2/model/shared_dashboard_selectable_template_variable.py b/src/datadog_api_client/v2/model/shared_dashboard_selectable_template_variable.py new file mode 100644 index 0000000000..f1bea263b8 --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_selectable_template_variable.py @@ -0,0 +1,73 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class SharedDashboardSelectableTemplateVariable(ModelNormal): + @cached_property + def openapi_types(_): + return { + "allow_any_value": (bool,), + "default_values": ([str],), + "name": (str,), + "prefix": (str,), + "type": (str,), + "visible_tags": ([str],), + } + + attribute_map = { + "allow_any_value": "allow_any_value", + "default_values": "default_values", + "name": "name", + "prefix": "prefix", + "type": "type", + "visible_tags": "visible_tags", + } + + def __init__( + self_, + allow_any_value: bool, + default_values: List[str], + name: str, + prefix: str, + type: str, + visible_tags: List[str], + **kwargs, + ): + """ + A template variable that viewers can modify on the shared dashboard. + + :param allow_any_value: Whether viewers can see all tag values for the template variable and specify any value. + :type allow_any_value: bool + + :param default_values: Default selected values for the variable. + :type default_values: [str] + + :param name: Name of the template variable. + :type name: str + + :param prefix: Tag prefix for the variable. + :type prefix: str + + :param type: Type of the template variable. + :type type: str + + :param visible_tags: Restricts which tag values are visible to the viewer. + :type visible_tags: [str] + """ + super().__init__(kwargs) + + self_.allow_any_value = allow_any_value + self_.default_values = default_values + self_.name = name + self_.prefix = prefix + self_.type = type + self_.visible_tags = visible_tags diff --git a/src/datadog_api_client/v2/model/shared_dashboard_share_type.py b/src/datadog_api_client/v2/model/shared_dashboard_share_type.py new file mode 100644 index 0000000000..21b2f05ae0 --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_share_type.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SharedDashboardShareType(ModelSimple): + """ + Type of dashboard sharing. + + :param value: Must be one of ["open", "invite", "embed", "secure-embed"]. + :type value: str + """ + + allowed_values = { + "open", + "invite", + "embed", + "secure-embed", + } + OPEN: ClassVar["SharedDashboardShareType"] + INVITE: ClassVar["SharedDashboardShareType"] + EMBED: ClassVar["SharedDashboardShareType"] + SECURE_EMBED: ClassVar["SharedDashboardShareType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SharedDashboardShareType.OPEN = SharedDashboardShareType("open") +SharedDashboardShareType.INVITE = SharedDashboardShareType("invite") +SharedDashboardShareType.EMBED = SharedDashboardShareType("embed") +SharedDashboardShareType.SECURE_EMBED = SharedDashboardShareType("secure-embed") diff --git a/src/datadog_api_client/v2/model/shared_dashboard_status.py b/src/datadog_api_client/v2/model/shared_dashboard_status.py new file mode 100644 index 0000000000..b19b731916 --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_status.py @@ -0,0 +1,38 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SharedDashboardStatus(ModelSimple): + """ + Status of the shared dashboard. + + :param value: Must be one of ["active", "paused"]. + :type value: str + """ + + allowed_values = { + "active", + "paused", + } + ACTIVE: ClassVar["SharedDashboardStatus"] + PAUSED: ClassVar["SharedDashboardStatus"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SharedDashboardStatus.ACTIVE = SharedDashboardStatus("active") +SharedDashboardStatus.PAUSED = SharedDashboardStatus("paused") diff --git a/src/datadog_api_client/v2/model/shared_dashboard_type.py b/src/datadog_api_client/v2/model/shared_dashboard_type.py new file mode 100644 index 0000000000..87a40f43fc --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SharedDashboardType(ModelSimple): + """ + Shared dashboard resource type. + + :param value: If omitted defaults to "shared_dashboard". Must be one of ["shared_dashboard"]. + :type value: str + """ + + allowed_values = { + "shared_dashboard", + } + SHARED_DASHBOARD: ClassVar["SharedDashboardType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SharedDashboardType.SHARED_DASHBOARD = SharedDashboardType("shared_dashboard") diff --git a/src/datadog_api_client/v2/model/shared_dashboard_viewing_preferences.py b/src/datadog_api_client/v2/model/shared_dashboard_viewing_preferences.py new file mode 100644 index 0000000000..c01133e7ac --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_viewing_preferences.py @@ -0,0 +1,50 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.shared_dashboard_viewing_preferences_theme import ( + SharedDashboardViewingPreferencesTheme, + ) + + +class SharedDashboardViewingPreferences(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.shared_dashboard_viewing_preferences_theme import ( + SharedDashboardViewingPreferencesTheme, + ) + + return { + "high_density": (bool,), + "theme": (SharedDashboardViewingPreferencesTheme,), + } + + attribute_map = { + "high_density": "high_density", + "theme": "theme", + } + + def __init__(self_, high_density: bool, theme: SharedDashboardViewingPreferencesTheme, **kwargs): + """ + Display settings for the shared dashboard. + + :param high_density: Whether widgets are displayed in high-density mode. + :type high_density: bool + + :param theme: The theme of the shared dashboard view. ``system`` follows the viewer's system default. + :type theme: SharedDashboardViewingPreferencesTheme + """ + super().__init__(kwargs) + + self_.high_density = high_density + self_.theme = theme diff --git a/src/datadog_api_client/v2/model/shared_dashboard_viewing_preferences_theme.py b/src/datadog_api_client/v2/model/shared_dashboard_viewing_preferences_theme.py new file mode 100644 index 0000000000..8ff781bc22 --- /dev/null +++ b/src/datadog_api_client/v2/model/shared_dashboard_viewing_preferences_theme.py @@ -0,0 +1,41 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SharedDashboardViewingPreferencesTheme(ModelSimple): + """ + The theme of the shared dashboard view. `system` follows the viewer's system default. + + :param value: Must be one of ["system", "light", "dark"]. + :type value: str + """ + + allowed_values = { + "system", + "light", + "dark", + } + SYSTEM: ClassVar["SharedDashboardViewingPreferencesTheme"] + LIGHT: ClassVar["SharedDashboardViewingPreferencesTheme"] + DARK: ClassVar["SharedDashboardViewingPreferencesTheme"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SharedDashboardViewingPreferencesTheme.SYSTEM = SharedDashboardViewingPreferencesTheme("system") +SharedDashboardViewingPreferencesTheme.LIGHT = SharedDashboardViewingPreferencesTheme("light") +SharedDashboardViewingPreferencesTheme.DARK = SharedDashboardViewingPreferencesTheme("dark") diff --git a/src/datadog_api_client/v2/model/single_entity_context_response.py b/src/datadog_api_client/v2/model/single_entity_context_response.py new file mode 100644 index 0000000000..ac7b3f2444 --- /dev/null +++ b/src/datadog_api_client/v2/model/single_entity_context_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.entity_context_entity import EntityContextEntity + + +class SingleEntityContextResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.entity_context_entity import EntityContextEntity + + return { + "data": (EntityContextEntity,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: EntityContextEntity, **kwargs): + """ + Response from the single entity context endpoint, containing the matching entity. + + :param data: A single entity returned by the entity context endpoint. + :type data: EntityContextEntity + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/slack_user_binding_data.py b/src/datadog_api_client/v2/model/slack_user_binding_data.py new file mode 100644 index 0000000000..6344e617af --- /dev/null +++ b/src/datadog_api_client/v2/model/slack_user_binding_data.py @@ -0,0 +1,51 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.slack_user_binding_type import SlackUserBindingType + + +class SlackUserBindingData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.slack_user_binding_type import SlackUserBindingType + + return { + "id": (str,), + "type": (SlackUserBindingType,), + } + + attribute_map = { + "id": "id", + "type": "type", + } + + def __init__( + self_, id: Union[str, UnsetType] = unset, type: Union[SlackUserBindingType, UnsetType] = unset, **kwargs + ): + """ + Slack team ID data from a response. + + :param id: The Slack team ID. + :type id: str, optional + + :param type: Slack user binding resource type. + :type type: SlackUserBindingType, optional + """ + if id is not unset: + kwargs["id"] = id + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/slack_user_binding_type.py b/src/datadog_api_client/v2/model/slack_user_binding_type.py new file mode 100644 index 0000000000..5633d38a93 --- /dev/null +++ b/src/datadog_api_client/v2/model/slack_user_binding_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class SlackUserBindingType(ModelSimple): + """ + Slack user binding resource type. + + :param value: If omitted defaults to "team_id". Must be one of ["team_id"]. + :type value: str + """ + + allowed_values = { + "team_id", + } + TEAM_ID: ClassVar["SlackUserBindingType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +SlackUserBindingType.TEAM_ID = SlackUserBindingType("team_id") diff --git a/src/datadog_api_client/v2/model/slack_user_bindings_response.py b/src/datadog_api_client/v2/model/slack_user_bindings_response.py new file mode 100644 index 0000000000..87005c19d4 --- /dev/null +++ b/src/datadog_api_client/v2/model/slack_user_bindings_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.slack_user_binding_data import SlackUserBindingData + + +class SlackUserBindingsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.slack_user_binding_data import SlackUserBindingData + + return { + "data": ([SlackUserBindingData],), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: List[SlackUserBindingData], **kwargs): + """ + Response with a list of Slack user bindings. + + :param data: An array of Slack user bindings. + :type data: [SlackUserBindingData] + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_attributes.py b/src/datadog_api_client/v2/model/tag_indexing_rule_attributes.py new file mode 100644 index 0000000000..0c400aeec9 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_attributes.py @@ -0,0 +1,134 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_options import TagIndexingRuleOptions + + +class TagIndexingRuleAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_options import TagIndexingRuleOptions + + return { + "created_at": (datetime,), + "created_by_handle": (str,), + "exclude_tags_mode": (bool,), + "ignored_metric_name_matches": ([str],), + "metric_name_matches": ([str],), + "modified_at": (datetime,), + "modified_by_handle": (str,), + "name": (str,), + "options": (TagIndexingRuleOptions,), + "rule_order": (int,), + "tags": ([str],), + } + + attribute_map = { + "created_at": "created_at", + "created_by_handle": "created_by_handle", + "exclude_tags_mode": "exclude_tags_mode", + "ignored_metric_name_matches": "ignored_metric_name_matches", + "metric_name_matches": "metric_name_matches", + "modified_at": "modified_at", + "modified_by_handle": "modified_by_handle", + "name": "name", + "options": "options", + "rule_order": "rule_order", + "tags": "tags", + } + read_only_vars = { + "created_at", + "created_by_handle", + "modified_at", + "modified_by_handle", + "rule_order", + } + + def __init__( + self_, + created_at: Union[datetime, UnsetType] = unset, + created_by_handle: Union[str, UnsetType] = unset, + exclude_tags_mode: Union[bool, UnsetType] = unset, + ignored_metric_name_matches: Union[List[str], UnsetType] = unset, + metric_name_matches: Union[List[str], UnsetType] = unset, + modified_at: Union[datetime, UnsetType] = unset, + modified_by_handle: Union[str, UnsetType] = unset, + name: Union[str, UnsetType] = unset, + options: Union[TagIndexingRuleOptions, UnsetType] = unset, + rule_order: Union[int, UnsetType] = unset, + tags: Union[List[str], UnsetType] = unset, + **kwargs, + ): + """ + Attributes of a tag indexing rule. + + :param created_at: Timestamp when the rule was created. + :type created_at: datetime, optional + + :param created_by_handle: Handle of the user who created the rule. + :type created_by_handle: str, optional + + :param exclude_tags_mode: When true, the rule excludes the listed tags and indexes all others. When false (default), the rule includes only the listed tags. + :type exclude_tags_mode: bool, optional + + :param ignored_metric_name_matches: Metric name prefixes excluded from the rule's scope. + :type ignored_metric_name_matches: [str], optional + + :param metric_name_matches: Metric name prefixes (glob patterns) this rule applies to. + :type metric_name_matches: [str], optional + + :param modified_at: Timestamp when the rule was last modified. + :type modified_at: datetime, optional + + :param modified_by_handle: Handle of the user who last modified the rule. + :type modified_by_handle: str, optional + + :param name: Human-readable name for the rule. + :type name: str, optional + + :param options: Versioned configuration options for a tag indexing rule. + :type options: TagIndexingRuleOptions, optional + + :param rule_order: Evaluation order within the org. Lower values are evaluated first. Assigned server-side on create (max+1); pass on update to change the rule's position. + :type rule_order: int, optional + + :param tags: Tag keys managed by this rule. + :type tags: [str], optional + """ + if created_at is not unset: + kwargs["created_at"] = created_at + if created_by_handle is not unset: + kwargs["created_by_handle"] = created_by_handle + if exclude_tags_mode is not unset: + kwargs["exclude_tags_mode"] = exclude_tags_mode + if ignored_metric_name_matches is not unset: + kwargs["ignored_metric_name_matches"] = ignored_metric_name_matches + if metric_name_matches is not unset: + kwargs["metric_name_matches"] = metric_name_matches + if modified_at is not unset: + kwargs["modified_at"] = modified_at + if modified_by_handle is not unset: + kwargs["modified_by_handle"] = modified_by_handle + if name is not unset: + kwargs["name"] = name + if options is not unset: + kwargs["options"] = options + if rule_order is not unset: + kwargs["rule_order"] = rule_order + if tags is not unset: + kwargs["tags"] = tags + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_create_attributes.py b/src/datadog_api_client/v2/model/tag_indexing_rule_create_attributes.py new file mode 100644 index 0000000000..70ee045e16 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_create_attributes.py @@ -0,0 +1,85 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_options import TagIndexingRuleOptions + + +class TagIndexingRuleCreateAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_options import TagIndexingRuleOptions + + return { + "exclude_tags_mode": (bool,), + "ignored_metric_name_matches": ([str],), + "metric_name_matches": ([str],), + "name": (str,), + "options": (TagIndexingRuleOptions,), + "tags": ([str],), + } + + attribute_map = { + "exclude_tags_mode": "exclude_tags_mode", + "ignored_metric_name_matches": "ignored_metric_name_matches", + "metric_name_matches": "metric_name_matches", + "name": "name", + "options": "options", + "tags": "tags", + } + + def __init__( + self_, + metric_name_matches: List[str], + name: str, + exclude_tags_mode: Union[bool, UnsetType] = unset, + ignored_metric_name_matches: Union[List[str], UnsetType] = unset, + options: Union[TagIndexingRuleOptions, UnsetType] = unset, + tags: Union[List[str], UnsetType] = unset, + **kwargs, + ): + """ + Attributes for creating a tag indexing rule. + + :param exclude_tags_mode: When true, the rule excludes the listed tags and indexes all others. When false (default), the rule includes only the listed tags. + :type exclude_tags_mode: bool, optional + + :param ignored_metric_name_matches: Metric name prefixes excluded from the rule's scope. + :type ignored_metric_name_matches: [str], optional + + :param metric_name_matches: Metric name prefixes (glob patterns) this rule applies to. + :type metric_name_matches: [str] + + :param name: Human-readable name for the rule. + :type name: str + + :param options: Versioned configuration options for a tag indexing rule. + :type options: TagIndexingRuleOptions, optional + + :param tags: Tag keys managed by this rule. + :type tags: [str], optional + """ + if exclude_tags_mode is not unset: + kwargs["exclude_tags_mode"] = exclude_tags_mode + if ignored_metric_name_matches is not unset: + kwargs["ignored_metric_name_matches"] = ignored_metric_name_matches + if options is not unset: + kwargs["options"] = options + if tags is not unset: + kwargs["tags"] = tags + super().__init__(kwargs) + + self_.metric_name_matches = metric_name_matches + self_.name = name diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_create_data.py b/src/datadog_api_client/v2/model/tag_indexing_rule_create_data.py new file mode 100644 index 0000000000..b4e4e79714 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_create_data.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_create_attributes import TagIndexingRuleCreateAttributes + from datadog_api_client.v2.model.tag_indexing_rule_type import TagIndexingRuleType + + +class TagIndexingRuleCreateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_create_attributes import TagIndexingRuleCreateAttributes + from datadog_api_client.v2.model.tag_indexing_rule_type import TagIndexingRuleType + + return { + "attributes": (TagIndexingRuleCreateAttributes,), + "type": (TagIndexingRuleType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: TagIndexingRuleCreateAttributes, type: TagIndexingRuleType, **kwargs): + """ + Data object for creating a tag indexing rule. + + :param attributes: Attributes for creating a tag indexing rule. + :type attributes: TagIndexingRuleCreateAttributes + + :param type: The tag indexing rule resource type. + :type type: TagIndexingRuleType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/incident_service_update_request.py b/src/datadog_api_client/v2/model/tag_indexing_rule_create_request.py similarity index 53% rename from src/datadog_api_client/v2/model/incident_service_update_request.py rename to src/datadog_api_client/v2/model/tag_indexing_rule_create_request.py index 087832a44f..49d172e2f2 100644 --- a/src/datadog_api_client/v2/model/incident_service_update_request.py +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_create_request.py @@ -12,28 +12,28 @@ if TYPE_CHECKING: - from datadog_api_client.v2.model.incident_service_update_data import IncidentServiceUpdateData + from datadog_api_client.v2.model.tag_indexing_rule_create_data import TagIndexingRuleCreateData -class IncidentServiceUpdateRequest(ModelNormal): +class TagIndexingRuleCreateRequest(ModelNormal): @cached_property def openapi_types(_): - from datadog_api_client.v2.model.incident_service_update_data import IncidentServiceUpdateData + from datadog_api_client.v2.model.tag_indexing_rule_create_data import TagIndexingRuleCreateData return { - "data": (IncidentServiceUpdateData,), + "data": (TagIndexingRuleCreateData,), } attribute_map = { "data": "data", } - def __init__(self_, data: IncidentServiceUpdateData, **kwargs): + def __init__(self_, data: TagIndexingRuleCreateData, **kwargs): """ - Update request with an incident service payload. + Request body for creating a tag indexing rule. - :param data: Incident Service payload for update requests. - :type data: IncidentServiceUpdateData + :param data: Data object for creating a tag indexing rule. + :type data: TagIndexingRuleCreateData """ super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_data.py b/src/datadog_api_client/v2/model/tag_indexing_rule_data.py new file mode 100644 index 0000000000..c894107bd4 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_data.py @@ -0,0 +1,64 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_attributes import TagIndexingRuleAttributes + from datadog_api_client.v2.model.tag_indexing_rule_type import TagIndexingRuleType + + +class TagIndexingRuleData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_attributes import TagIndexingRuleAttributes + from datadog_api_client.v2.model.tag_indexing_rule_type import TagIndexingRuleType + + return { + "attributes": (TagIndexingRuleAttributes,), + "id": (str,), + "type": (TagIndexingRuleType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: Union[TagIndexingRuleAttributes, UnsetType] = unset, + id: Union[str, UnsetType] = unset, + type: Union[TagIndexingRuleType, UnsetType] = unset, + **kwargs, + ): + """ + A tag indexing rule resource object. + + :param attributes: Attributes of a tag indexing rule. + :type attributes: TagIndexingRuleAttributes, optional + + :param id: The unique identifier (UUID) of the tag indexing rule. + :type id: str, optional + + :param type: The tag indexing rule resource type. + :type type: TagIndexingRuleType, optional + """ + if attributes is not unset: + kwargs["attributes"] = attributes + if id is not unset: + kwargs["id"] = id + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_dynamic_tags.py b/src/datadog_api_client/v2/model/tag_indexing_rule_dynamic_tags.py new file mode 100644 index 0000000000..77fbedeaca --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_dynamic_tags.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class TagIndexingRuleDynamicTags(ModelNormal): + @cached_property + def openapi_types(_): + return { + "queried_tags_window_seconds": (int,), + "related_asset_tags": (bool,), + } + + attribute_map = { + "queried_tags_window_seconds": "queried_tags_window_seconds", + "related_asset_tags": "related_asset_tags", + } + + def __init__( + self_, + queried_tags_window_seconds: Union[int, UnsetType] = unset, + related_asset_tags: Union[bool, UnsetType] = unset, + **kwargs, + ): + """ + Configuration for including dynamically queried tags. + + :param queried_tags_window_seconds: Window in seconds for evaluating queried tags. + :type queried_tags_window_seconds: int, optional + + :param related_asset_tags: When true, tags from related assets are included. + :type related_asset_tags: bool, optional + """ + if queried_tags_window_seconds is not unset: + kwargs["queried_tags_window_seconds"] = queried_tags_window_seconds + if related_asset_tags is not unset: + kwargs["related_asset_tags"] = related_asset_tags + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_attributes.py b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_attributes.py new file mode 100644 index 0000000000..6556ed0cec --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_attributes.py @@ -0,0 +1,69 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + unset, + UnsetType, +) + + +class TagIndexingRuleExemptionAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "created_at": (datetime,), + "created_by_handle": (str,), + "kind": (str,), + "reason": (str,), + } + + attribute_map = { + "created_at": "created_at", + "created_by_handle": "created_by_handle", + "kind": "kind", + "reason": "reason", + } + read_only_vars = { + "created_at", + "created_by_handle", + } + + def __init__( + self_, + created_at: Union[datetime, UnsetType] = unset, + created_by_handle: Union[str, UnsetType] = unset, + kind: Union[str, UnsetType] = unset, + reason: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + Attributes of a tag indexing rule exemption. + + :param created_at: Timestamp when the exemption was created. + :type created_at: datetime, optional + + :param created_by_handle: Handle of the user who created the exemption. + :type created_by_handle: str, optional + + :param kind: Discriminates between an explicit exemption ( ``exemption`` ) and a pre-existing legacy tag configuration acting as an implicit exclusion ( ``legacy_tag_configuration`` ). + :type kind: str, optional + + :param reason: The reason the metric is exempt from tag indexing rules. + :type reason: str, optional + """ + if created_at is not unset: + kwargs["created_at"] = created_at + if created_by_handle is not unset: + kwargs["created_by_handle"] = created_by_handle + if kind is not unset: + kwargs["kind"] = kind + if reason is not unset: + kwargs["reason"] = reason + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_create_attributes.py b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_create_attributes.py new file mode 100644 index 0000000000..35c4918014 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_create_attributes.py @@ -0,0 +1,33 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class TagIndexingRuleExemptionCreateAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "reason": (str,), + } + + attribute_map = { + "reason": "reason", + } + + def __init__(self_, reason: str, **kwargs): + """ + Attributes for creating a tag indexing rule exemption. + + :param reason: The reason the metric is exempt from tag indexing rules. + :type reason: str + """ + super().__init__(kwargs) + + self_.reason = reason diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_create_data.py b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_create_data.py new file mode 100644 index 0000000000..51e7981812 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_create_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_exemption_create_attributes import ( + TagIndexingRuleExemptionCreateAttributes, + ) + from datadog_api_client.v2.model.tag_indexing_rule_exemption_type import TagIndexingRuleExemptionType + + +class TagIndexingRuleExemptionCreateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_exemption_create_attributes import ( + TagIndexingRuleExemptionCreateAttributes, + ) + from datadog_api_client.v2.model.tag_indexing_rule_exemption_type import TagIndexingRuleExemptionType + + return { + "attributes": (TagIndexingRuleExemptionCreateAttributes,), + "type": (TagIndexingRuleExemptionType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, attributes: TagIndexingRuleExemptionCreateAttributes, type: TagIndexingRuleExemptionType, **kwargs + ): + """ + Data object for creating a tag indexing rule exemption. + + :param attributes: Attributes for creating a tag indexing rule exemption. + :type attributes: TagIndexingRuleExemptionCreateAttributes + + :param type: The tag indexing rule exemption resource type. + :type type: TagIndexingRuleExemptionType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_create_request.py b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_create_request.py new file mode 100644 index 0000000000..d6e834fd7e --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_create_request.py @@ -0,0 +1,42 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_exemption_create_data import TagIndexingRuleExemptionCreateData + + +class TagIndexingRuleExemptionCreateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_exemption_create_data import ( + TagIndexingRuleExemptionCreateData, + ) + + return { + "data": (TagIndexingRuleExemptionCreateData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: TagIndexingRuleExemptionCreateData, **kwargs): + """ + Request body for creating a tag indexing rule exemption. + + :param data: Data object for creating a tag indexing rule exemption. + :type data: TagIndexingRuleExemptionCreateData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_data.py b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_data.py new file mode 100644 index 0000000000..3693150a82 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_data.py @@ -0,0 +1,66 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_exemption_attributes import TagIndexingRuleExemptionAttributes + from datadog_api_client.v2.model.tag_indexing_rule_exemption_type import TagIndexingRuleExemptionType + + +class TagIndexingRuleExemptionData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_exemption_attributes import ( + TagIndexingRuleExemptionAttributes, + ) + from datadog_api_client.v2.model.tag_indexing_rule_exemption_type import TagIndexingRuleExemptionType + + return { + "attributes": (TagIndexingRuleExemptionAttributes,), + "id": (str,), + "type": (TagIndexingRuleExemptionType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: Union[TagIndexingRuleExemptionAttributes, UnsetType] = unset, + id: Union[str, UnsetType] = unset, + type: Union[TagIndexingRuleExemptionType, UnsetType] = unset, + **kwargs, + ): + """ + A tag indexing rule exemption resource object. + + :param attributes: Attributes of a tag indexing rule exemption. + :type attributes: TagIndexingRuleExemptionAttributes, optional + + :param id: The metric name, used as the resource ID. + :type id: str, optional + + :param type: The tag indexing rule exemption resource type. + :type type: TagIndexingRuleExemptionType, optional + """ + if attributes is not unset: + kwargs["attributes"] = attributes + if id is not unset: + kwargs["id"] = id + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_response.py b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_response.py new file mode 100644 index 0000000000..26c7728a8b --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_response.py @@ -0,0 +1,42 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_exemption_data import TagIndexingRuleExemptionData + + +class TagIndexingRuleExemptionResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_exemption_data import TagIndexingRuleExemptionData + + return { + "data": (TagIndexingRuleExemptionData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: Union[TagIndexingRuleExemptionData, UnsetType] = unset, **kwargs): + """ + Response containing a tag indexing rule exemption. + + :param data: A tag indexing rule exemption resource object. + :type data: TagIndexingRuleExemptionData, optional + """ + if data is not unset: + kwargs["data"] = data + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_type.py b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_type.py new file mode 100644 index 0000000000..210d5901b9 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_exemption_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TagIndexingRuleExemptionType(ModelSimple): + """ + The tag indexing rule exemption resource type. + + :param value: If omitted defaults to "tag_indexing_rule_exemptions". Must be one of ["tag_indexing_rule_exemptions"]. + :type value: str + """ + + allowed_values = { + "tag_indexing_rule_exemptions", + } + TAG_INDEXING_RULE_EXEMPTIONS: ClassVar["TagIndexingRuleExemptionType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TagIndexingRuleExemptionType.TAG_INDEXING_RULE_EXEMPTIONS = TagIndexingRuleExemptionType("tag_indexing_rule_exemptions") diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_metric_match.py b/src/datadog_api_client/v2/model/tag_indexing_rule_metric_match.py new file mode 100644 index 0000000000..31773a0153 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_metric_match.py @@ -0,0 +1,72 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class TagIndexingRuleMetricMatch(ModelNormal): + @cached_property + def openapi_types(_): + return { + "is_queried": (bool,), + "not_queried": (bool,), + "not_used_in_assets": (bool,), + "queried_window_seconds": (int,), + "used_in_assets": (bool,), + } + + attribute_map = { + "is_queried": "is_queried", + "not_queried": "not_queried", + "not_used_in_assets": "not_used_in_assets", + "queried_window_seconds": "queried_window_seconds", + "used_in_assets": "used_in_assets", + } + + def __init__( + self_, + is_queried: Union[bool, UnsetType] = unset, + not_queried: Union[bool, UnsetType] = unset, + not_used_in_assets: Union[bool, UnsetType] = unset, + queried_window_seconds: Union[int, UnsetType] = unset, + used_in_assets: Union[bool, UnsetType] = unset, + **kwargs, + ): + """ + Criteria for matching metrics based on query state. + + :param is_queried: Match metrics that are being queried. + :type is_queried: bool, optional + + :param not_queried: Match metrics that are not being queried. + :type not_queried: bool, optional + + :param not_used_in_assets: Match metrics not used in any dashboards or monitors. + :type not_used_in_assets: bool, optional + + :param queried_window_seconds: Window in seconds for evaluating query state. + :type queried_window_seconds: int, optional + + :param used_in_assets: Match metrics used in dashboards or monitors. + :type used_in_assets: bool, optional + """ + if is_queried is not unset: + kwargs["is_queried"] = is_queried + if not_queried is not unset: + kwargs["not_queried"] = not_queried + if not_used_in_assets is not unset: + kwargs["not_used_in_assets"] = not_used_in_assets + if queried_window_seconds is not unset: + kwargs["queried_window_seconds"] = queried_window_seconds + if used_in_assets is not unset: + kwargs["used_in_assets"] = used_in_assets + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_options.py b/src/datadog_api_client/v2/model/tag_indexing_rule_options.py new file mode 100644 index 0000000000..da338ec394 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_options.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_options_data import TagIndexingRuleOptionsData + + +class TagIndexingRuleOptions(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_options_data import TagIndexingRuleOptionsData + + return { + "data": (TagIndexingRuleOptionsData,), + "version": (int,), + } + + attribute_map = { + "data": "data", + "version": "version", + } + + def __init__( + self_, + data: Union[TagIndexingRuleOptionsData, UnsetType] = unset, + version: Union[int, UnsetType] = unset, + **kwargs, + ): + """ + Versioned configuration options for a tag indexing rule. + + :param data: Data payload for tag indexing rule options. + :type data: TagIndexingRuleOptionsData, optional + + :param version: Options schema version. Only ``1`` is supported. + :type version: int, optional + """ + if data is not unset: + kwargs["data"] = data + if version is not unset: + kwargs["version"] = version + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_options_data.py b/src/datadog_api_client/v2/model/tag_indexing_rule_options_data.py new file mode 100644 index 0000000000..2ff424b00f --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_options_data.py @@ -0,0 +1,72 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_dynamic_tags import TagIndexingRuleDynamicTags + from datadog_api_client.v2.model.tag_indexing_rule_metric_match import TagIndexingRuleMetricMatch + + +class TagIndexingRuleOptionsData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_dynamic_tags import TagIndexingRuleDynamicTags + from datadog_api_client.v2.model.tag_indexing_rule_metric_match import TagIndexingRuleMetricMatch + + return { + "dynamic_tags": (TagIndexingRuleDynamicTags,), + "manage_preexisting_metrics": (bool,), + "metric_match": (TagIndexingRuleMetricMatch,), + "override_previous_rules": (bool,), + } + + attribute_map = { + "dynamic_tags": "dynamic_tags", + "manage_preexisting_metrics": "manage_preexisting_metrics", + "metric_match": "metric_match", + "override_previous_rules": "override_previous_rules", + } + + def __init__( + self_, + dynamic_tags: Union[TagIndexingRuleDynamicTags, UnsetType] = unset, + manage_preexisting_metrics: Union[bool, UnsetType] = unset, + metric_match: Union[TagIndexingRuleMetricMatch, UnsetType] = unset, + override_previous_rules: Union[bool, UnsetType] = unset, + **kwargs, + ): + """ + Data payload for tag indexing rule options. + + :param dynamic_tags: Configuration for including dynamically queried tags. + :type dynamic_tags: TagIndexingRuleDynamicTags, optional + + :param manage_preexisting_metrics: When true, the rule applies to metrics that were ingested before the rule was created. + :type manage_preexisting_metrics: bool, optional + + :param metric_match: Criteria for matching metrics based on query state. + :type metric_match: TagIndexingRuleMetricMatch, optional + + :param override_previous_rules: When true, this rule's tag list overrides tags configured by earlier rules for the same metric. When false (default), tags from all matching rules are combined. + :type override_previous_rules: bool, optional + """ + if dynamic_tags is not unset: + kwargs["dynamic_tags"] = dynamic_tags + if manage_preexisting_metrics is not unset: + kwargs["manage_preexisting_metrics"] = manage_preexisting_metrics + if metric_match is not unset: + kwargs["metric_match"] = metric_match + if override_previous_rules is not unset: + kwargs["override_previous_rules"] = override_previous_rules + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_order_attributes.py b/src/datadog_api_client/v2/model/tag_indexing_rule_order_attributes.py new file mode 100644 index 0000000000..232bfc5665 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_order_attributes.py @@ -0,0 +1,36 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class TagIndexingRuleOrderAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "rule_ids": ([str],), + } + + attribute_map = { + "rule_ids": "rule_ids", + } + + def __init__(self_, rule_ids: Union[List[str], UnsetType] = unset, **kwargs): + """ + Attributes for the reorder operation. + + :param rule_ids: Ordered list of tag indexing rule UUIDs. The server assigns rule_order 1, 2, … matching position in this list. + :type rule_ids: [str], optional + """ + if rule_ids is not unset: + kwargs["rule_ids"] = rule_ids + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_order_data.py b/src/datadog_api_client/v2/model/tag_indexing_rule_order_data.py new file mode 100644 index 0000000000..610fbba002 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_order_data.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_order_attributes import TagIndexingRuleOrderAttributes + from datadog_api_client.v2.model.tag_indexing_rule_type import TagIndexingRuleType + + +class TagIndexingRuleOrderData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_order_attributes import TagIndexingRuleOrderAttributes + from datadog_api_client.v2.model.tag_indexing_rule_type import TagIndexingRuleType + + return { + "attributes": (TagIndexingRuleOrderAttributes,), + "type": (TagIndexingRuleType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: TagIndexingRuleOrderAttributes, type: TagIndexingRuleType, **kwargs): + """ + Data object for the reorder operation. + + :param attributes: Attributes for the reorder operation. + :type attributes: TagIndexingRuleOrderAttributes + + :param type: The tag indexing rule resource type. + :type type: TagIndexingRuleType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_order_request.py b/src/datadog_api_client/v2/model/tag_indexing_rule_order_request.py new file mode 100644 index 0000000000..456e87043d --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_order_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_order_data import TagIndexingRuleOrderData + + +class TagIndexingRuleOrderRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_order_data import TagIndexingRuleOrderData + + return { + "data": (TagIndexingRuleOrderData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: TagIndexingRuleOrderData, **kwargs): + """ + Request body for reordering tag indexing rules. + + :param data: Data object for the reorder operation. + :type data: TagIndexingRuleOrderData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_response.py b/src/datadog_api_client/v2/model/tag_indexing_rule_response.py new file mode 100644 index 0000000000..072814fe23 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_response.py @@ -0,0 +1,42 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_data import TagIndexingRuleData + + +class TagIndexingRuleResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_data import TagIndexingRuleData + + return { + "data": (TagIndexingRuleData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: Union[TagIndexingRuleData, UnsetType] = unset, **kwargs): + """ + Response containing a single tag indexing rule. + + :param data: A tag indexing rule resource object. + :type data: TagIndexingRuleData, optional + """ + if data is not unset: + kwargs["data"] = data + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_type.py b/src/datadog_api_client/v2/model/tag_indexing_rule_type.py new file mode 100644 index 0000000000..d4d8c504b2 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TagIndexingRuleType(ModelSimple): + """ + The tag indexing rule resource type. + + :param value: If omitted defaults to "tag_indexing_rules". Must be one of ["tag_indexing_rules"]. + :type value: str + """ + + allowed_values = { + "tag_indexing_rules", + } + TAG_INDEXING_RULES: ClassVar["TagIndexingRuleType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TagIndexingRuleType.TAG_INDEXING_RULES = TagIndexingRuleType("tag_indexing_rules") diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_update_attributes.py b/src/datadog_api_client/v2/model/tag_indexing_rule_update_attributes.py new file mode 100644 index 0000000000..60d3b79ab4 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_update_attributes.py @@ -0,0 +1,94 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_options import TagIndexingRuleOptions + + +class TagIndexingRuleUpdateAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_options import TagIndexingRuleOptions + + return { + "exclude_tags_mode": (bool,), + "ignored_metric_name_matches": ([str],), + "metric_name_matches": ([str],), + "name": (str,), + "options": (TagIndexingRuleOptions,), + "rule_order": (int,), + "tags": ([str],), + } + + attribute_map = { + "exclude_tags_mode": "exclude_tags_mode", + "ignored_metric_name_matches": "ignored_metric_name_matches", + "metric_name_matches": "metric_name_matches", + "name": "name", + "options": "options", + "rule_order": "rule_order", + "tags": "tags", + } + + def __init__( + self_, + exclude_tags_mode: Union[bool, UnsetType] = unset, + ignored_metric_name_matches: Union[List[str], UnsetType] = unset, + metric_name_matches: Union[List[str], UnsetType] = unset, + name: Union[str, UnsetType] = unset, + options: Union[TagIndexingRuleOptions, UnsetType] = unset, + rule_order: Union[int, UnsetType] = unset, + tags: Union[List[str], UnsetType] = unset, + **kwargs, + ): + """ + Attributes for updating a tag indexing rule. All fields are optional; omitted fields are unchanged. + + :param exclude_tags_mode: When true, the rule excludes the listed tags and indexes all others. + :type exclude_tags_mode: bool, optional + + :param ignored_metric_name_matches: Metric name prefixes excluded from the rule's scope. + :type ignored_metric_name_matches: [str], optional + + :param metric_name_matches: Metric name prefixes (glob patterns) this rule applies to. + :type metric_name_matches: [str], optional + + :param name: Human-readable name for the rule. + :type name: str, optional + + :param options: Versioned configuration options for a tag indexing rule. + :type options: TagIndexingRuleOptions, optional + + :param rule_order: Desired evaluation order. Returns 409 if the value conflicts with another rule; use POST /api/v2/metrics/tag-indexing-rules/order for atomic re-sequencing. + :type rule_order: int, optional + + :param tags: Tag keys managed by this rule. + :type tags: [str], optional + """ + if exclude_tags_mode is not unset: + kwargs["exclude_tags_mode"] = exclude_tags_mode + if ignored_metric_name_matches is not unset: + kwargs["ignored_metric_name_matches"] = ignored_metric_name_matches + if metric_name_matches is not unset: + kwargs["metric_name_matches"] = metric_name_matches + if name is not unset: + kwargs["name"] = name + if options is not unset: + kwargs["options"] = options + if rule_order is not unset: + kwargs["rule_order"] = rule_order + if tags is not unset: + kwargs["tags"] = tags + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rule_update_data.py b/src/datadog_api_client/v2/model/tag_indexing_rule_update_data.py new file mode 100644 index 0000000000..0d3d61112e --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_update_data.py @@ -0,0 +1,56 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_update_attributes import TagIndexingRuleUpdateAttributes + from datadog_api_client.v2.model.tag_indexing_rule_type import TagIndexingRuleType + + +class TagIndexingRuleUpdateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_update_attributes import TagIndexingRuleUpdateAttributes + from datadog_api_client.v2.model.tag_indexing_rule_type import TagIndexingRuleType + + return { + "attributes": (TagIndexingRuleUpdateAttributes,), + "type": (TagIndexingRuleType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, + type: TagIndexingRuleType, + attributes: Union[TagIndexingRuleUpdateAttributes, UnsetType] = unset, + **kwargs, + ): + """ + Data object for updating a tag indexing rule. + + :param attributes: Attributes for updating a tag indexing rule. All fields are optional; omitted fields are unchanged. + :type attributes: TagIndexingRuleUpdateAttributes, optional + + :param type: The tag indexing rule resource type. + :type type: TagIndexingRuleType + """ + if attributes is not unset: + kwargs["attributes"] = attributes + super().__init__(kwargs) + + self_.type = type diff --git a/src/datadog_api_client/v2/model/incident_service_create_request.py b/src/datadog_api_client/v2/model/tag_indexing_rule_update_request.py similarity index 53% rename from src/datadog_api_client/v2/model/incident_service_create_request.py rename to src/datadog_api_client/v2/model/tag_indexing_rule_update_request.py index df0035ad35..40e23536e9 100644 --- a/src/datadog_api_client/v2/model/incident_service_create_request.py +++ b/src/datadog_api_client/v2/model/tag_indexing_rule_update_request.py @@ -12,28 +12,28 @@ if TYPE_CHECKING: - from datadog_api_client.v2.model.incident_service_create_data import IncidentServiceCreateData + from datadog_api_client.v2.model.tag_indexing_rule_update_data import TagIndexingRuleUpdateData -class IncidentServiceCreateRequest(ModelNormal): +class TagIndexingRuleUpdateRequest(ModelNormal): @cached_property def openapi_types(_): - from datadog_api_client.v2.model.incident_service_create_data import IncidentServiceCreateData + from datadog_api_client.v2.model.tag_indexing_rule_update_data import TagIndexingRuleUpdateData return { - "data": (IncidentServiceCreateData,), + "data": (TagIndexingRuleUpdateData,), } attribute_map = { "data": "data", } - def __init__(self_, data: IncidentServiceCreateData, **kwargs): + def __init__(self_, data: TagIndexingRuleUpdateData, **kwargs): """ - Create request with an incident service payload. + Request body for updating a tag indexing rule. - :param data: Incident Service payload for create requests. - :type data: IncidentServiceCreateData + :param data: Data object for updating a tag indexing rule. + :type data: TagIndexingRuleUpdateData """ super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rules_response.py b/src/datadog_api_client/v2/model/tag_indexing_rules_response.py new file mode 100644 index 0000000000..f9c98f93e9 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rules_response.py @@ -0,0 +1,66 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_indexing_rule_data import TagIndexingRuleData + from datadog_api_client.v2.model.metrics_list_response_links import MetricsListResponseLinks + from datadog_api_client.v2.model.tag_indexing_rules_response_meta import TagIndexingRulesResponseMeta + + +class TagIndexingRulesResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_indexing_rule_data import TagIndexingRuleData + from datadog_api_client.v2.model.metrics_list_response_links import MetricsListResponseLinks + from datadog_api_client.v2.model.tag_indexing_rules_response_meta import TagIndexingRulesResponseMeta + + return { + "data": ([TagIndexingRuleData],), + "links": (MetricsListResponseLinks,), + "meta": (TagIndexingRulesResponseMeta,), + } + + attribute_map = { + "data": "data", + "links": "links", + "meta": "meta", + } + + def __init__( + self_, + data: Union[List[TagIndexingRuleData], UnsetType] = unset, + links: Union[MetricsListResponseLinks, UnsetType] = unset, + meta: Union[TagIndexingRulesResponseMeta, UnsetType] = unset, + **kwargs, + ): + """ + Response containing a page of tag indexing rules. + + :param data: Array of tag indexing rule objects. + :type data: [TagIndexingRuleData], optional + + :param links: Pagination links. Only present if pagination query parameters were provided. + :type links: MetricsListResponseLinks, optional + + :param meta: Pagination metadata for a list of tag indexing rules. + :type meta: TagIndexingRulesResponseMeta, optional + """ + if data is not unset: + kwargs["data"] = data + if links is not unset: + kwargs["links"] = links + if meta is not unset: + kwargs["meta"] = meta + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_indexing_rules_response_meta.py b/src/datadog_api_client/v2/model/tag_indexing_rules_response_meta.py new file mode 100644 index 0000000000..11080ebfb4 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_indexing_rules_response_meta.py @@ -0,0 +1,36 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class TagIndexingRulesResponseMeta(ModelNormal): + @cached_property + def openapi_types(_): + return { + "total": (int,), + } + + attribute_map = { + "total": "total", + } + + def __init__(self_, total: Union[int, UnsetType] = unset, **kwargs): + """ + Pagination metadata for a list of tag indexing rules. + + :param total: Total number of tag indexing rules in the org. + :type total: int, optional + """ + if total is not unset: + kwargs["total"] = total + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_policies_list_response.py b/src/datadog_api_client/v2/model/tag_policies_list_response.py new file mode 100644 index 0000000000..6973a9f365 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policies_list_response.py @@ -0,0 +1,53 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_data import TagPolicyData + from datadog_api_client.v2.model.tag_policy_score_data import TagPolicyScoreData + + +class TagPoliciesListResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_data import TagPolicyData + from datadog_api_client.v2.model.tag_policy_score_data import TagPolicyScoreData + + return { + "data": ([TagPolicyData],), + "included": ([TagPolicyScoreData],), + } + + attribute_map = { + "data": "data", + "included": "included", + } + + def __init__( + self_, data: List[TagPolicyData], included: Union[List[TagPolicyScoreData], UnsetType] = unset, **kwargs + ): + """ + A page of tag policies. + + :param data: An array of tag policy data objects. + :type data: [TagPolicyData] + + :param included: Related resources fetched alongside the primary tag policies. Populated when an ``include`` query parameter is supplied. + :type included: [TagPolicyScoreData], optional + """ + if included is not unset: + kwargs["included"] = included + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/tag_policy_attributes.py b/src/datadog_api_client/v2/model/tag_policy_attributes.py new file mode 100644 index 0000000000..ae103a9f63 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_attributes.py @@ -0,0 +1,158 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_type import TagPolicyType + from datadog_api_client.v2.model.tag_policy_source import TagPolicySource + + +class TagPolicyAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_type import TagPolicyType + from datadog_api_client.v2.model.tag_policy_source import TagPolicySource + + return { + "created_at": (datetime,), + "created_by": (str,), + "deleted_at": (datetime, none_type), + "deleted_by": (str, none_type), + "enabled": (bool,), + "modified_at": (datetime,), + "modified_by": (str,), + "negated": (bool,), + "policy_name": (str,), + "policy_type": (TagPolicyType,), + "required": (bool,), + "scope": (str,), + "source": (TagPolicySource,), + "tag_key": (str,), + "tag_value_patterns": ([str],), + "version": (int,), + } + + attribute_map = { + "created_at": "created_at", + "created_by": "created_by", + "deleted_at": "deleted_at", + "deleted_by": "deleted_by", + "enabled": "enabled", + "modified_at": "modified_at", + "modified_by": "modified_by", + "negated": "negated", + "policy_name": "policy_name", + "policy_type": "policy_type", + "required": "required", + "scope": "scope", + "source": "source", + "tag_key": "tag_key", + "tag_value_patterns": "tag_value_patterns", + "version": "version", + } + + def __init__( + self_, + created_at: datetime, + created_by: str, + enabled: bool, + modified_at: datetime, + modified_by: str, + negated: bool, + policy_name: str, + policy_type: TagPolicyType, + required: bool, + scope: str, + source: TagPolicySource, + tag_key: str, + tag_value_patterns: List[str], + version: int, + deleted_at: Union[datetime, none_type, UnsetType] = unset, + deleted_by: Union[str, none_type, UnsetType] = unset, + **kwargs, + ): + """ + The attributes of a tag policy resource. + + :param created_at: The RFC 3339 timestamp at which the policy was created. + :type created_at: datetime + + :param created_by: The identifier of the user who created the policy. + :type created_by: str + + :param deleted_at: The RFC 3339 timestamp at which the policy was soft-deleted. ``null`` if the policy has not been deleted. Only present when ``include_deleted=true`` is requested. + :type deleted_at: datetime, none_type, optional + + :param deleted_by: The identifier of the user who soft-deleted the policy. ``null`` if the policy has not been deleted. + :type deleted_by: str, none_type, optional + + :param enabled: Whether the policy is currently enforced. + :type enabled: bool + + :param modified_at: The RFC 3339 timestamp at which the policy was last modified. + :type modified_at: datetime + + :param modified_by: The identifier of the user who last modified the policy. + :type modified_by: str + + :param negated: When ``true`` , the policy matches tag values that do NOT match any of the supplied patterns. + :type negated: bool + + :param policy_name: Human-readable name for the tag policy. + :type policy_name: str + + :param policy_type: How the policy is enforced. ``blocking`` rejects telemetry that violates the policy. + ``surfacing`` only highlights non-compliant telemetry without blocking it. + :type policy_type: TagPolicyType + + :param required: When ``true`` , telemetry without this tag is treated as a violation. + :type required: bool + + :param scope: The scope the policy applies within. + :type scope: str + + :param source: The telemetry source that a tag policy applies to. + :type source: TagPolicySource + + :param tag_key: The tag key that the policy governs. + :type tag_key: str + + :param tag_value_patterns: The patterns that valid values for the tag key must match. + :type tag_value_patterns: [str] + + :param version: A monotonically increasing version counter that is incremented on each update. + :type version: int + """ + if deleted_at is not unset: + kwargs["deleted_at"] = deleted_at + if deleted_by is not unset: + kwargs["deleted_by"] = deleted_by + super().__init__(kwargs) + + self_.created_at = created_at + self_.created_by = created_by + self_.enabled = enabled + self_.modified_at = modified_at + self_.modified_by = modified_by + self_.negated = negated + self_.policy_name = policy_name + self_.policy_type = policy_type + self_.required = required + self_.scope = scope + self_.source = source + self_.tag_key = tag_key + self_.tag_value_patterns = tag_value_patterns + self_.version = version diff --git a/src/datadog_api_client/v2/model/tag_policy_create_attributes.py b/src/datadog_api_client/v2/model/tag_policy_create_attributes.py new file mode 100644 index 0000000000..d19e212167 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_create_attributes.py @@ -0,0 +1,116 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_create_type import TagPolicyCreateType + from datadog_api_client.v2.model.tag_policy_source import TagPolicySource + + +class TagPolicyCreateAttributes(ModelNormal): + validations = { + "tag_value_patterns": { + "min_items": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_create_type import TagPolicyCreateType + from datadog_api_client.v2.model.tag_policy_source import TagPolicySource + + return { + "enabled": (bool,), + "negated": (bool,), + "policy_name": (str,), + "policy_type": (TagPolicyCreateType,), + "required": (bool,), + "scope": (str,), + "source": (TagPolicySource,), + "tag_key": (str,), + "tag_value_patterns": ([str],), + } + + attribute_map = { + "enabled": "enabled", + "negated": "negated", + "policy_name": "policy_name", + "policy_type": "policy_type", + "required": "required", + "scope": "scope", + "source": "source", + "tag_key": "tag_key", + "tag_value_patterns": "tag_value_patterns", + } + + def __init__( + self_, + policy_name: str, + policy_type: TagPolicyCreateType, + scope: str, + source: TagPolicySource, + tag_key: str, + tag_value_patterns: List[str], + enabled: Union[bool, UnsetType] = unset, + negated: Union[bool, UnsetType] = unset, + required: Union[bool, UnsetType] = unset, + **kwargs, + ): + """ + Attributes that can be supplied when creating a tag policy. + + :param enabled: Whether the policy is currently enforced. Defaults to ``true`` for newly created policies. + :type enabled: bool, optional + + :param negated: When ``true`` , the policy matches tag values that do NOT match any of the supplied patterns. Defaults to ``false``. + :type negated: bool, optional + + :param policy_name: Human-readable name for the tag policy. + :type policy_name: str + + :param policy_type: The policy type allowed when creating a tag policy. Only ``surfacing`` is accepted at + creation time. + :type policy_type: TagPolicyCreateType + + :param required: When ``true`` , telemetry without this tag is treated as a violation. Defaults to ``false``. + :type required: bool, optional + + :param scope: The scope the policy applies within. Typically an environment, team, or + organization-level identifier used to limit where the policy is enforced. + :type scope: str + + :param source: The telemetry source that a tag policy applies to. + :type source: TagPolicySource + + :param tag_key: The tag key that the policy governs (for example, ``service`` ). + :type tag_key: str + + :param tag_value_patterns: One or more patterns that valid values for the tag key must match. At least one + pattern is required. + :type tag_value_patterns: [str] + """ + if enabled is not unset: + kwargs["enabled"] = enabled + if negated is not unset: + kwargs["negated"] = negated + if required is not unset: + kwargs["required"] = required + super().__init__(kwargs) + + self_.policy_name = policy_name + self_.policy_type = policy_type + self_.scope = scope + self_.source = source + self_.tag_key = tag_key + self_.tag_value_patterns = tag_value_patterns diff --git a/src/datadog_api_client/v2/model/tag_policy_create_data.py b/src/datadog_api_client/v2/model/tag_policy_create_data.py new file mode 100644 index 0000000000..c99b2f280f --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_create_data.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_create_attributes import TagPolicyCreateAttributes + from datadog_api_client.v2.model.tag_policy_resource_type import TagPolicyResourceType + + +class TagPolicyCreateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_create_attributes import TagPolicyCreateAttributes + from datadog_api_client.v2.model.tag_policy_resource_type import TagPolicyResourceType + + return { + "attributes": (TagPolicyCreateAttributes,), + "type": (TagPolicyResourceType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: TagPolicyCreateAttributes, type: TagPolicyResourceType, **kwargs): + """ + Data object for creating a tag policy. + + :param attributes: Attributes that can be supplied when creating a tag policy. + :type attributes: TagPolicyCreateAttributes + + :param type: JSON:API resource type for a tag policy. + :type type: TagPolicyResourceType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/tag_policy_create_request.py b/src/datadog_api_client/v2/model/tag_policy_create_request.py new file mode 100644 index 0000000000..c531b82719 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_create_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_create_data import TagPolicyCreateData + + +class TagPolicyCreateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_create_data import TagPolicyCreateData + + return { + "data": (TagPolicyCreateData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: TagPolicyCreateData, **kwargs): + """ + Payload for creating a new tag policy. + + :param data: Data object for creating a tag policy. + :type data: TagPolicyCreateData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/tag_policy_create_type.py b/src/datadog_api_client/v2/model/tag_policy_create_type.py new file mode 100644 index 0000000000..88f46445ed --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_create_type.py @@ -0,0 +1,36 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TagPolicyCreateType(ModelSimple): + """ + The policy type allowed when creating a tag policy. Only `surfacing` is accepted at + creation time. + + :param value: If omitted defaults to "surfacing". Must be one of ["surfacing"]. + :type value: str + """ + + allowed_values = { + "surfacing", + } + SURFACING: ClassVar["TagPolicyCreateType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TagPolicyCreateType.SURFACING = TagPolicyCreateType("surfacing") diff --git a/src/datadog_api_client/v2/model/tag_policy_data.py b/src/datadog_api_client/v2/model/tag_policy_data.py new file mode 100644 index 0000000000..1546583602 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_data.py @@ -0,0 +1,72 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_attributes import TagPolicyAttributes + from datadog_api_client.v2.model.tag_policy_relationships import TagPolicyRelationships + from datadog_api_client.v2.model.tag_policy_resource_type import TagPolicyResourceType + + +class TagPolicyData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_attributes import TagPolicyAttributes + from datadog_api_client.v2.model.tag_policy_relationships import TagPolicyRelationships + from datadog_api_client.v2.model.tag_policy_resource_type import TagPolicyResourceType + + return { + "attributes": (TagPolicyAttributes,), + "id": (str,), + "relationships": (TagPolicyRelationships,), + "type": (TagPolicyResourceType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "relationships": "relationships", + "type": "type", + } + + def __init__( + self_, + attributes: TagPolicyAttributes, + id: str, + type: TagPolicyResourceType, + relationships: Union[TagPolicyRelationships, UnsetType] = unset, + **kwargs, + ): + """ + A tag policy resource. + + :param attributes: The attributes of a tag policy resource. + :type attributes: TagPolicyAttributes + + :param id: The unique identifier of the tag policy. + :type id: str + + :param relationships: Related resources for a tag policy. Only present when the corresponding ``include`` query parameter is supplied. + :type relationships: TagPolicyRelationships, optional + + :param type: JSON:API resource type for a tag policy. + :type type: TagPolicyResourceType + """ + if relationships is not unset: + kwargs["relationships"] = relationships + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/tag_policy_include.py b/src/datadog_api_client/v2/model/tag_policy_include.py new file mode 100644 index 0000000000..bb0691bcc5 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_include.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TagPolicyInclude(ModelSimple): + """ + A related resource to include alongside a tag policy in the response. Currently the only supported value is `score`. + + :param value: If omitted defaults to "score". Must be one of ["score"]. + :type value: str + """ + + allowed_values = { + "score", + } + SCORE: ClassVar["TagPolicyInclude"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TagPolicyInclude.SCORE = TagPolicyInclude("score") diff --git a/src/datadog_api_client/v2/model/tag_policy_relationships.py b/src/datadog_api_client/v2/model/tag_policy_relationships.py new file mode 100644 index 0000000000..39ab37a666 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_relationships.py @@ -0,0 +1,42 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_score_relationship import TagPolicyScoreRelationship + + +class TagPolicyRelationships(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_score_relationship import TagPolicyScoreRelationship + + return { + "score": (TagPolicyScoreRelationship,), + } + + attribute_map = { + "score": "score", + } + + def __init__(self_, score: Union[TagPolicyScoreRelationship, UnsetType] = unset, **kwargs): + """ + Related resources for a tag policy. Only present when the corresponding ``include`` query parameter is supplied. + + :param score: A relationship to the compliance score resource for this policy. + :type score: TagPolicyScoreRelationship, optional + """ + if score is not unset: + kwargs["score"] = score + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_policy_resource_type.py b/src/datadog_api_client/v2/model/tag_policy_resource_type.py new file mode 100644 index 0000000000..8bedc6962f --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_resource_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TagPolicyResourceType(ModelSimple): + """ + JSON:API resource type for a tag policy. + + :param value: If omitted defaults to "tag_policy". Must be one of ["tag_policy"]. + :type value: str + """ + + allowed_values = { + "tag_policy", + } + TAG_POLICY: ClassVar["TagPolicyResourceType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TagPolicyResourceType.TAG_POLICY = TagPolicyResourceType("tag_policy") diff --git a/src/datadog_api_client/v2/model/tag_policy_response.py b/src/datadog_api_client/v2/model/tag_policy_response.py new file mode 100644 index 0000000000..578210f123 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_response.py @@ -0,0 +1,51 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_data import TagPolicyData + from datadog_api_client.v2.model.tag_policy_score_data import TagPolicyScoreData + + +class TagPolicyResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_data import TagPolicyData + from datadog_api_client.v2.model.tag_policy_score_data import TagPolicyScoreData + + return { + "data": (TagPolicyData,), + "included": ([TagPolicyScoreData],), + } + + attribute_map = { + "data": "data", + "included": "included", + } + + def __init__(self_, data: TagPolicyData, included: Union[List[TagPolicyScoreData], UnsetType] = unset, **kwargs): + """ + A single tag policy. + + :param data: A tag policy resource. + :type data: TagPolicyData + + :param included: Related resources fetched alongside the primary tag policies. Populated when an ``include`` query parameter is supplied. + :type included: [TagPolicyScoreData], optional + """ + if included is not unset: + kwargs["included"] = included + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/tag_policy_score_attributes.py b/src/datadog_api_client/v2/model/tag_policy_score_attributes.py new file mode 100644 index 0000000000..20f6a43bc7 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_score_attributes.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, +) + + +class TagPolicyScoreAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "score": (float, none_type), + "ts_end": (int,), + "ts_start": (int,), + "version": (int,), + } + + attribute_map = { + "score": "score", + "ts_end": "ts_end", + "ts_start": "ts_start", + "version": "version", + } + + def __init__(self_, score: Union[float, none_type], ts_end: int, ts_start: int, version: int, **kwargs): + """ + Attributes of a tag policy compliance score. + + :param score: The compliance score for the policy over the requested time window, as a percentage + between 0 and 100. ``null`` indicates that no relevant telemetry was found. + :type score: float, none_type + + :param ts_end: End of the time window the score was computed over, as a Unix timestamp in milliseconds. + :type ts_end: int + + :param ts_start: Start of the time window the score was computed over, as a Unix timestamp in milliseconds. + :type ts_start: int + + :param version: The version of the tag policy that the score was computed against. + :type version: int + """ + super().__init__(kwargs) + + self_.score = score + self_.ts_end = ts_end + self_.ts_start = ts_start + self_.version = version diff --git a/src/datadog_api_client/v2/model/tag_policy_score_data.py b/src/datadog_api_client/v2/model/tag_policy_score_data.py new file mode 100644 index 0000000000..c00fe9bb99 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_score_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_score_attributes import TagPolicyScoreAttributes + from datadog_api_client.v2.model.tag_policy_score_resource_type import TagPolicyScoreResourceType + + +class TagPolicyScoreData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_score_attributes import TagPolicyScoreAttributes + from datadog_api_client.v2.model.tag_policy_score_resource_type import TagPolicyScoreResourceType + + return { + "attributes": (TagPolicyScoreAttributes,), + "id": (str,), + "type": (TagPolicyScoreResourceType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__(self_, attributes: TagPolicyScoreAttributes, id: str, type: TagPolicyScoreResourceType, **kwargs): + """ + A compliance score resource for a tag policy. + + :param attributes: Attributes of a tag policy compliance score. + :type attributes: TagPolicyScoreAttributes + + :param id: The unique identifier of the compliance score resource. + :type id: str + + :param type: JSON:API resource type for a tag policy compliance score. + :type type: TagPolicyScoreResourceType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/tag_policy_score_relationship.py b/src/datadog_api_client/v2/model/tag_policy_score_relationship.py new file mode 100644 index 0000000000..2e23c42019 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_score_relationship.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_score_relationship_data import TagPolicyScoreRelationshipData + + +class TagPolicyScoreRelationship(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_score_relationship_data import TagPolicyScoreRelationshipData + + return { + "data": (TagPolicyScoreRelationshipData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: TagPolicyScoreRelationshipData, **kwargs): + """ + A relationship to the compliance score resource for this policy. + + :param data: Identifier of the related compliance score resource. + :type data: TagPolicyScoreRelationshipData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/tag_policy_score_relationship_data.py b/src/datadog_api_client/v2/model/tag_policy_score_relationship_data.py new file mode 100644 index 0000000000..0624a2b4cc --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_score_relationship_data.py @@ -0,0 +1,46 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_score_resource_type import TagPolicyScoreResourceType + + +class TagPolicyScoreRelationshipData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_score_resource_type import TagPolicyScoreResourceType + + return { + "id": (str,), + "type": (TagPolicyScoreResourceType,), + } + + attribute_map = { + "id": "id", + "type": "type", + } + + def __init__(self_, id: str, type: TagPolicyScoreResourceType, **kwargs): + """ + Identifier of the related compliance score resource. + + :param id: The unique identifier of the related compliance score resource. + :type id: str + + :param type: JSON:API resource type for a tag policy compliance score. + :type type: TagPolicyScoreResourceType + """ + super().__init__(kwargs) + + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/tag_policy_score_resource_type.py b/src/datadog_api_client/v2/model/tag_policy_score_resource_type.py new file mode 100644 index 0000000000..109ea20ec6 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_score_resource_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TagPolicyScoreResourceType(ModelSimple): + """ + JSON:API resource type for a tag policy compliance score. + + :param value: If omitted defaults to "tag_policy_score". Must be one of ["tag_policy_score"]. + :type value: str + """ + + allowed_values = { + "tag_policy_score", + } + TAG_POLICY_SCORE: ClassVar["TagPolicyScoreResourceType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TagPolicyScoreResourceType.TAG_POLICY_SCORE = TagPolicyScoreResourceType("tag_policy_score") diff --git a/src/datadog_api_client/v2/model/tag_policy_score_response.py b/src/datadog_api_client/v2/model/tag_policy_score_response.py new file mode 100644 index 0000000000..45456e3535 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_score_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_score_data import TagPolicyScoreData + + +class TagPolicyScoreResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_score_data import TagPolicyScoreData + + return { + "data": (TagPolicyScoreData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: TagPolicyScoreData, **kwargs): + """ + A tag policy compliance score. + + :param data: A compliance score resource for a tag policy. + :type data: TagPolicyScoreData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/tag_policy_source.py b/src/datadog_api_client/v2/model/tag_policy_source.py new file mode 100644 index 0000000000..49f0a4fe34 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_source.py @@ -0,0 +1,47 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TagPolicySource(ModelSimple): + """ + The telemetry source that a tag policy applies to. + + :param value: Must be one of ["logs", "spans", "metrics", "rum", "feed"]. + :type value: str + """ + + allowed_values = { + "logs", + "spans", + "metrics", + "rum", + "feed", + } + LOGS: ClassVar["TagPolicySource"] + SPANS: ClassVar["TagPolicySource"] + METRICS: ClassVar["TagPolicySource"] + RUM: ClassVar["TagPolicySource"] + FEED: ClassVar["TagPolicySource"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TagPolicySource.LOGS = TagPolicySource("logs") +TagPolicySource.SPANS = TagPolicySource("spans") +TagPolicySource.METRICS = TagPolicySource("metrics") +TagPolicySource.RUM = TagPolicySource("rum") +TagPolicySource.FEED = TagPolicySource("feed") diff --git a/src/datadog_api_client/v2/model/tag_policy_type.py b/src/datadog_api_client/v2/model/tag_policy_type.py new file mode 100644 index 0000000000..86b7beedc4 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_type.py @@ -0,0 +1,39 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TagPolicyType(ModelSimple): + """ + How the policy is enforced. `blocking` rejects telemetry that violates the policy. + `surfacing` only highlights non-compliant telemetry without blocking it. + + :param value: Must be one of ["blocking", "surfacing"]. + :type value: str + """ + + allowed_values = { + "blocking", + "surfacing", + } + BLOCKING: ClassVar["TagPolicyType"] + SURFACING: ClassVar["TagPolicyType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TagPolicyType.BLOCKING = TagPolicyType("blocking") +TagPolicyType.SURFACING = TagPolicyType("surfacing") diff --git a/src/datadog_api_client/v2/model/tag_policy_update_attributes.py b/src/datadog_api_client/v2/model/tag_policy_update_attributes.py new file mode 100644 index 0000000000..379fec2747 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_update_attributes.py @@ -0,0 +1,104 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_type import TagPolicyType + + +class TagPolicyUpdateAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_type import TagPolicyType + + return { + "enabled": (bool,), + "negated": (bool,), + "policy_name": (str,), + "policy_type": (TagPolicyType,), + "required": (bool,), + "scope": (str,), + "tag_key": (str,), + "tag_value_patterns": ([str],), + } + + attribute_map = { + "enabled": "enabled", + "negated": "negated", + "policy_name": "policy_name", + "policy_type": "policy_type", + "required": "required", + "scope": "scope", + "tag_key": "tag_key", + "tag_value_patterns": "tag_value_patterns", + } + + def __init__( + self_, + enabled: Union[bool, UnsetType] = unset, + negated: Union[bool, UnsetType] = unset, + policy_name: Union[str, UnsetType] = unset, + policy_type: Union[TagPolicyType, UnsetType] = unset, + required: Union[bool, UnsetType] = unset, + scope: Union[str, UnsetType] = unset, + tag_key: Union[str, UnsetType] = unset, + tag_value_patterns: Union[List[str], UnsetType] = unset, + **kwargs, + ): + """ + Mutable attributes of a tag policy. Each field is optional; omitting a field leaves its + current value unchanged. The ``source`` of a policy cannot be changed. + + :param enabled: Whether the policy is currently enforced. + :type enabled: bool, optional + + :param negated: When ``true`` , the policy matches tag values that do NOT match any of the supplied patterns. + :type negated: bool, optional + + :param policy_name: Human-readable name for the tag policy. + :type policy_name: str, optional + + :param policy_type: How the policy is enforced. ``blocking`` rejects telemetry that violates the policy. + ``surfacing`` only highlights non-compliant telemetry without blocking it. + :type policy_type: TagPolicyType, optional + + :param required: When ``true`` , telemetry without this tag is treated as a violation. + :type required: bool, optional + + :param scope: The scope the policy applies within. + :type scope: str, optional + + :param tag_key: The tag key that the policy governs. + :type tag_key: str, optional + + :param tag_value_patterns: One or more patterns that valid values for the tag key must match. + :type tag_value_patterns: [str], optional + """ + if enabled is not unset: + kwargs["enabled"] = enabled + if negated is not unset: + kwargs["negated"] = negated + if policy_name is not unset: + kwargs["policy_name"] = policy_name + if policy_type is not unset: + kwargs["policy_type"] = policy_type + if required is not unset: + kwargs["required"] = required + if scope is not unset: + kwargs["scope"] = scope + if tag_key is not unset: + kwargs["tag_key"] = tag_key + if tag_value_patterns is not unset: + kwargs["tag_value_patterns"] = tag_value_patterns + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/tag_policy_update_data.py b/src/datadog_api_client/v2/model/tag_policy_update_data.py new file mode 100644 index 0000000000..3a91003167 --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_update_data.py @@ -0,0 +1,64 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_update_attributes import TagPolicyUpdateAttributes + from datadog_api_client.v2.model.tag_policy_resource_type import TagPolicyResourceType + + +class TagPolicyUpdateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_update_attributes import TagPolicyUpdateAttributes + from datadog_api_client.v2.model.tag_policy_resource_type import TagPolicyResourceType + + return { + "attributes": (TagPolicyUpdateAttributes,), + "id": (str,), + "type": (TagPolicyResourceType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + id: str, + type: TagPolicyResourceType, + attributes: Union[TagPolicyUpdateAttributes, UnsetType] = unset, + **kwargs, + ): + """ + Data object for updating a tag policy. + + :param attributes: Mutable attributes of a tag policy. Each field is optional; omitting a field leaves its + current value unchanged. The ``source`` of a policy cannot be changed. + :type attributes: TagPolicyUpdateAttributes, optional + + :param id: The unique identifier of the tag policy being updated. + :type id: str + + :param type: JSON:API resource type for a tag policy. + :type type: TagPolicyResourceType + """ + if attributes is not unset: + kwargs["attributes"] = attributes + super().__init__(kwargs) + + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/tag_policy_update_request.py b/src/datadog_api_client/v2/model/tag_policy_update_request.py new file mode 100644 index 0000000000..447438b7ed --- /dev/null +++ b/src/datadog_api_client/v2/model/tag_policy_update_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.tag_policy_update_data import TagPolicyUpdateData + + +class TagPolicyUpdateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.tag_policy_update_data import TagPolicyUpdateData + + return { + "data": (TagPolicyUpdateData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: TagPolicyUpdateData, **kwargs): + """ + Payload for updating an existing tag policy. Only the supplied fields are modified. + + :param data: Data object for updating a tag policy. + :type data: TagPolicyUpdateData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/update_form_data.py b/src/datadog_api_client/v2/model/update_form_data.py new file mode 100644 index 0000000000..686869a1a3 --- /dev/null +++ b/src/datadog_api_client/v2/model/update_form_data.py @@ -0,0 +1,60 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, + UUID, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.update_form_data_attributes import UpdateFormDataAttributes + from datadog_api_client.v2.model.form_type import FormType + + +class UpdateFormData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.update_form_data_attributes import UpdateFormDataAttributes + from datadog_api_client.v2.model.form_type import FormType + + return { + "attributes": (UpdateFormDataAttributes,), + "id": (UUID,), + "type": (FormType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, attributes: UpdateFormDataAttributes, type: FormType, id: Union[UUID, UnsetType] = unset, **kwargs + ): + """ + The data for updating a form. + + :param attributes: The attributes for updating a form. + :type attributes: UpdateFormDataAttributes + + :param id: The ID of the form. + :type id: UUID, optional + + :param type: The resource type for a form. + :type type: FormType + """ + if id is not unset: + kwargs["id"] = id + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/update_form_data_attributes.py b/src/datadog_api_client/v2/model/update_form_data_attributes.py new file mode 100644 index 0000000000..900c5491f3 --- /dev/null +++ b/src/datadog_api_client/v2/model/update_form_data_attributes.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_update_attributes import FormUpdateAttributes + + +class UpdateFormDataAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_update_attributes import FormUpdateAttributes + + return { + "form_update": (FormUpdateAttributes,), + } + + attribute_map = { + "form_update": "form_update", + } + + def __init__(self_, form_update: FormUpdateAttributes, **kwargs): + """ + The attributes for updating a form. + + :param form_update: The fields to update on a form. At least one field must be provided. + :type form_update: FormUpdateAttributes + """ + super().__init__(kwargs) + + self_.form_update = form_update diff --git a/src/datadog_api_client/v2/model/update_form_request.py b/src/datadog_api_client/v2/model/update_form_request.py new file mode 100644 index 0000000000..9952694aab --- /dev/null +++ b/src/datadog_api_client/v2/model/update_form_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.update_form_data import UpdateFormData + + +class UpdateFormRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.update_form_data import UpdateFormData + + return { + "data": (UpdateFormData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: UpdateFormData, **kwargs): + """ + A request to update a form. + + :param data: The data for updating a form. + :type data: UpdateFormData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/upsert_and_publish_form_version_data.py b/src/datadog_api_client/v2/model/upsert_and_publish_form_version_data.py new file mode 100644 index 0000000000..936d75809e --- /dev/null +++ b/src/datadog_api_client/v2/model/upsert_and_publish_form_version_data.py @@ -0,0 +1,52 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.upsert_and_publish_form_version_data_attributes import ( + UpsertAndPublishFormVersionDataAttributes, + ) + from datadog_api_client.v2.model.form_version_type import FormVersionType + + +class UpsertAndPublishFormVersionData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.upsert_and_publish_form_version_data_attributes import ( + UpsertAndPublishFormVersionDataAttributes, + ) + from datadog_api_client.v2.model.form_version_type import FormVersionType + + return { + "attributes": (UpsertAndPublishFormVersionDataAttributes,), + "type": (FormVersionType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: UpsertAndPublishFormVersionDataAttributes, type: FormVersionType, **kwargs): + """ + The data for upserting and publishing a form version. + + :param attributes: The attributes for upserting and publishing a form version. + :type attributes: UpsertAndPublishFormVersionDataAttributes + + :param type: The resource type for a form version. + :type type: FormVersionType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/upsert_and_publish_form_version_data_attributes.py b/src/datadog_api_client/v2/model/upsert_and_publish_form_version_data_attributes.py new file mode 100644 index 0000000000..cc8a29678e --- /dev/null +++ b/src/datadog_api_client/v2/model/upsert_and_publish_form_version_data_attributes.py @@ -0,0 +1,66 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_data_definition import FormDataDefinition + from datadog_api_client.v2.model.form_ui_definition import FormUiDefinition + from datadog_api_client.v2.model.upsert_and_publish_form_version_upsert_params import ( + UpsertAndPublishFormVersionUpsertParams, + ) + + +class UpsertAndPublishFormVersionDataAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_data_definition import FormDataDefinition + from datadog_api_client.v2.model.form_ui_definition import FormUiDefinition + from datadog_api_client.v2.model.upsert_and_publish_form_version_upsert_params import ( + UpsertAndPublishFormVersionUpsertParams, + ) + + return { + "data_definition": (FormDataDefinition,), + "ui_definition": (FormUiDefinition,), + "upsert_params": (UpsertAndPublishFormVersionUpsertParams,), + } + + attribute_map = { + "data_definition": "data_definition", + "ui_definition": "ui_definition", + "upsert_params": "upsert_params", + } + + def __init__( + self_, + data_definition: FormDataDefinition, + ui_definition: FormUiDefinition, + upsert_params: UpsertAndPublishFormVersionUpsertParams, + **kwargs, + ): + """ + The attributes for upserting and publishing a form version. + + :param data_definition: A JSON Schema definition that describes the form's data fields. + :type data_definition: FormDataDefinition + + :param ui_definition: UI configuration for rendering form fields, including widget overrides, field ordering, and themes. + :type ui_definition: FormUiDefinition + + :param upsert_params: Concurrency control parameters for the upsert and publish operation. + :type upsert_params: UpsertAndPublishFormVersionUpsertParams + """ + super().__init__(kwargs) + + self_.data_definition = data_definition + self_.ui_definition = ui_definition + self_.upsert_params = upsert_params diff --git a/src/datadog_api_client/v2/model/upsert_and_publish_form_version_request.py b/src/datadog_api_client/v2/model/upsert_and_publish_form_version_request.py new file mode 100644 index 0000000000..3fe0ea6e77 --- /dev/null +++ b/src/datadog_api_client/v2/model/upsert_and_publish_form_version_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.upsert_and_publish_form_version_data import UpsertAndPublishFormVersionData + + +class UpsertAndPublishFormVersionRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.upsert_and_publish_form_version_data import UpsertAndPublishFormVersionData + + return { + "data": (UpsertAndPublishFormVersionData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: UpsertAndPublishFormVersionData, **kwargs): + """ + A request to upsert and publish a form version in a single transaction. + + :param data: The data for upserting and publishing a form version. + :type data: UpsertAndPublishFormVersionData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/upsert_and_publish_form_version_upsert_params.py b/src/datadog_api_client/v2/model/upsert_and_publish_form_version_upsert_params.py new file mode 100644 index 0000000000..d8340148bd --- /dev/null +++ b/src/datadog_api_client/v2/model/upsert_and_publish_form_version_upsert_params.py @@ -0,0 +1,33 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class UpsertAndPublishFormVersionUpsertParams(ModelNormal): + @cached_property + def openapi_types(_): + return { + "etag": (str,), + } + + attribute_map = { + "etag": "etag", + } + + def __init__(self_, etag: str, **kwargs): + """ + Concurrency control parameters for the upsert and publish operation. + + :param etag: The ETag of the latest version used for optimistic concurrency control. + :type etag: str + """ + super().__init__(kwargs) + + self_.etag = etag diff --git a/src/datadog_api_client/v2/model/upsert_form_version_data.py b/src/datadog_api_client/v2/model/upsert_form_version_data.py new file mode 100644 index 0000000000..04eb4a0dec --- /dev/null +++ b/src/datadog_api_client/v2/model/upsert_form_version_data.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.upsert_form_version_data_attributes import UpsertFormVersionDataAttributes + from datadog_api_client.v2.model.form_version_type import FormVersionType + + +class UpsertFormVersionData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.upsert_form_version_data_attributes import UpsertFormVersionDataAttributes + from datadog_api_client.v2.model.form_version_type import FormVersionType + + return { + "attributes": (UpsertFormVersionDataAttributes,), + "type": (FormVersionType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__(self_, attributes: UpsertFormVersionDataAttributes, type: FormVersionType, **kwargs): + """ + The data for creating or updating a form version. + + :param attributes: The attributes for creating or updating a form version. + :type attributes: UpsertFormVersionDataAttributes + + :param type: The resource type for a form version. + :type type: FormVersionType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/upsert_form_version_data_attributes.py b/src/datadog_api_client/v2/model/upsert_form_version_data_attributes.py new file mode 100644 index 0000000000..309a20523b --- /dev/null +++ b/src/datadog_api_client/v2/model/upsert_form_version_data_attributes.py @@ -0,0 +1,71 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.form_data_definition import FormDataDefinition + from datadog_api_client.v2.model.form_version_state import FormVersionState + from datadog_api_client.v2.model.form_ui_definition import FormUiDefinition + from datadog_api_client.v2.model.upsert_form_version_upsert_params import UpsertFormVersionUpsertParams + + +class UpsertFormVersionDataAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.form_data_definition import FormDataDefinition + from datadog_api_client.v2.model.form_version_state import FormVersionState + from datadog_api_client.v2.model.form_ui_definition import FormUiDefinition + from datadog_api_client.v2.model.upsert_form_version_upsert_params import UpsertFormVersionUpsertParams + + return { + "data_definition": (FormDataDefinition,), + "state": (FormVersionState,), + "ui_definition": (FormUiDefinition,), + "upsert_params": (UpsertFormVersionUpsertParams,), + } + + attribute_map = { + "data_definition": "data_definition", + "state": "state", + "ui_definition": "ui_definition", + "upsert_params": "upsert_params", + } + + def __init__( + self_, + data_definition: FormDataDefinition, + state: FormVersionState, + ui_definition: FormUiDefinition, + upsert_params: UpsertFormVersionUpsertParams, + **kwargs, + ): + """ + The attributes for creating or updating a form version. + + :param data_definition: A JSON Schema definition that describes the form's data fields. + :type data_definition: FormDataDefinition + + :param state: The state of a form version. + :type state: FormVersionState + + :param ui_definition: UI configuration for rendering form fields, including widget overrides, field ordering, and themes. + :type ui_definition: FormUiDefinition + + :param upsert_params: Concurrency control parameters for the form version upsert operation. + :type upsert_params: UpsertFormVersionUpsertParams + """ + super().__init__(kwargs) + + self_.data_definition = data_definition + self_.state = state + self_.ui_definition = ui_definition + self_.upsert_params = upsert_params diff --git a/src/datadog_api_client/v2/model/upsert_form_version_request.py b/src/datadog_api_client/v2/model/upsert_form_version_request.py new file mode 100644 index 0000000000..0f96354ae3 --- /dev/null +++ b/src/datadog_api_client/v2/model/upsert_form_version_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.upsert_form_version_data import UpsertFormVersionData + + +class UpsertFormVersionRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.upsert_form_version_data import UpsertFormVersionData + + return { + "data": (UpsertFormVersionData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: UpsertFormVersionData, **kwargs): + """ + A request to create or update a form version. + + :param data: The data for creating or updating a form version. + :type data: UpsertFormVersionData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/upsert_form_version_upsert_params.py b/src/datadog_api_client/v2/model/upsert_form_version_upsert_params.py new file mode 100644 index 0000000000..f281aa9bad --- /dev/null +++ b/src/datadog_api_client/v2/model/upsert_form_version_upsert_params.py @@ -0,0 +1,63 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.latest_version_match_policy import LatestVersionMatchPolicy + + +class UpsertFormVersionUpsertParams(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.latest_version_match_policy import LatestVersionMatchPolicy + + return { + "etag": (str, none_type), + "insert_only": (bool,), + "match_policy": (LatestVersionMatchPolicy,), + } + + attribute_map = { + "etag": "etag", + "insert_only": "insert_only", + "match_policy": "match_policy", + } + + def __init__( + self_, + match_policy: LatestVersionMatchPolicy, + etag: Union[str, none_type, UnsetType] = unset, + insert_only: Union[bool, UnsetType] = unset, + **kwargs, + ): + """ + Concurrency control parameters for the form version upsert operation. + + :param etag: The ETag of the latest version. Required when ``match_policy`` is ``if_etag_match``. + :type etag: str, none_type, optional + + :param insert_only: If true, only a new version may be inserted; updating the current draft is not allowed. + :type insert_only: bool, optional + + :param match_policy: The policy for matching the latest form version during an upsert operation. + :type match_policy: LatestVersionMatchPolicy + """ + if etag is not unset: + kwargs["etag"] = etag + if insert_only is not unset: + kwargs["insert_only"] = insert_only + super().__init__(kwargs) + + self_.match_policy = match_policy diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index c66141a250..1a4cffa253 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -43,6 +43,19 @@ from datadog_api_client.v2.model.aws_ccm_config_response_attributes import AWSCcmConfigResponseAttributes from datadog_api_client.v2.model.aws_ccm_config_response_data import AWSCcmConfigResponseData from datadog_api_client.v2.model.aws_ccm_config_type import AWSCcmConfigType +from datadog_api_client.v2.model.aws_ccm_config_validation_issue import AWSCcmConfigValidationIssue +from datadog_api_client.v2.model.aws_ccm_config_validation_issue_code import AWSCcmConfigValidationIssueCode +from datadog_api_client.v2.model.aws_ccm_config_validation_request import AWSCcmConfigValidationRequest +from datadog_api_client.v2.model.aws_ccm_config_validation_request_attributes import ( + AWSCcmConfigValidationRequestAttributes, +) +from datadog_api_client.v2.model.aws_ccm_config_validation_request_data import AWSCcmConfigValidationRequestData +from datadog_api_client.v2.model.aws_ccm_config_validation_response import AWSCcmConfigValidationResponse +from datadog_api_client.v2.model.aws_ccm_config_validation_response_attributes import ( + AWSCcmConfigValidationResponseAttributes, +) +from datadog_api_client.v2.model.aws_ccm_config_validation_response_data import AWSCcmConfigValidationResponseData +from datadog_api_client.v2.model.aws_ccm_config_validation_type import AWSCcmConfigValidationType from datadog_api_client.v2.model.aws_cloud_auth_persona_mapping_attributes_response import ( AWSCloudAuthPersonaMappingAttributesResponse, ) @@ -1164,6 +1177,9 @@ from datadog_api_client.v2.model.clickup_integration import ClickupIntegration from datadog_api_client.v2.model.clickup_integration_type import ClickupIntegrationType from datadog_api_client.v2.model.clickup_integration_update import ClickupIntegrationUpdate +from datadog_api_client.v2.model.clone_form_data import CloneFormData +from datadog_api_client.v2.model.clone_form_data_attributes import CloneFormDataAttributes +from datadog_api_client.v2.model.clone_form_request import CloneFormRequest from datadog_api_client.v2.model.cloud_asset_type import CloudAssetType from datadog_api_client.v2.model.cloud_configuration_compliance_rule_options import ( CloudConfigurationComplianceRuleOptions, @@ -1644,6 +1660,9 @@ from datadog_api_client.v2.model.create_feature_flag_data import CreateFeatureFlagData from datadog_api_client.v2.model.create_feature_flag_data_type import CreateFeatureFlagDataType from datadog_api_client.v2.model.create_feature_flag_request import CreateFeatureFlagRequest +from datadog_api_client.v2.model.create_form_data import CreateFormData +from datadog_api_client.v2.model.create_form_data_attributes import CreateFormDataAttributes +from datadog_api_client.v2.model.create_form_request import CreateFormRequest from datadog_api_client.v2.model.create_incident_notification_rule_request import CreateIncidentNotificationRuleRequest from datadog_api_client.v2.model.create_incident_notification_template_request import ( CreateIncidentNotificationTemplateRequest, @@ -1803,6 +1822,15 @@ from datadog_api_client.v2.model.create_workflow_response import CreateWorkflowResponse from datadog_api_client.v2.model.creator import Creator from datadog_api_client.v2.model.csm_agent_data import CsmAgentData +from datadog_api_client.v2.model.csm_agentless_host_attributes import CsmAgentlessHostAttributes +from datadog_api_client.v2.model.csm_agentless_host_data import CsmAgentlessHostData +from datadog_api_client.v2.model.csm_agentless_host_facet_attributes import CsmAgentlessHostFacetAttributes +from datadog_api_client.v2.model.csm_agentless_host_facet_data import CsmAgentlessHostFacetData +from datadog_api_client.v2.model.csm_agentless_host_facet_type import CsmAgentlessHostFacetType +from datadog_api_client.v2.model.csm_agentless_host_facets_response import CsmAgentlessHostFacetsResponse +from datadog_api_client.v2.model.csm_agentless_host_resource_type import CsmAgentlessHostResourceType +from datadog_api_client.v2.model.csm_agentless_host_type import CsmAgentlessHostType +from datadog_api_client.v2.model.csm_agentless_hosts_response import CsmAgentlessHostsResponse from datadog_api_client.v2.model.csm_agents_attributes import CsmAgentsAttributes from datadog_api_client.v2.model.csm_agents_response import CsmAgentsResponse from datadog_api_client.v2.model.csm_cloud_accounts_coverage_analysis_attributes import ( @@ -1812,7 +1840,14 @@ from datadog_api_client.v2.model.csm_cloud_accounts_coverage_analysis_response import ( CsmCloudAccountsCoverageAnalysisResponse, ) +from datadog_api_client.v2.model.csm_cloud_provider import CsmCloudProvider from datadog_api_client.v2.model.csm_coverage_analysis import CsmCoverageAnalysis +from datadog_api_client.v2.model.csm_facet_info_type import CsmFacetInfoType +from datadog_api_client.v2.model.csm_host_facet_info_attributes import CsmHostFacetInfoAttributes +from datadog_api_client.v2.model.csm_host_facet_info_data import CsmHostFacetInfoData +from datadog_api_client.v2.model.csm_host_facet_info_item import CsmHostFacetInfoItem +from datadog_api_client.v2.model.csm_host_facet_info_meta import CsmHostFacetInfoMeta +from datadog_api_client.v2.model.csm_host_facet_info_response import CsmHostFacetInfoResponse from datadog_api_client.v2.model.csm_hosts_and_containers_coverage_analysis_attributes import ( CsmHostsAndContainersCoverageAnalysisAttributes, ) @@ -1827,6 +1862,16 @@ ) from datadog_api_client.v2.model.csm_serverless_coverage_analysis_data import CsmServerlessCoverageAnalysisData from datadog_api_client.v2.model.csm_serverless_coverage_analysis_response import CsmServerlessCoverageAnalysisResponse +from datadog_api_client.v2.model.csm_settings_meta import CsmSettingsMeta +from datadog_api_client.v2.model.csm_unified_host_attributes import CsmUnifiedHostAttributes +from datadog_api_client.v2.model.csm_unified_host_data import CsmUnifiedHostData +from datadog_api_client.v2.model.csm_unified_host_facet_data import CsmUnifiedHostFacetData +from datadog_api_client.v2.model.csm_unified_host_facet_type import CsmUnifiedHostFacetType +from datadog_api_client.v2.model.csm_unified_host_facets_response import CsmUnifiedHostFacetsResponse +from datadog_api_client.v2.model.csm_unified_host_source import CsmUnifiedHostSource +from datadog_api_client.v2.model.csm_unified_host_type import CsmUnifiedHostType +from datadog_api_client.v2.model.csm_unified_hosts_meta import CsmUnifiedHostsMeta +from datadog_api_client.v2.model.csm_unified_hosts_response import CsmUnifiedHostsResponse from datadog_api_client.v2.model.custom_attribute_config import CustomAttributeConfig from datadog_api_client.v2.model.custom_attribute_config_attributes_create import CustomAttributeConfigAttributesCreate from datadog_api_client.v2.model.custom_attribute_config_create import CustomAttributeConfigCreate @@ -2076,6 +2121,8 @@ from datadog_api_client.v2.model.data_deletion_response_item_attributes import DataDeletionResponseItemAttributes from datadog_api_client.v2.model.data_deletion_response_meta import DataDeletionResponseMeta from datadog_api_client.v2.model.data_export_config import DataExportConfig +from datadog_api_client.v2.model.data_observability_monitor_run_status import DataObservabilityMonitorRunStatus +from datadog_api_client.v2.model.data_observability_monitor_run_type import DataObservabilityMonitorRunType from datadog_api_client.v2.model.data_relationships_teams import DataRelationshipsTeams from datadog_api_client.v2.model.data_relationships_teams_data_items import DataRelationshipsTeamsDataItems from datadog_api_client.v2.model.data_relationships_teams_data_items_type import DataRelationshipsTeamsDataItemsType @@ -2165,6 +2212,8 @@ from datadog_api_client.v2.model.delete_apps_response import DeleteAppsResponse from datadog_api_client.v2.model.delete_apps_response_data_items import DeleteAppsResponseDataItems from datadog_api_client.v2.model.delete_custom_framework_response import DeleteCustomFrameworkResponse +from datadog_api_client.v2.model.delete_form_data import DeleteFormData +from datadog_api_client.v2.model.delete_form_response import DeleteFormResponse from datadog_api_client.v2.model.deleted_suite_response_data import DeletedSuiteResponseData from datadog_api_client.v2.model.deleted_suite_response_data_attributes import DeletedSuiteResponseDataAttributes from datadog_api_client.v2.model.deleted_suites_request_delete import DeletedSuitesRequestDelete @@ -2699,13 +2748,6 @@ from datadog_api_client.v2.model.fleet_agents_response_data import FleetAgentsResponseData from datadog_api_client.v2.model.fleet_agents_response_data_attributes import FleetAgentsResponseDataAttributes from datadog_api_client.v2.model.fleet_agents_response_meta import FleetAgentsResponseMeta -from datadog_api_client.v2.model.fleet_cluster_attributes import FleetClusterAttributes -from datadog_api_client.v2.model.fleet_cluster_node_count_by_status import FleetClusterNodeCountByStatus -from datadog_api_client.v2.model.fleet_cluster_pod_count_by_state import FleetClusterPodCountByState -from datadog_api_client.v2.model.fleet_clusters_response import FleetClustersResponse -from datadog_api_client.v2.model.fleet_clusters_response_data import FleetClustersResponseData -from datadog_api_client.v2.model.fleet_clusters_response_data_attributes import FleetClustersResponseDataAttributes -from datadog_api_client.v2.model.fleet_clusters_response_meta import FleetClustersResponseMeta from datadog_api_client.v2.model.fleet_configuration_file import FleetConfigurationFile from datadog_api_client.v2.model.fleet_configuration_layer import FleetConfigurationLayer from datadog_api_client.v2.model.fleet_deployment import FleetDeployment @@ -2733,12 +2775,6 @@ from datadog_api_client.v2.model.fleet_deployments_response import FleetDeploymentsResponse from datadog_api_client.v2.model.fleet_deployments_response_meta import FleetDeploymentsResponseMeta from datadog_api_client.v2.model.fleet_detected_integration import FleetDetectedIntegration -from datadog_api_client.v2.model.fleet_instrumented_pod_group_attributes import FleetInstrumentedPodGroupAttributes -from datadog_api_client.v2.model.fleet_instrumented_pods_response import FleetInstrumentedPodsResponse -from datadog_api_client.v2.model.fleet_instrumented_pods_response_data import FleetInstrumentedPodsResponseData -from datadog_api_client.v2.model.fleet_instrumented_pods_response_data_attributes import ( - FleetInstrumentedPodsResponseDataAttributes, -) from datadog_api_client.v2.model.fleet_integration_details import FleetIntegrationDetails from datadog_api_client.v2.model.fleet_integrations_by_status import FleetIntegrationsByStatus from datadog_api_client.v2.model.fleet_otel_collector import FleetOtelCollector @@ -2762,8 +2798,29 @@ from datadog_api_client.v2.model.fleet_tracers_response_meta import FleetTracersResponseMeta from datadog_api_client.v2.model.flutter_sourcemap_attributes import FlutterSourcemapAttributes from datadog_api_client.v2.model.flutter_sourcemap_data import FlutterSourcemapData +from datadog_api_client.v2.model.form_data import FormData +from datadog_api_client.v2.model.form_data_attributes import FormDataAttributes +from datadog_api_client.v2.model.form_data_definition import FormDataDefinition +from datadog_api_client.v2.model.form_data_definition_type import FormDataDefinitionType +from datadog_api_client.v2.model.form_datastore_config_attributes import FormDatastoreConfigAttributes +from datadog_api_client.v2.model.form_publication_attributes import FormPublicationAttributes +from datadog_api_client.v2.model.form_publication_data import FormPublicationData +from datadog_api_client.v2.model.form_publication_response import FormPublicationResponse +from datadog_api_client.v2.model.form_publication_type import FormPublicationType +from datadog_api_client.v2.model.form_response import FormResponse from datadog_api_client.v2.model.form_trigger import FormTrigger from datadog_api_client.v2.model.form_trigger_wrapper import FormTriggerWrapper +from datadog_api_client.v2.model.form_type import FormType +from datadog_api_client.v2.model.form_ui_definition import FormUiDefinition +from datadog_api_client.v2.model.form_ui_definition_ui_theme import FormUiDefinitionUiTheme +from datadog_api_client.v2.model.form_ui_definition_ui_theme_primary_color import FormUiDefinitionUiThemePrimaryColor +from datadog_api_client.v2.model.form_update_attributes import FormUpdateAttributes +from datadog_api_client.v2.model.form_version_attributes import FormVersionAttributes +from datadog_api_client.v2.model.form_version_data import FormVersionData +from datadog_api_client.v2.model.form_version_response import FormVersionResponse +from datadog_api_client.v2.model.form_version_state import FormVersionState +from datadog_api_client.v2.model.form_version_type import FormVersionType +from datadog_api_client.v2.model.forms_response import FormsResponse from datadog_api_client.v2.model.formula_limit import FormulaLimit from datadog_api_client.v2.model.framework_handle_and_version_response_data import FrameworkHandleAndVersionResponseData from datadog_api_client.v2.model.freshservice_api_key import FreshserviceAPIKey @@ -2870,6 +2927,15 @@ from datadog_api_client.v2.model.get_blueprints_response import GetBlueprintsResponse from datadog_api_client.v2.model.get_custom_framework_response import GetCustomFrameworkResponse from datadog_api_client.v2.model.get_data_deletions_response_body import GetDataDeletionsResponseBody +from datadog_api_client.v2.model.get_data_observability_monitor_run_status_response import ( + GetDataObservabilityMonitorRunStatusResponse, +) +from datadog_api_client.v2.model.get_data_observability_monitor_run_status_response_attributes import ( + GetDataObservabilityMonitorRunStatusResponseAttributes, +) +from datadog_api_client.v2.model.get_data_observability_monitor_run_status_response_data import ( + GetDataObservabilityMonitorRunStatusResponseData, +) from datadog_api_client.v2.model.get_device_attributes import GetDeviceAttributes from datadog_api_client.v2.model.get_device_data import GetDeviceData from datadog_api_client.v2.model.get_device_response import GetDeviceResponse @@ -2963,7 +3029,17 @@ from datadog_api_client.v2.model.global_incident_settings_request import GlobalIncidentSettingsRequest from datadog_api_client.v2.model.global_incident_settings_response import GlobalIncidentSettingsResponse from datadog_api_client.v2.model.global_incident_settings_type import GlobalIncidentSettingsType +from datadog_api_client.v2.model.global_org import GlobalOrg +from datadog_api_client.v2.model.global_org_attributes import GlobalOrgAttributes +from datadog_api_client.v2.model.global_org_data import GlobalOrgData from datadog_api_client.v2.model.global_org_identifier import GlobalOrgIdentifier +from datadog_api_client.v2.model.global_org_type import GlobalOrgType +from datadog_api_client.v2.model.global_org_user import GlobalOrgUser +from datadog_api_client.v2.model.global_orgs_links import GlobalOrgsLinks +from datadog_api_client.v2.model.global_orgs_meta import GlobalOrgsMeta +from datadog_api_client.v2.model.global_orgs_meta_page import GlobalOrgsMetaPage +from datadog_api_client.v2.model.global_orgs_meta_page_type import GlobalOrgsMetaPageType +from datadog_api_client.v2.model.global_orgs_response import GlobalOrgsResponse from datadog_api_client.v2.model.global_variable_data import GlobalVariableData from datadog_api_client.v2.model.global_variable_json_patch_request import GlobalVariableJsonPatchRequest from datadog_api_client.v2.model.global_variable_json_patch_request_data import GlobalVariableJsonPatchRequestData @@ -2988,6 +3064,12 @@ from datadog_api_client.v2.model.google_chat_create_organization_handle_request_data import ( GoogleChatCreateOrganizationHandleRequestData, ) +from datadog_api_client.v2.model.google_chat_delegated_user_attributes import GoogleChatDelegatedUserAttributes +from datadog_api_client.v2.model.google_chat_delegated_user_data import GoogleChatDelegatedUserData +from datadog_api_client.v2.model.google_chat_delegated_user_response import GoogleChatDelegatedUserResponse +from datadog_api_client.v2.model.google_chat_delegated_user_type import GoogleChatDelegatedUserType +from datadog_api_client.v2.model.google_chat_organization_attributes import GoogleChatOrganizationAttributes +from datadog_api_client.v2.model.google_chat_organization_data import GoogleChatOrganizationData from datadog_api_client.v2.model.google_chat_organization_handle_response import GoogleChatOrganizationHandleResponse from datadog_api_client.v2.model.google_chat_organization_handle_response_attributes import ( GoogleChatOrganizationHandleResponseAttributes, @@ -2997,6 +3079,35 @@ ) from datadog_api_client.v2.model.google_chat_organization_handle_type import GoogleChatOrganizationHandleType from datadog_api_client.v2.model.google_chat_organization_handles_response import GoogleChatOrganizationHandlesResponse +from datadog_api_client.v2.model.google_chat_organization_relationships import GoogleChatOrganizationRelationships +from datadog_api_client.v2.model.google_chat_organization_relationships_delegated_user import ( + GoogleChatOrganizationRelationshipsDelegatedUser, +) +from datadog_api_client.v2.model.google_chat_organization_relationships_delegated_user_data import ( + GoogleChatOrganizationRelationshipsDelegatedUserData, +) +from datadog_api_client.v2.model.google_chat_organization_response import GoogleChatOrganizationResponse +from datadog_api_client.v2.model.google_chat_organization_type import GoogleChatOrganizationType +from datadog_api_client.v2.model.google_chat_organizations_response import GoogleChatOrganizationsResponse +from datadog_api_client.v2.model.google_chat_target_audience_attributes import GoogleChatTargetAudienceAttributes +from datadog_api_client.v2.model.google_chat_target_audience_create_request import GoogleChatTargetAudienceCreateRequest +from datadog_api_client.v2.model.google_chat_target_audience_create_request_attributes import ( + GoogleChatTargetAudienceCreateRequestAttributes, +) +from datadog_api_client.v2.model.google_chat_target_audience_create_request_data import ( + GoogleChatTargetAudienceCreateRequestData, +) +from datadog_api_client.v2.model.google_chat_target_audience_data import GoogleChatTargetAudienceData +from datadog_api_client.v2.model.google_chat_target_audience_response import GoogleChatTargetAudienceResponse +from datadog_api_client.v2.model.google_chat_target_audience_type import GoogleChatTargetAudienceType +from datadog_api_client.v2.model.google_chat_target_audience_update_request import GoogleChatTargetAudienceUpdateRequest +from datadog_api_client.v2.model.google_chat_target_audience_update_request_attributes import ( + GoogleChatTargetAudienceUpdateRequestAttributes, +) +from datadog_api_client.v2.model.google_chat_target_audience_update_request_data import ( + GoogleChatTargetAudienceUpdateRequestData, +) +from datadog_api_client.v2.model.google_chat_target_audiences_response import GoogleChatTargetAudiencesResponse from datadog_api_client.v2.model.google_chat_update_organization_handle_request import ( GoogleChatUpdateOrganizationHandleRequest, ) @@ -3249,19 +3360,6 @@ from datadog_api_client.v2.model.incident_search_response_user_facet_data import IncidentSearchResponseUserFacetData from datadog_api_client.v2.model.incident_search_results_type import IncidentSearchResultsType from datadog_api_client.v2.model.incident_search_sort_order import IncidentSearchSortOrder -from datadog_api_client.v2.model.incident_service_create_attributes import IncidentServiceCreateAttributes -from datadog_api_client.v2.model.incident_service_create_data import IncidentServiceCreateData -from datadog_api_client.v2.model.incident_service_create_request import IncidentServiceCreateRequest -from datadog_api_client.v2.model.incident_service_included_items import IncidentServiceIncludedItems -from datadog_api_client.v2.model.incident_service_relationships import IncidentServiceRelationships -from datadog_api_client.v2.model.incident_service_response import IncidentServiceResponse -from datadog_api_client.v2.model.incident_service_response_attributes import IncidentServiceResponseAttributes -from datadog_api_client.v2.model.incident_service_response_data import IncidentServiceResponseData -from datadog_api_client.v2.model.incident_service_type import IncidentServiceType -from datadog_api_client.v2.model.incident_service_update_attributes import IncidentServiceUpdateAttributes -from datadog_api_client.v2.model.incident_service_update_data import IncidentServiceUpdateData -from datadog_api_client.v2.model.incident_service_update_request import IncidentServiceUpdateRequest -from datadog_api_client.v2.model.incident_services_response import IncidentServicesResponse from datadog_api_client.v2.model.incident_severity import IncidentSeverity from datadog_api_client.v2.model.incident_timeline_cell_create_attributes import IncidentTimelineCellCreateAttributes from datadog_api_client.v2.model.incident_timeline_cell_markdown_content_type import ( @@ -3536,7 +3634,13 @@ ) from datadog_api_client.v2.model.llm_obs_annotated_interactions_response import LLMObsAnnotatedInteractionsResponse from datadog_api_client.v2.model.llm_obs_annotated_interactions_type import LLMObsAnnotatedInteractionsType +from datadog_api_client.v2.model.llm_obs_annotation_assessment import LLMObsAnnotationAssessment +from datadog_api_client.v2.model.llm_obs_annotation_error import LLMObsAnnotationError from datadog_api_client.v2.model.llm_obs_annotation_item import LLMObsAnnotationItem +from datadog_api_client.v2.model.llm_obs_annotation_item_response import LLMObsAnnotationItemResponse +from datadog_api_client.v2.model.llm_obs_annotation_label_value import LLMObsAnnotationLabelValue +from datadog_api_client.v2.model.llm_obs_annotation_label_value_response import LLMObsAnnotationLabelValueResponse +from datadog_api_client.v2.model.llm_obs_annotation_label_value_value import LLMObsAnnotationLabelValueValue from datadog_api_client.v2.model.llm_obs_annotation_queue_data_attributes_request import ( LLMObsAnnotationQueueDataAttributesRequest, ) @@ -3596,6 +3700,17 @@ from datadog_api_client.v2.model.llm_obs_annotation_queue_update_request import LLMObsAnnotationQueueUpdateRequest from datadog_api_client.v2.model.llm_obs_annotation_queues_response import LLMObsAnnotationQueuesResponse from datadog_api_client.v2.model.llm_obs_annotation_schema import LLMObsAnnotationSchema +from datadog_api_client.v2.model.llm_obs_annotations_data_attributes_request import ( + LLMObsAnnotationsDataAttributesRequest, +) +from datadog_api_client.v2.model.llm_obs_annotations_data_attributes_response import ( + LLMObsAnnotationsDataAttributesResponse, +) +from datadog_api_client.v2.model.llm_obs_annotations_data_request import LLMObsAnnotationsDataRequest +from datadog_api_client.v2.model.llm_obs_annotations_data_response import LLMObsAnnotationsDataResponse +from datadog_api_client.v2.model.llm_obs_annotations_request import LLMObsAnnotationsRequest +from datadog_api_client.v2.model.llm_obs_annotations_response import LLMObsAnnotationsResponse +from datadog_api_client.v2.model.llm_obs_annotations_type import LLMObsAnnotationsType from datadog_api_client.v2.model.llm_obs_anthropic_effort import LLMObsAnthropicEffort from datadog_api_client.v2.model.llm_obs_anthropic_metadata import LLMObsAnthropicMetadata from datadog_api_client.v2.model.llm_obs_anthropic_thinking_config import LLMObsAnthropicThinkingConfig @@ -3720,6 +3835,7 @@ from datadog_api_client.v2.model.llm_obs_dataset_version_type import LLMObsDatasetVersionType from datadog_api_client.v2.model.llm_obs_dataset_versions_response import LLMObsDatasetVersionsResponse from datadog_api_client.v2.model.llm_obs_datasets_response import LLMObsDatasetsResponse +from datadog_api_client.v2.model.llm_obs_delete_annotation_error import LLMObsDeleteAnnotationError from datadog_api_client.v2.model.llm_obs_delete_annotation_queue_interactions_data_attributes_request import ( LLMObsDeleteAnnotationQueueInteractionsDataAttributesRequest, ) @@ -3729,6 +3845,16 @@ from datadog_api_client.v2.model.llm_obs_delete_annotation_queue_interactions_request import ( LLMObsDeleteAnnotationQueueInteractionsRequest, ) +from datadog_api_client.v2.model.llm_obs_delete_annotations_data_attributes_request import ( + LLMObsDeleteAnnotationsDataAttributesRequest, +) +from datadog_api_client.v2.model.llm_obs_delete_annotations_data_attributes_response import ( + LLMObsDeleteAnnotationsDataAttributesResponse, +) +from datadog_api_client.v2.model.llm_obs_delete_annotations_data_request import LLMObsDeleteAnnotationsDataRequest +from datadog_api_client.v2.model.llm_obs_delete_annotations_data_response import LLMObsDeleteAnnotationsDataResponse +from datadog_api_client.v2.model.llm_obs_delete_annotations_request import LLMObsDeleteAnnotationsRequest +from datadog_api_client.v2.model.llm_obs_delete_annotations_response import LLMObsDeleteAnnotationsResponse from datadog_api_client.v2.model.llm_obs_delete_dataset_records_data_attributes_request import ( LLMObsDeleteDatasetRecordsDataAttributesRequest, ) @@ -3894,6 +4020,81 @@ from datadog_api_client.v2.model.llm_obs_open_ai_metadata import LLMObsOpenAIMetadata from datadog_api_client.v2.model.llm_obs_open_ai_reasoning_effort import LLMObsOpenAIReasoningEffort from datadog_api_client.v2.model.llm_obs_open_ai_reasoning_summary import LLMObsOpenAIReasoningSummary +from datadog_api_client.v2.model.llm_obs_patterns_activity_progress import LLMObsPatternsActivityProgress +from datadog_api_client.v2.model.llm_obs_patterns_clustered_point import LLMObsPatternsClusteredPoint +from datadog_api_client.v2.model.llm_obs_patterns_clustered_point_ref import LLMObsPatternsClusteredPointRef +from datadog_api_client.v2.model.llm_obs_patterns_clustered_points_response import LLMObsPatternsClusteredPointsResponse +from datadog_api_client.v2.model.llm_obs_patterns_clustered_points_response_attributes import ( + LLMObsPatternsClusteredPointsResponseAttributes, +) +from datadog_api_client.v2.model.llm_obs_patterns_clustered_points_response_data import ( + LLMObsPatternsClusteredPointsResponseData, +) +from datadog_api_client.v2.model.llm_obs_patterns_clustered_points_type import LLMObsPatternsClusteredPointsType +from datadog_api_client.v2.model.llm_obs_patterns_config_attributes import LLMObsPatternsConfigAttributes +from datadog_api_client.v2.model.llm_obs_patterns_config_item import LLMObsPatternsConfigItem +from datadog_api_client.v2.model.llm_obs_patterns_config_response import LLMObsPatternsConfigResponse +from datadog_api_client.v2.model.llm_obs_patterns_config_response_data import LLMObsPatternsConfigResponseData +from datadog_api_client.v2.model.llm_obs_patterns_config_snapshot import LLMObsPatternsConfigSnapshot +from datadog_api_client.v2.model.llm_obs_patterns_config_type import LLMObsPatternsConfigType +from datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request import LLMObsPatternsConfigUpsertRequest +from datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request_attributes import ( + LLMObsPatternsConfigUpsertRequestAttributes, +) +from datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request_data import ( + LLMObsPatternsConfigUpsertRequestData, +) +from datadog_api_client.v2.model.llm_obs_patterns_configs_list_type import LLMObsPatternsConfigsListType +from datadog_api_client.v2.model.llm_obs_patterns_configs_response import LLMObsPatternsConfigsResponse +from datadog_api_client.v2.model.llm_obs_patterns_configs_response_attributes import ( + LLMObsPatternsConfigsResponseAttributes, +) +from datadog_api_client.v2.model.llm_obs_patterns_configs_response_data import LLMObsPatternsConfigsResponseData +from datadog_api_client.v2.model.llm_obs_patterns_request_type import LLMObsPatternsRequestType +from datadog_api_client.v2.model.llm_obs_patterns_run_status_response import LLMObsPatternsRunStatusResponse +from datadog_api_client.v2.model.llm_obs_patterns_run_status_response_attributes import ( + LLMObsPatternsRunStatusResponseAttributes, +) +from datadog_api_client.v2.model.llm_obs_patterns_run_status_response_data import LLMObsPatternsRunStatusResponseData +from datadog_api_client.v2.model.llm_obs_patterns_run_status_type import LLMObsPatternsRunStatusType +from datadog_api_client.v2.model.llm_obs_patterns_run_summary import LLMObsPatternsRunSummary +from datadog_api_client.v2.model.llm_obs_patterns_runs_list_type import LLMObsPatternsRunsListType +from datadog_api_client.v2.model.llm_obs_patterns_runs_response import LLMObsPatternsRunsResponse +from datadog_api_client.v2.model.llm_obs_patterns_runs_response_attributes import LLMObsPatternsRunsResponseAttributes +from datadog_api_client.v2.model.llm_obs_patterns_runs_response_data import LLMObsPatternsRunsResponseData +from datadog_api_client.v2.model.llm_obs_patterns_topic import LLMObsPatternsTopic +from datadog_api_client.v2.model.llm_obs_patterns_topic_with_clustered_points import ( + LLMObsPatternsTopicWithClusteredPoints, +) +from datadog_api_client.v2.model.llm_obs_patterns_topics_response import LLMObsPatternsTopicsResponse +from datadog_api_client.v2.model.llm_obs_patterns_topics_response_attributes import ( + LLMObsPatternsTopicsResponseAttributes, +) +from datadog_api_client.v2.model.llm_obs_patterns_topics_response_data import LLMObsPatternsTopicsResponseData +from datadog_api_client.v2.model.llm_obs_patterns_topics_type import LLMObsPatternsTopicsType +from datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_response import ( + LLMObsPatternsTopicsWithClusteredPointsResponse, +) +from datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_response_attributes import ( + LLMObsPatternsTopicsWithClusteredPointsResponseAttributes, +) +from datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_response_data import ( + LLMObsPatternsTopicsWithClusteredPointsResponseData, +) +from datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_type import ( + LLMObsPatternsTopicsWithClusteredPointsType, +) +from datadog_api_client.v2.model.llm_obs_patterns_trigger_request import LLMObsPatternsTriggerRequest +from datadog_api_client.v2.model.llm_obs_patterns_trigger_request_attributes import ( + LLMObsPatternsTriggerRequestAttributes, +) +from datadog_api_client.v2.model.llm_obs_patterns_trigger_request_data import LLMObsPatternsTriggerRequestData +from datadog_api_client.v2.model.llm_obs_patterns_trigger_response import LLMObsPatternsTriggerResponse +from datadog_api_client.v2.model.llm_obs_patterns_trigger_response_attributes import ( + LLMObsPatternsTriggerResponseAttributes, +) +from datadog_api_client.v2.model.llm_obs_patterns_trigger_response_data import LLMObsPatternsTriggerResponseData +from datadog_api_client.v2.model.llm_obs_patterns_trigger_response_type import LLMObsPatternsTriggerResponseType from datadog_api_client.v2.model.llm_obs_project_data_attributes_request import LLMObsProjectDataAttributesRequest from datadog_api_client.v2.model.llm_obs_project_data_attributes_response import LLMObsProjectDataAttributesResponse from datadog_api_client.v2.model.llm_obs_project_data_request import LLMObsProjectDataRequest @@ -3932,8 +4133,10 @@ from datadog_api_client.v2.model.llm_obs_trace_interaction_item import LLMObsTraceInteractionItem from datadog_api_client.v2.model.llm_obs_trace_interaction_response_item import LLMObsTraceInteractionResponseItem from datadog_api_client.v2.model.llm_obs_trace_interaction_type import LLMObsTraceInteractionType +from datadog_api_client.v2.model.llm_obs_upsert_annotation_item import LLMObsUpsertAnnotationItem from datadog_api_client.v2.model.llm_obs_vertex_ai_metadata import LLMObsVertexAIMetadata from datadog_api_client.v2.model.language import Language +from datadog_api_client.v2.model.latest_version_match_policy import LatestVersionMatchPolicy from datadog_api_client.v2.model.launch_darkly_api_key import LaunchDarklyAPIKey from datadog_api_client.v2.model.launch_darkly_api_key_type import LaunchDarklyAPIKeyType from datadog_api_client.v2.model.launch_darkly_api_key_update import LaunchDarklyAPIKeyUpdate @@ -4046,6 +4249,7 @@ from datadog_api_client.v2.model.list_scorecards_response import ListScorecardsResponse from datadog_api_client.v2.model.list_security_findings_response import ListSecurityFindingsResponse from datadog_api_client.v2.model.list_service_access_tokens_response import ListServiceAccessTokensResponse +from datadog_api_client.v2.model.list_shared_dashboards_response import ListSharedDashboardsResponse from datadog_api_client.v2.model.list_sourcemaps_response import ListSourcemapsResponse from datadog_api_client.v2.model.list_tags_response import ListTagsResponse from datadog_api_client.v2.model.list_tags_response_data import ListTagsResponseData @@ -4193,6 +4397,10 @@ from datadog_api_client.v2.model.managed_orgs_relationships import ManagedOrgsRelationships from datadog_api_client.v2.model.managed_orgs_response import ManagedOrgsResponse from datadog_api_client.v2.model.managed_orgs_type import ManagedOrgsType +from datadog_api_client.v2.model.max_session_duration_type import MaxSessionDurationType +from datadog_api_client.v2.model.max_session_duration_update_attributes import MaxSessionDurationUpdateAttributes +from datadog_api_client.v2.model.max_session_duration_update_data import MaxSessionDurationUpdateData +from datadog_api_client.v2.model.max_session_duration_update_request import MaxSessionDurationUpdateRequest from datadog_api_client.v2.model.mcp_scan_request import McpScanRequest from datadog_api_client.v2.model.mcp_scan_request_data import McpScanRequestData from datadog_api_client.v2.model.mcp_scan_request_data_attributes import McpScanRequestDataAttributes @@ -4536,6 +4744,13 @@ from datadog_api_client.v2.model.mute_findings_response_data import MuteFindingsResponseData from datadog_api_client.v2.model.ndk_sourcemap_attributes import NDKSourcemapAttributes from datadog_api_client.v2.model.ndk_sourcemap_data import NDKSourcemapData +from datadog_api_client.v2.model.network_health_insight import NetworkHealthInsight +from datadog_api_client.v2.model.network_health_insight_attributes import NetworkHealthInsightAttributes +from datadog_api_client.v2.model.network_health_insight_category import NetworkHealthInsightCategory +from datadog_api_client.v2.model.network_health_insight_failure_type import NetworkHealthInsightFailureType +from datadog_api_client.v2.model.network_health_insight_traffic_volume import NetworkHealthInsightTrafficVolume +from datadog_api_client.v2.model.network_health_insights_response import NetworkHealthInsightsResponse +from datadog_api_client.v2.model.network_health_insights_type import NetworkHealthInsightsType from datadog_api_client.v2.model.node_type import NodeType from datadog_api_client.v2.model.node_types_response import NodeTypesResponse from datadog_api_client.v2.model.node_types_response_data import NodeTypesResponseData @@ -4559,7 +4774,20 @@ from datadog_api_client.v2.model.notification_channel_type import NotificationChannelType from datadog_api_client.v2.model.notification_rule import NotificationRule from datadog_api_client.v2.model.notification_rule_attributes import NotificationRuleAttributes +from datadog_api_client.v2.model.notification_rule_preview_notification_status import ( + NotificationRulePreviewNotificationStatus, +) +from datadog_api_client.v2.model.notification_rule_preview_response import NotificationRulePreviewResponse +from datadog_api_client.v2.model.notification_rule_preview_response_attributes import ( + NotificationRulePreviewResponseAttributes, +) +from datadog_api_client.v2.model.notification_rule_preview_response_data import NotificationRulePreviewResponseData +from datadog_api_client.v2.model.notification_rule_preview_response_type import NotificationRulePreviewResponseType +from datadog_api_client.v2.model.notification_rule_preview_result import NotificationRulePreviewResult from datadog_api_client.v2.model.notification_rule_response import NotificationRuleResponse +from datadog_api_client.v2.model.notification_rule_routing import NotificationRuleRouting +from datadog_api_client.v2.model.notification_rule_routing_mode import NotificationRuleRoutingMode +from datadog_api_client.v2.model.notification_rules_list_response import NotificationRulesListResponse from datadog_api_client.v2.model.notification_rules_type import NotificationRulesType from datadog_api_client.v2.model.notion_api_key import NotionAPIKey from datadog_api_client.v2.model.notion_api_key_type import NotionAPIKeyType @@ -4913,6 +5141,12 @@ from datadog_api_client.v2.model.observability_pipeline_generate_metrics_processor_type import ( ObservabilityPipelineGenerateMetricsProcessorType, ) +from datadog_api_client.v2.model.observability_pipeline_generate_metrics_v2_processor import ( + ObservabilityPipelineGenerateMetricsV2Processor, +) +from datadog_api_client.v2.model.observability_pipeline_generate_metrics_v2_processor_type import ( + ObservabilityPipelineGenerateMetricsV2ProcessorType, +) from datadog_api_client.v2.model.observability_pipeline_generated_metric import ObservabilityPipelineGeneratedMetric from datadog_api_client.v2.model.observability_pipeline_generated_metric_increment_by_field import ( ObservabilityPipelineGeneratedMetricIncrementByField, @@ -5681,6 +5915,38 @@ from datadog_api_client.v2.model.output_schema_parameters import OutputSchemaParameters from datadog_api_client.v2.model.output_schema_parameters_type import OutputSchemaParametersType from datadog_api_client.v2.model.overwrite_allocations_request import OverwriteAllocationsRequest +from datadog_api_client.v2.model.ownership_evidence_attributes import OwnershipEvidenceAttributes +from datadog_api_client.v2.model.ownership_evidence_data import OwnershipEvidenceData +from datadog_api_client.v2.model.ownership_evidence_response import OwnershipEvidenceResponse +from datadog_api_client.v2.model.ownership_evidence_type import OwnershipEvidenceType +from datadog_api_client.v2.model.ownership_evidence_version import OwnershipEvidenceVersion +from datadog_api_client.v2.model.ownership_feedback_action import OwnershipFeedbackAction +from datadog_api_client.v2.model.ownership_feedback_request import OwnershipFeedbackRequest +from datadog_api_client.v2.model.ownership_feedback_request_attributes import OwnershipFeedbackRequestAttributes +from datadog_api_client.v2.model.ownership_feedback_request_data import OwnershipFeedbackRequestData +from datadog_api_client.v2.model.ownership_feedback_response import OwnershipFeedbackResponse +from datadog_api_client.v2.model.ownership_feedback_result_attributes import OwnershipFeedbackResultAttributes +from datadog_api_client.v2.model.ownership_feedback_result_data import OwnershipFeedbackResultData +from datadog_api_client.v2.model.ownership_feedback_result_type import OwnershipFeedbackResultType +from datadog_api_client.v2.model.ownership_feedback_type import OwnershipFeedbackType +from datadog_api_client.v2.model.ownership_history_attributes import OwnershipHistoryAttributes +from datadog_api_client.v2.model.ownership_history_data import OwnershipHistoryData +from datadog_api_client.v2.model.ownership_history_item import OwnershipHistoryItem +from datadog_api_client.v2.model.ownership_history_pagination import OwnershipHistoryPagination +from datadog_api_client.v2.model.ownership_history_response import OwnershipHistoryResponse +from datadog_api_client.v2.model.ownership_history_type import OwnershipHistoryType +from datadog_api_client.v2.model.ownership_inference_attributes import OwnershipInferenceAttributes +from datadog_api_client.v2.model.ownership_inference_data import OwnershipInferenceData +from datadog_api_client.v2.model.ownership_inference_item import OwnershipInferenceItem +from datadog_api_client.v2.model.ownership_inference_list_attributes import OwnershipInferenceListAttributes +from datadog_api_client.v2.model.ownership_inference_list_data import OwnershipInferenceListData +from datadog_api_client.v2.model.ownership_inference_list_response import OwnershipInferenceListResponse +from datadog_api_client.v2.model.ownership_inference_response import OwnershipInferenceResponse +from datadog_api_client.v2.model.ownership_inference_source import OwnershipInferenceSource +from datadog_api_client.v2.model.ownership_inference_status import OwnershipInferenceStatus +from datadog_api_client.v2.model.ownership_inference_type import OwnershipInferenceType +from datadog_api_client.v2.model.ownership_inferences_type import OwnershipInferencesType +from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType from datadog_api_client.v2.model.page_annotations_attributes import PageAnnotationsAttributes from datadog_api_client.v2.model.page_annotations_data import PageAnnotationsData from datadog_api_client.v2.model.page_annotations_response import PageAnnotationsResponse @@ -5939,6 +6205,9 @@ from datadog_api_client.v2.model.pruned_trace_response import PrunedTraceResponse from datadog_api_client.v2.model.pruned_trace_type import PrunedTraceType from datadog_api_client.v2.model.publish_app_response import PublishAppResponse +from datadog_api_client.v2.model.publish_form_data import PublishFormData +from datadog_api_client.v2.model.publish_form_data_attributes import PublishFormDataAttributes +from datadog_api_client.v2.model.publish_form_request import PublishFormRequest from datadog_api_client.v2.model.publish_request_type import PublishRequestType from datadog_api_client.v2.model.put_apps_datastore_item_response_array import PutAppsDatastoreItemResponseArray from datadog_api_client.v2.model.put_apps_datastore_item_response_data import PutAppsDatastoreItemResponseData @@ -6131,6 +6400,30 @@ from datadog_api_client.v2.model.reorder_ruleset_resource_array import ReorderRulesetResourceArray from datadog_api_client.v2.model.reorder_ruleset_resource_data import ReorderRulesetResourceData from datadog_api_client.v2.model.reorder_ruleset_resource_data_type import ReorderRulesetResourceDataType +from datadog_api_client.v2.model.report_schedule_author import ReportScheduleAuthor +from datadog_api_client.v2.model.report_schedule_author_attributes import ReportScheduleAuthorAttributes +from datadog_api_client.v2.model.report_schedule_author_relationship import ReportScheduleAuthorRelationship +from datadog_api_client.v2.model.report_schedule_author_relationship_data import ReportScheduleAuthorRelationshipData +from datadog_api_client.v2.model.report_schedule_author_type import ReportScheduleAuthorType +from datadog_api_client.v2.model.report_schedule_create_request import ReportScheduleCreateRequest +from datadog_api_client.v2.model.report_schedule_create_request_attributes import ReportScheduleCreateRequestAttributes +from datadog_api_client.v2.model.report_schedule_create_request_data import ReportScheduleCreateRequestData +from datadog_api_client.v2.model.report_schedule_delivery_format import ReportScheduleDeliveryFormat +from datadog_api_client.v2.model.report_schedule_included_resource import ReportScheduleIncludedResource +from datadog_api_client.v2.model.report_schedule_patch_request import ReportSchedulePatchRequest +from datadog_api_client.v2.model.report_schedule_patch_request_attributes import ReportSchedulePatchRequestAttributes +from datadog_api_client.v2.model.report_schedule_patch_request_data import ReportSchedulePatchRequestData +from datadog_api_client.v2.model.report_schedule_resource_type import ReportScheduleResourceType +from datadog_api_client.v2.model.report_schedule_response import ReportScheduleResponse +from datadog_api_client.v2.model.report_schedule_response_attributes import ReportScheduleResponseAttributes +from datadog_api_client.v2.model.report_schedule_response_attributes_delivery_format import ( + ReportScheduleResponseAttributesDeliveryFormat, +) +from datadog_api_client.v2.model.report_schedule_response_data import ReportScheduleResponseData +from datadog_api_client.v2.model.report_schedule_response_relationships import ReportScheduleResponseRelationships +from datadog_api_client.v2.model.report_schedule_status import ReportScheduleStatus +from datadog_api_client.v2.model.report_schedule_template_variable import ReportScheduleTemplateVariable +from datadog_api_client.v2.model.report_schedule_type import ReportScheduleType from datadog_api_client.v2.model.resolve_vulnerable_symbols_request import ResolveVulnerableSymbolsRequest from datadog_api_client.v2.model.resolve_vulnerable_symbols_request_data import ResolveVulnerableSymbolsRequestData from datadog_api_client.v2.model.resolve_vulnerable_symbols_request_data_attributes import ( @@ -6310,28 +6603,6 @@ from datadog_api_client.v2.model.rum_cross_product_sampling import RumCrossProductSampling from datadog_api_client.v2.model.rum_cross_product_sampling_create import RumCrossProductSamplingCreate from datadog_api_client.v2.model.rum_cross_product_sampling_update import RumCrossProductSamplingUpdate -from datadog_api_client.v2.model.rum_hardcoded_cross_product_sampling import RumHardcodedCrossProductSampling -from datadog_api_client.v2.model.rum_hardcoded_cross_product_sampling_editability import ( - RumHardcodedCrossProductSamplingEditability, -) -from datadog_api_client.v2.model.rum_hardcoded_cross_product_sampling_update import ( - RumHardcodedCrossProductSamplingUpdate, -) -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_attributes import RumHardcodedRetentionFilterAttributes -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_data import RumHardcodedRetentionFilterData -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_event_type import RumHardcodedRetentionFilterEventType -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_meta import RumHardcodedRetentionFilterMeta -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_meta_source import RumHardcodedRetentionFilterMetaSource -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_response import RumHardcodedRetentionFilterResponse -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_type import RumHardcodedRetentionFilterType -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_attributes import ( - RumHardcodedRetentionFilterUpdateAttributes, -) -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_data import RumHardcodedRetentionFilterUpdateData -from datadog_api_client.v2.model.rum_hardcoded_retention_filter_update_request import ( - RumHardcodedRetentionFilterUpdateRequest, -) -from datadog_api_client.v2.model.rum_hardcoded_retention_filters_response import RumHardcodedRetentionFiltersResponse from datadog_api_client.v2.model.rum_metric_compute import RumMetricCompute from datadog_api_client.v2.model.rum_metric_compute_aggregation_type import RumMetricComputeAggregationType from datadog_api_client.v2.model.rum_metric_create_attributes import RumMetricCreateAttributes @@ -6371,6 +6642,19 @@ RumPermanentRetentionFilterUpdateRequest, ) from datadog_api_client.v2.model.rum_permanent_retention_filters_response import RumPermanentRetentionFiltersResponse +from datadog_api_client.v2.model.rum_rate_limit_adaptive_config import RumRateLimitAdaptiveConfig +from datadog_api_client.v2.model.rum_rate_limit_config_attributes import RumRateLimitConfigAttributes +from datadog_api_client.v2.model.rum_rate_limit_config_data import RumRateLimitConfigData +from datadog_api_client.v2.model.rum_rate_limit_config_response import RumRateLimitConfigResponse +from datadog_api_client.v2.model.rum_rate_limit_config_type import RumRateLimitConfigType +from datadog_api_client.v2.model.rum_rate_limit_config_update_attributes import RumRateLimitConfigUpdateAttributes +from datadog_api_client.v2.model.rum_rate_limit_config_update_data import RumRateLimitConfigUpdateData +from datadog_api_client.v2.model.rum_rate_limit_config_update_request import RumRateLimitConfigUpdateRequest +from datadog_api_client.v2.model.rum_rate_limit_custom_config import RumRateLimitCustomConfig +from datadog_api_client.v2.model.rum_rate_limit_mode import RumRateLimitMode +from datadog_api_client.v2.model.rum_rate_limit_quota_reached_action import RumRateLimitQuotaReachedAction +from datadog_api_client.v2.model.rum_rate_limit_scope_type import RumRateLimitScopeType +from datadog_api_client.v2.model.rum_rate_limit_window_type import RumRateLimitWindowType from datadog_api_client.v2.model.rum_retention_filter_attributes import RumRetentionFilterAttributes from datadog_api_client.v2.model.rum_retention_filter_create_attributes import RumRetentionFilterCreateAttributes from datadog_api_client.v2.model.rum_retention_filter_create_data import RumRetentionFilterCreateData @@ -6386,6 +6670,10 @@ from datadog_api_client.v2.model.rum_retention_filters_order_request import RumRetentionFiltersOrderRequest from datadog_api_client.v2.model.rum_retention_filters_order_response import RumRetentionFiltersOrderResponse from datadog_api_client.v2.model.rum_retention_filters_response import RumRetentionFiltersResponse +from datadog_api_client.v2.model.run_data_observability_monitor_response import RunDataObservabilityMonitorResponse +from datadog_api_client.v2.model.run_data_observability_monitor_response_data import ( + RunDataObservabilityMonitorResponseData, +) from datadog_api_client.v2.model.run_historical_job_request import RunHistoricalJobRequest from datadog_api_client.v2.model.run_historical_job_request_attributes import RunHistoricalJobRequestAttributes from datadog_api_client.v2.model.run_historical_job_request_data import RunHistoricalJobRequestData @@ -7492,6 +7780,34 @@ from datadog_api_client.v2.model.service_repository_info_status import ServiceRepositoryInfoStatus from datadog_api_client.v2.model.session_id_array import SessionIdArray from datadog_api_client.v2.model.session_id_data import SessionIdData +from datadog_api_client.v2.model.shared_dashboard_global_time import SharedDashboardGlobalTime +from datadog_api_client.v2.model.shared_dashboard_included import SharedDashboardIncluded +from datadog_api_client.v2.model.shared_dashboard_included_dashboard import SharedDashboardIncludedDashboard +from datadog_api_client.v2.model.shared_dashboard_included_dashboard_attributes import ( + SharedDashboardIncludedDashboardAttributes, +) +from datadog_api_client.v2.model.shared_dashboard_included_dashboard_type import SharedDashboardIncludedDashboardType +from datadog_api_client.v2.model.shared_dashboard_included_user import SharedDashboardIncludedUser +from datadog_api_client.v2.model.shared_dashboard_included_user_attributes import SharedDashboardIncludedUserAttributes +from datadog_api_client.v2.model.shared_dashboard_invitee import SharedDashboardInvitee +from datadog_api_client.v2.model.shared_dashboard_relationship_dashboard import SharedDashboardRelationshipDashboard +from datadog_api_client.v2.model.shared_dashboard_relationship_dashboard_data import ( + SharedDashboardRelationshipDashboardData, +) +from datadog_api_client.v2.model.shared_dashboard_relationship_sharer import SharedDashboardRelationshipSharer +from datadog_api_client.v2.model.shared_dashboard_relationships import SharedDashboardRelationships +from datadog_api_client.v2.model.shared_dashboard_response import SharedDashboardResponse +from datadog_api_client.v2.model.shared_dashboard_response_attributes import SharedDashboardResponseAttributes +from datadog_api_client.v2.model.shared_dashboard_selectable_template_variable import ( + SharedDashboardSelectableTemplateVariable, +) +from datadog_api_client.v2.model.shared_dashboard_share_type import SharedDashboardShareType +from datadog_api_client.v2.model.shared_dashboard_status import SharedDashboardStatus +from datadog_api_client.v2.model.shared_dashboard_type import SharedDashboardType +from datadog_api_client.v2.model.shared_dashboard_viewing_preferences import SharedDashboardViewingPreferences +from datadog_api_client.v2.model.shared_dashboard_viewing_preferences_theme import ( + SharedDashboardViewingPreferencesTheme, +) from datadog_api_client.v2.model.shift import Shift from datadog_api_client.v2.model.shift_data import ShiftData from datadog_api_client.v2.model.shift_data_attributes import ShiftDataAttributes @@ -7533,9 +7849,13 @@ SingleAggregatedDnsResponseDataAttributesMetricsItems, ) from datadog_api_client.v2.model.single_aggregated_dns_response_data_type import SingleAggregatedDnsResponseDataType +from datadog_api_client.v2.model.single_entity_context_response import SingleEntityContextResponse from datadog_api_client.v2.model.slack_integration_metadata import SlackIntegrationMetadata from datadog_api_client.v2.model.slack_integration_metadata_channel_item import SlackIntegrationMetadataChannelItem from datadog_api_client.v2.model.slack_trigger_wrapper import SlackTriggerWrapper +from datadog_api_client.v2.model.slack_user_binding_data import SlackUserBindingData +from datadog_api_client.v2.model.slack_user_binding_type import SlackUserBindingType +from datadog_api_client.v2.model.slack_user_bindings_response import SlackUserBindingsResponse from datadog_api_client.v2.model.slo_data_source import SloDataSource from datadog_api_client.v2.model.slo_query import SloQuery from datadog_api_client.v2.model.slo_report_create_request import SloReportCreateRequest @@ -8114,6 +8434,56 @@ from datadog_api_client.v2.model.table_row_resource_identifier import TableRowResourceIdentifier from datadog_api_client.v2.model.tag_data import TagData from datadog_api_client.v2.model.tag_data_type import TagDataType +from datadog_api_client.v2.model.tag_indexing_rule_attributes import TagIndexingRuleAttributes +from datadog_api_client.v2.model.tag_indexing_rule_create_attributes import TagIndexingRuleCreateAttributes +from datadog_api_client.v2.model.tag_indexing_rule_create_data import TagIndexingRuleCreateData +from datadog_api_client.v2.model.tag_indexing_rule_create_request import TagIndexingRuleCreateRequest +from datadog_api_client.v2.model.tag_indexing_rule_data import TagIndexingRuleData +from datadog_api_client.v2.model.tag_indexing_rule_dynamic_tags import TagIndexingRuleDynamicTags +from datadog_api_client.v2.model.tag_indexing_rule_exemption_attributes import TagIndexingRuleExemptionAttributes +from datadog_api_client.v2.model.tag_indexing_rule_exemption_create_attributes import ( + TagIndexingRuleExemptionCreateAttributes, +) +from datadog_api_client.v2.model.tag_indexing_rule_exemption_create_data import TagIndexingRuleExemptionCreateData +from datadog_api_client.v2.model.tag_indexing_rule_exemption_create_request import TagIndexingRuleExemptionCreateRequest +from datadog_api_client.v2.model.tag_indexing_rule_exemption_data import TagIndexingRuleExemptionData +from datadog_api_client.v2.model.tag_indexing_rule_exemption_response import TagIndexingRuleExemptionResponse +from datadog_api_client.v2.model.tag_indexing_rule_exemption_type import TagIndexingRuleExemptionType +from datadog_api_client.v2.model.tag_indexing_rule_metric_match import TagIndexingRuleMetricMatch +from datadog_api_client.v2.model.tag_indexing_rule_options import TagIndexingRuleOptions +from datadog_api_client.v2.model.tag_indexing_rule_options_data import TagIndexingRuleOptionsData +from datadog_api_client.v2.model.tag_indexing_rule_order_attributes import TagIndexingRuleOrderAttributes +from datadog_api_client.v2.model.tag_indexing_rule_order_data import TagIndexingRuleOrderData +from datadog_api_client.v2.model.tag_indexing_rule_order_request import TagIndexingRuleOrderRequest +from datadog_api_client.v2.model.tag_indexing_rule_response import TagIndexingRuleResponse +from datadog_api_client.v2.model.tag_indexing_rule_type import TagIndexingRuleType +from datadog_api_client.v2.model.tag_indexing_rule_update_attributes import TagIndexingRuleUpdateAttributes +from datadog_api_client.v2.model.tag_indexing_rule_update_data import TagIndexingRuleUpdateData +from datadog_api_client.v2.model.tag_indexing_rule_update_request import TagIndexingRuleUpdateRequest +from datadog_api_client.v2.model.tag_indexing_rules_response import TagIndexingRulesResponse +from datadog_api_client.v2.model.tag_indexing_rules_response_meta import TagIndexingRulesResponseMeta +from datadog_api_client.v2.model.tag_policies_list_response import TagPoliciesListResponse +from datadog_api_client.v2.model.tag_policy_attributes import TagPolicyAttributes +from datadog_api_client.v2.model.tag_policy_create_attributes import TagPolicyCreateAttributes +from datadog_api_client.v2.model.tag_policy_create_data import TagPolicyCreateData +from datadog_api_client.v2.model.tag_policy_create_request import TagPolicyCreateRequest +from datadog_api_client.v2.model.tag_policy_create_type import TagPolicyCreateType +from datadog_api_client.v2.model.tag_policy_data import TagPolicyData +from datadog_api_client.v2.model.tag_policy_include import TagPolicyInclude +from datadog_api_client.v2.model.tag_policy_relationships import TagPolicyRelationships +from datadog_api_client.v2.model.tag_policy_resource_type import TagPolicyResourceType +from datadog_api_client.v2.model.tag_policy_response import TagPolicyResponse +from datadog_api_client.v2.model.tag_policy_score_attributes import TagPolicyScoreAttributes +from datadog_api_client.v2.model.tag_policy_score_data import TagPolicyScoreData +from datadog_api_client.v2.model.tag_policy_score_relationship import TagPolicyScoreRelationship +from datadog_api_client.v2.model.tag_policy_score_relationship_data import TagPolicyScoreRelationshipData +from datadog_api_client.v2.model.tag_policy_score_resource_type import TagPolicyScoreResourceType +from datadog_api_client.v2.model.tag_policy_score_response import TagPolicyScoreResponse +from datadog_api_client.v2.model.tag_policy_source import TagPolicySource +from datadog_api_client.v2.model.tag_policy_type import TagPolicyType +from datadog_api_client.v2.model.tag_policy_update_attributes import TagPolicyUpdateAttributes +from datadog_api_client.v2.model.tag_policy_update_data import TagPolicyUpdateData +from datadog_api_client.v2.model.tag_policy_update_request import TagPolicyUpdateRequest from datadog_api_client.v2.model.tags_event_attribute import TagsEventAttribute from datadog_api_client.v2.model.targeting_rule import TargetingRule from datadog_api_client.v2.model.targeting_rule_request import TargetingRuleRequest @@ -8540,6 +8910,9 @@ from datadog_api_client.v2.model.update_flaky_tests_response_data import UpdateFlakyTestsResponseData from datadog_api_client.v2.model.update_flaky_tests_response_data_type import UpdateFlakyTestsResponseDataType from datadog_api_client.v2.model.update_flaky_tests_response_result import UpdateFlakyTestsResponseResult +from datadog_api_client.v2.model.update_form_data import UpdateFormData +from datadog_api_client.v2.model.update_form_data_attributes import UpdateFormDataAttributes +from datadog_api_client.v2.model.update_form_request import UpdateFormRequest from datadog_api_client.v2.model.update_on_call_notification_rule_request import UpdateOnCallNotificationRuleRequest from datadog_api_client.v2.model.update_on_call_notification_rule_request_attributes import ( UpdateOnCallNotificationRuleRequestAttributes, @@ -8609,6 +8982,14 @@ from datadog_api_client.v2.model.update_workflow_request import UpdateWorkflowRequest from datadog_api_client.v2.model.update_workflow_response import UpdateWorkflowResponse from datadog_api_client.v2.model.upsert_allocation_request import UpsertAllocationRequest +from datadog_api_client.v2.model.upsert_and_publish_form_version_data import UpsertAndPublishFormVersionData +from datadog_api_client.v2.model.upsert_and_publish_form_version_data_attributes import ( + UpsertAndPublishFormVersionDataAttributes, +) +from datadog_api_client.v2.model.upsert_and_publish_form_version_request import UpsertAndPublishFormVersionRequest +from datadog_api_client.v2.model.upsert_and_publish_form_version_upsert_params import ( + UpsertAndPublishFormVersionUpsertParams, +) from datadog_api_client.v2.model.upsert_catalog_entity_request import UpsertCatalogEntityRequest from datadog_api_client.v2.model.upsert_catalog_entity_response import UpsertCatalogEntityResponse from datadog_api_client.v2.model.upsert_catalog_entity_response_included_item import ( @@ -8623,6 +9004,10 @@ from datadog_api_client.v2.model.upsert_cloud_inventory_sync_config_request_data import ( UpsertCloudInventorySyncConfigRequestData, ) +from datadog_api_client.v2.model.upsert_form_version_data import UpsertFormVersionData +from datadog_api_client.v2.model.upsert_form_version_data_attributes import UpsertFormVersionDataAttributes +from datadog_api_client.v2.model.upsert_form_version_request import UpsertFormVersionRequest +from datadog_api_client.v2.model.upsert_form_version_upsert_params import UpsertFormVersionUpsertParams from datadog_api_client.v2.model.upsert_o_auth_scopes_restriction_data import UpsertOAuthScopesRestrictionData from datadog_api_client.v2.model.upsert_o_auth_scopes_restriction_data_attributes import ( UpsertOAuthScopesRestrictionDataAttributes, @@ -8906,6 +9291,15 @@ "AWSCcmConfigResponseAttributes", "AWSCcmConfigResponseData", "AWSCcmConfigType", + "AWSCcmConfigValidationIssue", + "AWSCcmConfigValidationIssueCode", + "AWSCcmConfigValidationRequest", + "AWSCcmConfigValidationRequestAttributes", + "AWSCcmConfigValidationRequestData", + "AWSCcmConfigValidationResponse", + "AWSCcmConfigValidationResponseAttributes", + "AWSCcmConfigValidationResponseData", + "AWSCcmConfigValidationType", "AWSCloudAuthPersonaMappingAttributesResponse", "AWSCloudAuthPersonaMappingCreateAttributes", "AWSCloudAuthPersonaMappingCreateData", @@ -9799,6 +10193,9 @@ "ClickupIntegration", "ClickupIntegrationType", "ClickupIntegrationUpdate", + "CloneFormData", + "CloneFormDataAttributes", + "CloneFormRequest", "CloudAssetType", "CloudConfigurationComplianceRuleOptions", "CloudConfigurationRegoRule", @@ -10145,6 +10542,9 @@ "CreateFeatureFlagData", "CreateFeatureFlagDataType", "CreateFeatureFlagRequest", + "CreateFormData", + "CreateFormDataAttributes", + "CreateFormRequest", "CreateIncidentNotificationRuleRequest", "CreateIncidentNotificationTemplateRequest", "CreateJiraIssueRequestArray", @@ -10240,18 +10640,44 @@ "CreateWorkflowResponse", "Creator", "CsmAgentData", + "CsmAgentlessHostAttributes", + "CsmAgentlessHostData", + "CsmAgentlessHostFacetAttributes", + "CsmAgentlessHostFacetData", + "CsmAgentlessHostFacetType", + "CsmAgentlessHostFacetsResponse", + "CsmAgentlessHostResourceType", + "CsmAgentlessHostType", + "CsmAgentlessHostsResponse", "CsmAgentsAttributes", "CsmAgentsResponse", "CsmCloudAccountsCoverageAnalysisAttributes", "CsmCloudAccountsCoverageAnalysisData", "CsmCloudAccountsCoverageAnalysisResponse", + "CsmCloudProvider", "CsmCoverageAnalysis", + "CsmFacetInfoType", + "CsmHostFacetInfoAttributes", + "CsmHostFacetInfoData", + "CsmHostFacetInfoItem", + "CsmHostFacetInfoMeta", + "CsmHostFacetInfoResponse", "CsmHostsAndContainersCoverageAnalysisAttributes", "CsmHostsAndContainersCoverageAnalysisData", "CsmHostsAndContainersCoverageAnalysisResponse", "CsmServerlessCoverageAnalysisAttributes", "CsmServerlessCoverageAnalysisData", "CsmServerlessCoverageAnalysisResponse", + "CsmSettingsMeta", + "CsmUnifiedHostAttributes", + "CsmUnifiedHostData", + "CsmUnifiedHostFacetData", + "CsmUnifiedHostFacetType", + "CsmUnifiedHostFacetsResponse", + "CsmUnifiedHostSource", + "CsmUnifiedHostType", + "CsmUnifiedHostsMeta", + "CsmUnifiedHostsResponse", "CustomAttributeConfig", "CustomAttributeConfigAttributesCreate", "CustomAttributeConfigCreate", @@ -10429,6 +10855,8 @@ "DataDeletionResponseItemAttributes", "DataDeletionResponseMeta", "DataExportConfig", + "DataObservabilityMonitorRunStatus", + "DataObservabilityMonitorRunType", "DataRelationshipsTeams", "DataRelationshipsTeamsDataItems", "DataRelationshipsTeamsDataItemsType", @@ -10498,6 +10926,8 @@ "DeleteAppsResponse", "DeleteAppsResponseDataItems", "DeleteCustomFrameworkResponse", + "DeleteFormData", + "DeleteFormResponse", "DeletedSuiteResponseData", "DeletedSuiteResponseDataAttributes", "DeletedSuitesRequestDelete", @@ -10910,13 +11340,6 @@ "FleetAgentsResponseData", "FleetAgentsResponseDataAttributes", "FleetAgentsResponseMeta", - "FleetClusterAttributes", - "FleetClusterNodeCountByStatus", - "FleetClusterPodCountByState", - "FleetClustersResponse", - "FleetClustersResponseData", - "FleetClustersResponseDataAttributes", - "FleetClustersResponseMeta", "FleetConfigurationFile", "FleetConfigurationLayer", "FleetDeployment", @@ -10940,10 +11363,6 @@ "FleetDeploymentsResponse", "FleetDeploymentsResponseMeta", "FleetDetectedIntegration", - "FleetInstrumentedPodGroupAttributes", - "FleetInstrumentedPodsResponse", - "FleetInstrumentedPodsResponseData", - "FleetInstrumentedPodsResponseDataAttributes", "FleetIntegrationDetails", "FleetIntegrationsByStatus", "FleetOtelCollector", @@ -10967,8 +11386,29 @@ "FleetTracersResponseMeta", "FlutterSourcemapAttributes", "FlutterSourcemapData", + "FormData", + "FormDataAttributes", + "FormDataDefinition", + "FormDataDefinitionType", + "FormDatastoreConfigAttributes", + "FormPublicationAttributes", + "FormPublicationData", + "FormPublicationResponse", + "FormPublicationType", + "FormResponse", "FormTrigger", "FormTriggerWrapper", + "FormType", + "FormUiDefinition", + "FormUiDefinitionUiTheme", + "FormUiDefinitionUiThemePrimaryColor", + "FormUpdateAttributes", + "FormVersionAttributes", + "FormVersionData", + "FormVersionResponse", + "FormVersionState", + "FormVersionType", + "FormsResponse", "FormulaLimit", "FrameworkHandleAndVersionResponseData", "FreshserviceAPIKey", @@ -11069,6 +11509,9 @@ "GetBlueprintsResponse", "GetCustomFrameworkResponse", "GetDataDeletionsResponseBody", + "GetDataObservabilityMonitorRunStatusResponse", + "GetDataObservabilityMonitorRunStatusResponseAttributes", + "GetDataObservabilityMonitorRunStatusResponseData", "GetDeviceAttributes", "GetDeviceData", "GetDeviceResponse", @@ -11132,7 +11575,17 @@ "GlobalIncidentSettingsRequest", "GlobalIncidentSettingsResponse", "GlobalIncidentSettingsType", + "GlobalOrg", + "GlobalOrgAttributes", + "GlobalOrgData", "GlobalOrgIdentifier", + "GlobalOrgType", + "GlobalOrgUser", + "GlobalOrgsLinks", + "GlobalOrgsMeta", + "GlobalOrgsMetaPage", + "GlobalOrgsMetaPageType", + "GlobalOrgsResponse", "GlobalVariableData", "GlobalVariableJsonPatchRequest", "GlobalVariableJsonPatchRequestData", @@ -11147,11 +11600,34 @@ "GoogleChatCreateOrganizationHandleRequest", "GoogleChatCreateOrganizationHandleRequestAttributes", "GoogleChatCreateOrganizationHandleRequestData", + "GoogleChatDelegatedUserAttributes", + "GoogleChatDelegatedUserData", + "GoogleChatDelegatedUserResponse", + "GoogleChatDelegatedUserType", + "GoogleChatOrganizationAttributes", + "GoogleChatOrganizationData", "GoogleChatOrganizationHandleResponse", "GoogleChatOrganizationHandleResponseAttributes", "GoogleChatOrganizationHandleResponseData", "GoogleChatOrganizationHandleType", "GoogleChatOrganizationHandlesResponse", + "GoogleChatOrganizationRelationships", + "GoogleChatOrganizationRelationshipsDelegatedUser", + "GoogleChatOrganizationRelationshipsDelegatedUserData", + "GoogleChatOrganizationResponse", + "GoogleChatOrganizationType", + "GoogleChatOrganizationsResponse", + "GoogleChatTargetAudienceAttributes", + "GoogleChatTargetAudienceCreateRequest", + "GoogleChatTargetAudienceCreateRequestAttributes", + "GoogleChatTargetAudienceCreateRequestData", + "GoogleChatTargetAudienceData", + "GoogleChatTargetAudienceResponse", + "GoogleChatTargetAudienceType", + "GoogleChatTargetAudienceUpdateRequest", + "GoogleChatTargetAudienceUpdateRequestAttributes", + "GoogleChatTargetAudienceUpdateRequestData", + "GoogleChatTargetAudiencesResponse", "GoogleChatUpdateOrganizationHandleRequest", "GoogleChatUpdateOrganizationHandleRequestAttributes", "GoogleChatUpdateOrganizationHandleRequestData", @@ -11348,19 +11824,6 @@ "IncidentSearchResponseUserFacetData", "IncidentSearchResultsType", "IncidentSearchSortOrder", - "IncidentServiceCreateAttributes", - "IncidentServiceCreateData", - "IncidentServiceCreateRequest", - "IncidentServiceIncludedItems", - "IncidentServiceRelationships", - "IncidentServiceResponse", - "IncidentServiceResponseAttributes", - "IncidentServiceResponseData", - "IncidentServiceType", - "IncidentServiceUpdateAttributes", - "IncidentServiceUpdateData", - "IncidentServiceUpdateRequest", - "IncidentServicesResponse", "IncidentSeverity", "IncidentTimelineCellCreateAttributes", "IncidentTimelineCellMarkdownContentType", @@ -11585,7 +12048,13 @@ "LLMObsAnnotatedInteractionsDataResponse", "LLMObsAnnotatedInteractionsResponse", "LLMObsAnnotatedInteractionsType", + "LLMObsAnnotationAssessment", + "LLMObsAnnotationError", "LLMObsAnnotationItem", + "LLMObsAnnotationItemResponse", + "LLMObsAnnotationLabelValue", + "LLMObsAnnotationLabelValueResponse", + "LLMObsAnnotationLabelValueValue", "LLMObsAnnotationQueueDataAttributesRequest", "LLMObsAnnotationQueueDataAttributesResponse", "LLMObsAnnotationQueueDataRequest", @@ -11613,6 +12082,13 @@ "LLMObsAnnotationQueueUpdateRequest", "LLMObsAnnotationQueuesResponse", "LLMObsAnnotationSchema", + "LLMObsAnnotationsDataAttributesRequest", + "LLMObsAnnotationsDataAttributesResponse", + "LLMObsAnnotationsDataRequest", + "LLMObsAnnotationsDataResponse", + "LLMObsAnnotationsRequest", + "LLMObsAnnotationsResponse", + "LLMObsAnnotationsType", "LLMObsAnthropicEffort", "LLMObsAnthropicMetadata", "LLMObsAnthropicThinkingConfig", @@ -11703,9 +12179,16 @@ "LLMObsDatasetVersionType", "LLMObsDatasetVersionsResponse", "LLMObsDatasetsResponse", + "LLMObsDeleteAnnotationError", "LLMObsDeleteAnnotationQueueInteractionsDataAttributesRequest", "LLMObsDeleteAnnotationQueueInteractionsDataRequest", "LLMObsDeleteAnnotationQueueInteractionsRequest", + "LLMObsDeleteAnnotationsDataAttributesRequest", + "LLMObsDeleteAnnotationsDataAttributesResponse", + "LLMObsDeleteAnnotationsDataRequest", + "LLMObsDeleteAnnotationsDataResponse", + "LLMObsDeleteAnnotationsRequest", + "LLMObsDeleteAnnotationsResponse", "LLMObsDeleteDatasetRecordsDataAttributesRequest", "LLMObsDeleteDatasetRecordsDataRequest", "LLMObsDeleteDatasetRecordsRequest", @@ -11813,6 +12296,53 @@ "LLMObsOpenAIMetadata", "LLMObsOpenAIReasoningEffort", "LLMObsOpenAIReasoningSummary", + "LLMObsPatternsActivityProgress", + "LLMObsPatternsClusteredPoint", + "LLMObsPatternsClusteredPointRef", + "LLMObsPatternsClusteredPointsResponse", + "LLMObsPatternsClusteredPointsResponseAttributes", + "LLMObsPatternsClusteredPointsResponseData", + "LLMObsPatternsClusteredPointsType", + "LLMObsPatternsConfigAttributes", + "LLMObsPatternsConfigItem", + "LLMObsPatternsConfigResponse", + "LLMObsPatternsConfigResponseData", + "LLMObsPatternsConfigSnapshot", + "LLMObsPatternsConfigType", + "LLMObsPatternsConfigUpsertRequest", + "LLMObsPatternsConfigUpsertRequestAttributes", + "LLMObsPatternsConfigUpsertRequestData", + "LLMObsPatternsConfigsListType", + "LLMObsPatternsConfigsResponse", + "LLMObsPatternsConfigsResponseAttributes", + "LLMObsPatternsConfigsResponseData", + "LLMObsPatternsRequestType", + "LLMObsPatternsRunStatusResponse", + "LLMObsPatternsRunStatusResponseAttributes", + "LLMObsPatternsRunStatusResponseData", + "LLMObsPatternsRunStatusType", + "LLMObsPatternsRunSummary", + "LLMObsPatternsRunsListType", + "LLMObsPatternsRunsResponse", + "LLMObsPatternsRunsResponseAttributes", + "LLMObsPatternsRunsResponseData", + "LLMObsPatternsTopic", + "LLMObsPatternsTopicWithClusteredPoints", + "LLMObsPatternsTopicsResponse", + "LLMObsPatternsTopicsResponseAttributes", + "LLMObsPatternsTopicsResponseData", + "LLMObsPatternsTopicsType", + "LLMObsPatternsTopicsWithClusteredPointsResponse", + "LLMObsPatternsTopicsWithClusteredPointsResponseAttributes", + "LLMObsPatternsTopicsWithClusteredPointsResponseData", + "LLMObsPatternsTopicsWithClusteredPointsType", + "LLMObsPatternsTriggerRequest", + "LLMObsPatternsTriggerRequestAttributes", + "LLMObsPatternsTriggerRequestData", + "LLMObsPatternsTriggerResponse", + "LLMObsPatternsTriggerResponseAttributes", + "LLMObsPatternsTriggerResponseData", + "LLMObsPatternsTriggerResponseType", "LLMObsProjectDataAttributesRequest", "LLMObsProjectDataAttributesResponse", "LLMObsProjectDataRequest", @@ -11849,8 +12379,10 @@ "LLMObsTraceInteractionItem", "LLMObsTraceInteractionResponseItem", "LLMObsTraceInteractionType", + "LLMObsUpsertAnnotationItem", "LLMObsVertexAIMetadata", "Language", + "LatestVersionMatchPolicy", "LaunchDarklyAPIKey", "LaunchDarklyAPIKeyType", "LaunchDarklyAPIKeyUpdate", @@ -11949,6 +12481,7 @@ "ListScorecardsResponse", "ListSecurityFindingsResponse", "ListServiceAccessTokensResponse", + "ListSharedDashboardsResponse", "ListSourcemapsResponse", "ListTagsResponse", "ListTagsResponseData", @@ -12074,6 +12607,10 @@ "ManagedOrgsRelationships", "ManagedOrgsResponse", "ManagedOrgsType", + "MaxSessionDurationType", + "MaxSessionDurationUpdateAttributes", + "MaxSessionDurationUpdateData", + "MaxSessionDurationUpdateRequest", "McpScanRequest", "McpScanRequestData", "McpScanRequestDataAttributes", @@ -12325,6 +12862,13 @@ "MuteFindingsResponseData", "NDKSourcemapAttributes", "NDKSourcemapData", + "NetworkHealthInsight", + "NetworkHealthInsightAttributes", + "NetworkHealthInsightCategory", + "NetworkHealthInsightFailureType", + "NetworkHealthInsightTrafficVolume", + "NetworkHealthInsightsResponse", + "NetworkHealthInsightsType", "NodeType", "NodeTypesResponse", "NodeTypesResponseData", @@ -12348,7 +12892,16 @@ "NotificationChannelType", "NotificationRule", "NotificationRuleAttributes", + "NotificationRulePreviewNotificationStatus", + "NotificationRulePreviewResponse", + "NotificationRulePreviewResponseAttributes", + "NotificationRulePreviewResponseData", + "NotificationRulePreviewResponseType", + "NotificationRulePreviewResult", "NotificationRuleResponse", + "NotificationRuleRouting", + "NotificationRuleRoutingMode", + "NotificationRulesListResponse", "NotificationRulesType", "NotionAPIKey", "NotionAPIKeyType", @@ -12498,6 +13051,8 @@ "ObservabilityPipelineGcpAuth", "ObservabilityPipelineGenerateMetricsProcessor", "ObservabilityPipelineGenerateMetricsProcessorType", + "ObservabilityPipelineGenerateMetricsV2Processor", + "ObservabilityPipelineGenerateMetricsV2ProcessorType", "ObservabilityPipelineGeneratedMetric", "ObservabilityPipelineGeneratedMetricIncrementByField", "ObservabilityPipelineGeneratedMetricIncrementByFieldStrategy", @@ -12900,6 +13455,38 @@ "OutputSchemaParameters", "OutputSchemaParametersType", "OverwriteAllocationsRequest", + "OwnershipEvidenceAttributes", + "OwnershipEvidenceData", + "OwnershipEvidenceResponse", + "OwnershipEvidenceType", + "OwnershipEvidenceVersion", + "OwnershipFeedbackAction", + "OwnershipFeedbackRequest", + "OwnershipFeedbackRequestAttributes", + "OwnershipFeedbackRequestData", + "OwnershipFeedbackResponse", + "OwnershipFeedbackResultAttributes", + "OwnershipFeedbackResultData", + "OwnershipFeedbackResultType", + "OwnershipFeedbackType", + "OwnershipHistoryAttributes", + "OwnershipHistoryData", + "OwnershipHistoryItem", + "OwnershipHistoryPagination", + "OwnershipHistoryResponse", + "OwnershipHistoryType", + "OwnershipInferenceAttributes", + "OwnershipInferenceData", + "OwnershipInferenceItem", + "OwnershipInferenceListAttributes", + "OwnershipInferenceListData", + "OwnershipInferenceListResponse", + "OwnershipInferenceResponse", + "OwnershipInferenceSource", + "OwnershipInferenceStatus", + "OwnershipInferenceType", + "OwnershipInferencesType", + "OwnershipOwnerType", "PageAnnotationsAttributes", "PageAnnotationsData", "PageAnnotationsResponse", @@ -13100,6 +13687,9 @@ "PrunedTraceResponse", "PrunedTraceType", "PublishAppResponse", + "PublishFormData", + "PublishFormDataAttributes", + "PublishFormRequest", "PublishRequestType", "PutAppsDatastoreItemResponseArray", "PutAppsDatastoreItemResponseData", @@ -13268,6 +13858,28 @@ "ReorderRulesetResourceArray", "ReorderRulesetResourceData", "ReorderRulesetResourceDataType", + "ReportScheduleAuthor", + "ReportScheduleAuthorAttributes", + "ReportScheduleAuthorRelationship", + "ReportScheduleAuthorRelationshipData", + "ReportScheduleAuthorType", + "ReportScheduleCreateRequest", + "ReportScheduleCreateRequestAttributes", + "ReportScheduleCreateRequestData", + "ReportScheduleDeliveryFormat", + "ReportScheduleIncludedResource", + "ReportSchedulePatchRequest", + "ReportSchedulePatchRequestAttributes", + "ReportSchedulePatchRequestData", + "ReportScheduleResourceType", + "ReportScheduleResponse", + "ReportScheduleResponseAttributes", + "ReportScheduleResponseAttributesDeliveryFormat", + "ReportScheduleResponseData", + "ReportScheduleResponseRelationships", + "ReportScheduleStatus", + "ReportScheduleTemplateVariable", + "ReportScheduleType", "ResolveVulnerableSymbolsRequest", "ResolveVulnerableSymbolsRequestData", "ResolveVulnerableSymbolsRequestDataAttributes", @@ -13411,20 +14023,6 @@ "RumCrossProductSampling", "RumCrossProductSamplingCreate", "RumCrossProductSamplingUpdate", - "RumHardcodedCrossProductSampling", - "RumHardcodedCrossProductSamplingEditability", - "RumHardcodedCrossProductSamplingUpdate", - "RumHardcodedRetentionFilterAttributes", - "RumHardcodedRetentionFilterData", - "RumHardcodedRetentionFilterEventType", - "RumHardcodedRetentionFilterMeta", - "RumHardcodedRetentionFilterMetaSource", - "RumHardcodedRetentionFilterResponse", - "RumHardcodedRetentionFilterType", - "RumHardcodedRetentionFilterUpdateAttributes", - "RumHardcodedRetentionFilterUpdateData", - "RumHardcodedRetentionFilterUpdateRequest", - "RumHardcodedRetentionFiltersResponse", "RumMetricCompute", "RumMetricComputeAggregationType", "RumMetricCreateAttributes", @@ -13458,6 +14056,19 @@ "RumPermanentRetentionFilterUpdateData", "RumPermanentRetentionFilterUpdateRequest", "RumPermanentRetentionFiltersResponse", + "RumRateLimitAdaptiveConfig", + "RumRateLimitConfigAttributes", + "RumRateLimitConfigData", + "RumRateLimitConfigResponse", + "RumRateLimitConfigType", + "RumRateLimitConfigUpdateAttributes", + "RumRateLimitConfigUpdateData", + "RumRateLimitConfigUpdateRequest", + "RumRateLimitCustomConfig", + "RumRateLimitMode", + "RumRateLimitQuotaReachedAction", + "RumRateLimitScopeType", + "RumRateLimitWindowType", "RumRetentionFilterAttributes", "RumRetentionFilterCreateAttributes", "RumRetentionFilterCreateData", @@ -13473,6 +14084,8 @@ "RumRetentionFiltersOrderRequest", "RumRetentionFiltersOrderResponse", "RumRetentionFiltersResponse", + "RunDataObservabilityMonitorResponse", + "RunDataObservabilityMonitorResponseData", "RunHistoricalJobRequest", "RunHistoricalJobRequestAttributes", "RunHistoricalJobRequestData", @@ -14137,6 +14750,26 @@ "ServiceRepositoryInfoStatus", "SessionIdArray", "SessionIdData", + "SharedDashboardGlobalTime", + "SharedDashboardIncluded", + "SharedDashboardIncludedDashboard", + "SharedDashboardIncludedDashboardAttributes", + "SharedDashboardIncludedDashboardType", + "SharedDashboardIncludedUser", + "SharedDashboardIncludedUserAttributes", + "SharedDashboardInvitee", + "SharedDashboardRelationshipDashboard", + "SharedDashboardRelationshipDashboardData", + "SharedDashboardRelationshipSharer", + "SharedDashboardRelationships", + "SharedDashboardResponse", + "SharedDashboardResponseAttributes", + "SharedDashboardSelectableTemplateVariable", + "SharedDashboardShareType", + "SharedDashboardStatus", + "SharedDashboardType", + "SharedDashboardViewingPreferences", + "SharedDashboardViewingPreferencesTheme", "Shift", "ShiftData", "ShiftDataAttributes", @@ -14164,9 +14797,13 @@ "SingleAggregatedDnsResponseDataAttributesGroupByItems", "SingleAggregatedDnsResponseDataAttributesMetricsItems", "SingleAggregatedDnsResponseDataType", + "SingleEntityContextResponse", "SlackIntegrationMetadata", "SlackIntegrationMetadataChannelItem", "SlackTriggerWrapper", + "SlackUserBindingData", + "SlackUserBindingType", + "SlackUserBindingsResponse", "SloDataSource", "SloQuery", "SloReportCreateRequest", @@ -14591,6 +15228,54 @@ "TableRowResourceIdentifier", "TagData", "TagDataType", + "TagIndexingRuleAttributes", + "TagIndexingRuleCreateAttributes", + "TagIndexingRuleCreateData", + "TagIndexingRuleCreateRequest", + "TagIndexingRuleData", + "TagIndexingRuleDynamicTags", + "TagIndexingRuleExemptionAttributes", + "TagIndexingRuleExemptionCreateAttributes", + "TagIndexingRuleExemptionCreateData", + "TagIndexingRuleExemptionCreateRequest", + "TagIndexingRuleExemptionData", + "TagIndexingRuleExemptionResponse", + "TagIndexingRuleExemptionType", + "TagIndexingRuleMetricMatch", + "TagIndexingRuleOptions", + "TagIndexingRuleOptionsData", + "TagIndexingRuleOrderAttributes", + "TagIndexingRuleOrderData", + "TagIndexingRuleOrderRequest", + "TagIndexingRuleResponse", + "TagIndexingRuleType", + "TagIndexingRuleUpdateAttributes", + "TagIndexingRuleUpdateData", + "TagIndexingRuleUpdateRequest", + "TagIndexingRulesResponse", + "TagIndexingRulesResponseMeta", + "TagPoliciesListResponse", + "TagPolicyAttributes", + "TagPolicyCreateAttributes", + "TagPolicyCreateData", + "TagPolicyCreateRequest", + "TagPolicyCreateType", + "TagPolicyData", + "TagPolicyInclude", + "TagPolicyRelationships", + "TagPolicyResourceType", + "TagPolicyResponse", + "TagPolicyScoreAttributes", + "TagPolicyScoreData", + "TagPolicyScoreRelationship", + "TagPolicyScoreRelationshipData", + "TagPolicyScoreResourceType", + "TagPolicyScoreResponse", + "TagPolicySource", + "TagPolicyType", + "TagPolicyUpdateAttributes", + "TagPolicyUpdateData", + "TagPolicyUpdateRequest", "TagsEventAttribute", "TargetingRule", "TargetingRuleRequest", @@ -14889,6 +15574,9 @@ "UpdateFlakyTestsResponseData", "UpdateFlakyTestsResponseDataType", "UpdateFlakyTestsResponseResult", + "UpdateFormData", + "UpdateFormDataAttributes", + "UpdateFormRequest", "UpdateOnCallNotificationRuleRequest", "UpdateOnCallNotificationRuleRequestAttributes", "UpdateOnCallNotificationRuleRequestData", @@ -14928,6 +15616,10 @@ "UpdateWorkflowRequest", "UpdateWorkflowResponse", "UpsertAllocationRequest", + "UpsertAndPublishFormVersionData", + "UpsertAndPublishFormVersionDataAttributes", + "UpsertAndPublishFormVersionRequest", + "UpsertAndPublishFormVersionUpsertParams", "UpsertCatalogEntityRequest", "UpsertCatalogEntityResponse", "UpsertCatalogEntityResponseIncludedItem", @@ -14936,6 +15628,10 @@ "UpsertCloudInventorySyncConfigRequest", "UpsertCloudInventorySyncConfigRequestAttributes", "UpsertCloudInventorySyncConfigRequestData", + "UpsertFormVersionData", + "UpsertFormVersionDataAttributes", + "UpsertFormVersionRequest", + "UpsertFormVersionUpsertParams", "UpsertOAuthScopesRestrictionData", "UpsertOAuthScopesRestrictionDataAttributes", "UpsertOAuthScopesRestrictionRequest", diff --git a/tests/v2/cassettes/test_scenarios/test_clone_a_form_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_clone_a_form_returns_not_found_response.frozen new file mode 100644 index 0000000000..3cb13361bf --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_clone_a_form_returns_not_found_response.frozen @@ -0,0 +1 @@ +2026-06-10T18:49:58.475Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_clone_a_form_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_clone_a_form_returns_not_found_response.yaml new file mode 100644 index 0000000000..30138fd293 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_clone_a_form_returns_not_found_response.yaml @@ -0,0 +1,21 @@ +interactions: +- request: + body: '{"data":{"attributes":{"name":"Copy of My Form"},"type":"forms"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms/00000000-0000-0000-0000-000000000001/clone + response: + body: + string: '{"errors":[{"status":"404","id":"32db2695-29bd-4280-b547-3737365608c3","title":"form + not found"}]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 404 + message: Not Found +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_configure_tags_for_multiple_metrics_returns_accepted_response.frozen b/tests/v2/cassettes/test_scenarios/test_configure_tags_for_multiple_metrics_returns_accepted_response.frozen index bdcf91b332..7d7bf01a25 100644 --- a/tests/v2/cassettes/test_scenarios/test_configure_tags_for_multiple_metrics_returns_accepted_response.frozen +++ b/tests/v2/cassettes/test_scenarios/test_configure_tags_for_multiple_metrics_returns_accepted_response.frozen @@ -1 +1 @@ -2023-12-07T15:20:06.421Z \ No newline at end of file +2026-06-04T17:13:08.947Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_configure_tags_for_multiple_metrics_returns_accepted_response.yaml b/tests/v2/cassettes/test_scenarios/test_configure_tags_for_multiple_metrics_returns_accepted_response.yaml index 9feae4c740..5298b42a2d 100644 --- a/tests/v2/cassettes/test_scenarios/test_configure_tags_for_multiple_metrics_returns_accepted_response.yaml +++ b/tests/v2/cassettes/test_scenarios/test_configure_tags_for_multiple_metrics_returns_accepted_response.yaml @@ -1,6 +1,6 @@ interactions: - request: - body: '{"data":{"attributes":{"email":"Test-Configure_tags_for_multiple_metrics_returns_Accepted_response-1701962406@datadoghq.com","title":"user + body: '{"data":{"attributes":{"email":"Test-Configure_tags_for_multiple_metrics_returns_Accepted_response-1780593188@datadoghq.com","title":"user title"},"type":"users"}}' headers: accept: @@ -11,8 +11,8 @@ interactions: uri: https://api.datadoghq.com/api/v2/users response: body: - string: '{"data":{"type":"users","id":"1a6aac59-9514-11ee-8d56-0adb1a638a47","attributes":{"name":null,"handle":"test-configure_tags_for_multiple_metrics_returns_accepted_response-1701962406@datadoghq.com","created_at":"2023-12-07T15:20:07.014747+00:00","modified_at":"2023-12-07T15:20:07.014747+00:00","email":"test-configure_tags_for_multiple_metrics_returns_accepted_response-1701962406@datadoghq.com","icon":"https://secure.gravatar.com/avatar/0a707b27174d49cd592ec7a4fc13bc4d?s=48&d=retro","title":"user - title","verified":false,"service_account":false,"disabled":false,"allowed_login_methods":[],"status":"Pending"},"relationships":{"roles":{"data":[]},"org":{"data":{"type":"orgs","id":"3386799c-00cc-11ea-a77b-eb0f88a49e0f"}}}}} + string: '{"data":{"type":"users","id":"bbd25c81-fae3-46b3-99b3-4251859017c4","attributes":{"uuid":"bbd25c81-fae3-46b3-99b3-4251859017c4","name":null,"handle":"test-configure_tags_for_multiple_metrics_returns_accepted_response-1780593188@datadoghq.com","created_at":"2026-06-04T17:13:10.281475+00:00","modified_at":"2026-06-04T17:13:10.281475+00:00","email":"test-configure_tags_for_multiple_metrics_returns_accepted_response-1780593188@datadoghq.com","icon":"https://secure.gravatar.com/avatar/f08cc2909ca7eae455a0969e3664ec09?s=48&d=retro","title":"user + title","verified":false,"service_account":false,"disabled":false,"allowed_login_methods":[],"status":"Pending","last_login_time":null},"relationships":{"roles":{"data":[]},"org":{"data":{"type":"orgs","id":"4dee724d-00cc-11ea-a77b-570c9d03c6c5"}}}}} ' headers: @@ -22,7 +22,7 @@ interactions: code: 201 message: Created - request: - body: '{"data":{"attributes":{"emails":["test-configure_tags_for_multiple_metrics_returns_accepted_response-1701962406@datadoghq.com"],"tags":["test","testconfiguretagsformultiplemetricsreturnsacceptedresponse1701962406"]},"id":"system.load.1","type":"metric_bulk_configure_tags"}}' + body: '{"data":{"attributes":{"emails":["test-configure_tags_for_multiple_metrics_returns_accepted_response-1780593188@datadoghq.com"],"tags":["test","testconfiguretagsformultiplemetricsreturnsacceptedresponse1780593188"]},"id":"system.load.1","type":"metric_bulk_configure_tags"}}' headers: accept: - application/json @@ -32,7 +32,7 @@ interactions: uri: https://api.datadoghq.com/api/v2/metrics/config/bulk-tags response: body: - string: '{"data":{"type":"metric_bulk_configure_tags","id":"system.load.1","attributes":{"tags":["test","testconfiguretagsformultiplemetricsreturnsacceptedresponse1701962406"],"emails":["test-configure_tags_for_multiple_metrics_returns_accepted_response-1701962406@datadoghq.com"],"status":"Accepted","exclude_tags_mode":null}}} + string: '{"data":{"type":"metric_bulk_configure_tags","id":"system.load.1","attributes":{"tags":["test","testconfiguretagsformultiplemetricsreturnsacceptedresponse1780593188"],"emails":["test-configure_tags_for_multiple_metrics_returns_accepted_response-1780593188@datadoghq.com"],"status":"Accepted","exclude_tags_mode":null,"override_existing_configurations":true,"include_actively_queried_tags_window":null}}} ' headers: @@ -42,7 +42,7 @@ interactions: code: 202 message: Accepted - request: - body: '{"data":{"attributes":{"emails":["test-configure_tags_for_multiple_metrics_returns_accepted_response-1701962406@datadoghq.com"]},"id":"system.load.1","type":"metric_bulk_configure_tags"}}' + body: '{"data":{"attributes":{"emails":["test-configure_tags_for_multiple_metrics_returns_accepted_response-1780593188@datadoghq.com"]},"id":"system.load.1","type":"metric_bulk_configure_tags"}}' headers: accept: - application/json @@ -52,7 +52,7 @@ interactions: uri: https://api.datadoghq.com/api/v2/metrics/config/bulk-tags response: body: - string: '{"data":{"type":"metric_bulk_configure_tags","id":"system.load.1","attributes":{"emails":["test-configure_tags_for_multiple_metrics_returns_accepted_response-1701962406@datadoghq.com"],"status":"Accepted"}}} + string: '{"data":{"type":"metric_bulk_configure_tags","id":"system.load.1","attributes":{"emails":["test-configure_tags_for_multiple_metrics_returns_accepted_response-1780593188@datadoghq.com"],"status":"Accepted","override_existing_configurations":true}}} ' headers: @@ -67,7 +67,7 @@ interactions: accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/users/1a6aac59-9514-11ee-8d56-0adb1a638a47 + uri: https://api.datadoghq.com/api/v2/users/bbd25c81-fae3-46b3-99b3-4251859017c4 response: body: string: '' diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_form_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_form_returns_ok_response.frozen new file mode 100644 index 0000000000..094857b451 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_form_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-04T18:34:02.931Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_form_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_a_form_returns_ok_response.yaml new file mode 100644 index 0000000000..ea5776e21f --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_form_returns_ok_response.yaml @@ -0,0 +1,39 @@ +interactions: +- request: + body: '{"data":{"attributes":{"anonymous":false,"data_definition":{},"description":"A + form to collect user feedback.","idp_survey":false,"name":"User Feedback Form","single_response":false,"ui_definition":{}},"type":"forms"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms + response: + body: + string: '{"data":{"id":"edb7d6d5-e21c-4fd0-845d-679317b5c2c9","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-04T18:34:04.103183Z","datastore_config":{"datastore_id":"7cc8dadd-3529-4d0f-b8cb-f8c11c165867","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + form to collect user feedback.","idp_survey":false,"modified_at":"2026-06-04T18:34:04.103183Z","name":"User + Feedback Form","org_id":321813,"self_service":false,"single_response":false,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":{"id":"354653","state":"draft","version":1,"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d","definition_signature":"{\"signature\":\"{\\\"version\\\":2,\\\"algorithm\\\":\\\"ecdsa-p384\\\",\\\"pubkey\\\":\\\"XOOWpRG1rFvaLHaG9qLf+GG78llET0BKnZtokyAtLfg=\\\",\\\"timestamp\\\":1780598044,\\\"proof\\\":\\\"MGQCMHsaS9oy6ZDzhUZuJQAYiivxgo9XKx5NjTW/0wafPecXBQ3lr27bKejXr4ihAuwxsgIwPfgedZacZ4t3Qg8p0+jrXH5MBdZx9hrat8mijVibYuLUd2n+bxaY0xcghHKwbtu4\\\"}\",\"version\":1}","data_definition":{},"ui_definition":{},"created_at":"2026-06-04T18:34:04.103183Z","modified_at":"2026-06-04T18:34:04.103183Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v2/forms/edb7d6d5-e21c-4fd0-845d-679317b5c2c9 + response: + body: + string: '{"data":{"id":"edb7d6d5-e21c-4fd0-845d-679317b5c2c9","type":"forms"}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_new_incident_service_returns_created_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_new_incident_service_returns_created_response.frozen deleted file mode 100644 index 1ed50bd716..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_create_a_new_incident_service_returns_created_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2022-05-12T09:51:29.760Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_new_incident_service_returns_created_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_a_new_incident_service_returns_created_response.yaml deleted file mode 100644 index 5f965c96dd..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_create_a_new_incident_service_returns_created_response.yaml +++ /dev/null @@ -1,34 +0,0 @@ -interactions: -- request: - body: '{"data":{"attributes":{"name":"Test-Create_a_new_incident_service_returns_CREATED_response-1652349089"},"type":"services"}}' - headers: - accept: - - application/json - content-type: - - application/json - method: POST - uri: https://api.datadoghq.com/api/v2/services - response: - body: - string: '{"included":[{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0","attributes":{"name":null,"handle":"frog@datadoghq.com","created_at":"2019-10-02T08:15:39.795051+00:00","modified_at":"2020-06-15T12:33:12.884459+00:00","email":"frog@datadoghq.com","icon":"https://secure.gravatar.com/avatar/28a16dfe36e73b60c1d55872cb0f1172?s=48&d=retro","title":null,"verified":true,"service_account":false,"disabled":false,"allowed_login_methods":[],"status":"Active"},"relationships":{"org":{"data":{"type":"orgs","id":"4dee724d-00cc-11ea-a77b-570c9d03c6c5"}}}}],"data":{"type":"services","id":"aa4526fd-8084-58a0-bd52-164cd7f1a51e","attributes":{"name":"Test-Create_a_new_incident_service_returns_CREATED_response-1652349089","created":"2022-05-12T09:51:30.250528+00:00","modified":"2022-05-12T09:51:30.250528+00:00"},"relationships":{"last_modified_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}},"created_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}}}}}' - headers: - content-type: - - application/json - status: - code: 201 - message: Created -- request: - body: null - headers: - accept: - - '*/*' - method: DELETE - uri: https://api.datadoghq.com/api/v2/services/aa4526fd-8084-58a0-bd52-164cd7f1a51e - response: - body: - string: '' - headers: {} - status: - code: 204 - message: No Content -version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_tag_indexing_rule_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_tag_indexing_rule_returns_bad_request_response.frozen new file mode 100644 index 0000000000..19bf8de575 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_tag_indexing_rule_returns_bad_request_response.frozen @@ -0,0 +1 @@ +2026-06-04T18:25:59.130Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_tag_indexing_rule_returns_bad_request_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_a_tag_indexing_rule_returns_bad_request_response.yaml new file mode 100644 index 0000000000..b3f7e498f8 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_tag_indexing_rule_returns_bad_request_response.yaml @@ -0,0 +1,20 @@ +interactions: +- request: + body: '{"data":{"attributes":{"metric_name_matches":["dd.test.*"],"name":"test","options":{"data":{"manage_preexisting_metrics":true,"override_previous_rules":false},"version":99}},"type":"tag_indexing_rules"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules + response: + body: + string: '{"errors":["Invalid request body: options version must be 1"]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 400 + message: Bad Request +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_tag_indexing_rule_returns_created_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_a_tag_indexing_rule_returns_created_response.frozen new file mode 100644 index 0000000000..d30e608dba --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_tag_indexing_rule_returns_created_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:36.532Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_a_tag_indexing_rule_returns_created_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_a_tag_indexing_rule_returns_created_response.yaml new file mode 100644 index 0000000000..c3d2a3d81d --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_a_tag_indexing_rule_returns_created_response.yaml @@ -0,0 +1,34 @@ +interactions: +- request: + body: '{"data":{"attributes":{"exclude_tags_mode":false,"ignored_metric_name_matches":[],"metric_name_matches":["dd.test.*"],"name":"my-indexing-rule","options":{"data":{"dynamic_tags":{"queried_tags_window_seconds":3600,"related_asset_tags":false},"manage_preexisting_metrics":true,"metric_match":{"queried_window_seconds":3600},"override_previous_rules":false},"version":1},"tags":["env","service"]},"type":"tag_indexing_rules"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules + response: + body: + string: '{"data":{"id":"b0a2d605-eee3-4c3b-89cf-51410b054ae7","type":"tag_indexing_rules","attributes":{"created_at":"2026-06-04T16:39:36.579331Z","created_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","exclude_tags_mode":false,"ignored_metric_name_matches":[],"metric_name_matches":["dd.test.*"],"modified_at":"2026-06-04T16:39:36.579331Z","modified_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"my-indexing-rule","options":{"version":1,"data":{"override_previous_rules":false,"manage_preexisting_metrics":true,"dynamic_tags":{"queried_tags_window_seconds":3600},"metric_match":{"queried_window_seconds":3600}}},"rule_order":1,"tags":["env","service"]}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 201 + message: Created +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/b0a2d605-eee3-4c3b-89cf-51410b054ae7 + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_create_and_publish_a_form_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_and_publish_a_form_returns_ok_response.frozen new file mode 100644 index 0000000000..0add2d175d --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_and_publish_a_form_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-04T18:34:04.703Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_and_publish_a_form_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_and_publish_a_form_returns_ok_response.yaml new file mode 100644 index 0000000000..aa56ce9f6b --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_and_publish_a_form_returns_ok_response.yaml @@ -0,0 +1,39 @@ +interactions: +- request: + body: '{"data":{"attributes":{"anonymous":false,"data_definition":{},"description":"A + form to collect user feedback.","idp_survey":false,"name":"User Feedback Form","single_response":false,"ui_definition":{}},"type":"forms"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms/create_and_publish + response: + body: + string: '{"data":{"id":"65318f43-ac0f-4990-add8-9847eee98fd8","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-04T18:34:05.178222Z","datastore_config":{"datastore_id":"c89fc16a-53fb-4439-a007-1ebec095b1b7","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + form to collect user feedback.","idp_survey":false,"modified_at":"2026-06-04T18:34:05.178222Z","name":"User + Feedback Form","org_id":321813,"publication":{"id":"357922","org_id":321813,"form_id":"65318f43-ac0f-4990-add8-9847eee98fd8","publish_seq":1,"form_version":1,"created_at":"2026-06-04T18:34:05.178222Z","modified_at":"2026-06-04T18:34:05.178222Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"self_service":false,"single_response":false,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":{"id":"354654","state":"frozen","version":1,"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d","definition_signature":"{\"signature\":\"{\\\"version\\\":2,\\\"algorithm\\\":\\\"ecdsa-p384\\\",\\\"pubkey\\\":\\\"XOOWpRG1rFvaLHaG9qLf+GG78llET0BKnZtokyAtLfg=\\\",\\\"timestamp\\\":1780598045,\\\"proof\\\":\\\"MGYCMQCPPczYtNvj1RLjrQkIrQNHHVgB3nxFIjn5jgwUE0tweuTV1kZnaYYUg+gl1Eh5+tMCMQCajq1cy1MaWEbzHA0EcDC6LjyQ5ajqqngb3RMQwzP8ewvsh+uzkPD2v6AHjnW115o=\\\"}\",\"version\":1}","data_definition":{},"ui_definition":{},"created_at":"2026-06-04T18:34:05.178222Z","modified_at":"2026-06-04T18:34:05.178222Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v2/forms/65318f43-ac0f-4990-add8-9847eee98fd8 + response: + body: + string: '{"data":{"id":"65318f43-ac0f-4990-add8-9847eee98fd8","type":"forms"}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_create_or_update_a_form_version_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_or_update_a_form_version_returns_not_found_response.frozen new file mode 100644 index 0000000000..e11ef0b046 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_or_update_a_form_version_returns_not_found_response.frozen @@ -0,0 +1 @@ +2026-06-10T18:49:59.498Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_or_update_a_form_version_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_or_update_a_form_version_returns_not_found_response.yaml new file mode 100644 index 0000000000..bdefd8260f --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_or_update_a_form_version_returns_not_found_response.yaml @@ -0,0 +1,23 @@ +interactions: +- request: + body: '{"data":{"attributes":{"data_definition":{"description":"Welcome to the + Engineering Experience Survey.","required":[],"title":"Developer Experience + Survey","type":"object"},"state":"frozen","ui_definition":{"ui:order":[],"ui:theme":{"primaryColor":"gray"}},"upsert_params":{"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d","insert_only":false,"match_policy":"none"}},"type":"form_versions"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms/00000000-0000-0000-0000-000000000001/versions + response: + body: + string: '{"errors":[{"status":"404","id":"f24e2ab1-4ba1-48cf-a4a2-86a32cc2e702","title":"form + not found"}]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 404 + message: Not Found +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_create_or_update_a_form_version_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_create_or_update_a_form_version_returns_ok_response.frozen new file mode 100644 index 0000000000..825b0d0aab --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_or_update_a_form_version_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-10T18:49:59.826Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_create_or_update_a_form_version_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_create_or_update_a_form_version_returns_ok_response.yaml new file mode 100644 index 0000000000..2e71b45256 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_create_or_update_a_form_version_returns_ok_response.yaml @@ -0,0 +1,60 @@ +interactions: +- request: + body: '{"data":{"attributes":{"anonymous":false,"data_definition":{},"description":"A + simple test form.","idp_survey":false,"name":"Test-Create_or_update_a_form_version_returns_OK_response-1781117399","single_response":false,"ui_definition":{}},"type":"forms"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms + response: + body: + string: '{"data":{"id":"49ccfa97-825c-46f8-872b-5368fd1b56a4","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-10T18:50:00.188982Z","datastore_config":{"datastore_id":"be7e7cf5-6a73-4d07-9654-a40997bee800","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + simple test form.","idp_survey":false,"modified_at":"2026-06-10T18:50:00.188982Z","name":"Test-Create_or_update_a_form_version_returns_OK_response-1781117399","org_id":321813,"self_service":false,"single_response":false,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":{"id":"376765","state":"draft","version":1,"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d","definition_signature":"{\"signature\":\"{\\\"version\\\":2,\\\"algorithm\\\":\\\"ecdsa-p384\\\",\\\"pubkey\\\":\\\"S2KAuCoip8JbyZNOT2gYbpUouidttEGvYWyvqeoMQjE=\\\",\\\"timestamp\\\":1781117400,\\\"proof\\\":\\\"MGUCMQDyae03EWzAe3gENsZt4WVLiPP8TGQg7UO7I28dcEK5w70MRYRf9x18lDXfOEDoPrgCMCHlQeXp/K5AKKmyVYwtJd9VI1SsJoOBOXbj26BhPKZBF386oH7LxK45J12htxj9hw==\\\"}\",\"version\":1}","data_definition":{},"ui_definition":{},"created_at":"2026-06-10T18:50:00.188982Z","modified_at":"2026-06-10T18:50:00.188982Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: '{"data":{"attributes":{"data_definition":{"description":"Welcome to the + Engineering Experience Survey.","required":[],"title":"Developer Experience + Survey","type":"object"},"state":"frozen","ui_definition":{"ui:order":[],"ui:theme":{"primaryColor":"gray"}},"upsert_params":{"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d","insert_only":false,"match_policy":"none"}},"type":"form_versions"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms/49ccfa97-825c-46f8-872b-5368fd1b56a4/versions + response: + body: + string: '{"data":{"id":"376765","type":"form_versions","attributes":{"created_at":"2026-06-10T18:50:00.188982Z","data_definition":{"description":"Welcome + to the Engineering Experience Survey.","required":[],"title":"Developer Experience + Survey","type":"object"},"definition_signature":"{\"signature\":\"{\\\"version\\\":2,\\\"algorithm\\\":\\\"ecdsa-p384\\\",\\\"pubkey\\\":\\\"XOOWpRG1rFvaLHaG9qLf+GG78llET0BKnZtokyAtLfg=\\\",\\\"timestamp\\\":1781117400,\\\"proof\\\":\\\"MGQCMGbAihRvSVO+KjM9uttjprG+2ZR6D5kKoXwIS4em5mjg9StXgu/pi08NfU4WMdTD8wIwcxxGWh+MzG6awNnii2Cjl46YNhPBV39JpU03mlQsb+9cGVgqL2JYVsDaAJ0G+YzN\\\"}\",\"version\":1}","etag":"30586851d6ab0b26080d3f34629e5e2cfb9f2f57457eec927b72eafefae81e48","modified_at":"2026-06-10T18:50:00.568923Z","state":"frozen","ui_definition":{"ui:order":[],"ui:theme":{"primaryColor":"gray"}},"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":1}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v2/forms/49ccfa97-825c-46f8-872b-5368fd1b56a4 + response: + body: + string: '{"data":{"id":"49ccfa97-825c-46f8-872b-5368fd1b56a4","type":"forms"}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_form_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_form_returns_ok_response.frozen new file mode 100644 index 0000000000..602659c5aa --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_form_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-04T18:34:05.786Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_form_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_delete_a_form_returns_ok_response.yaml new file mode 100644 index 0000000000..9da9f04a34 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_form_returns_ok_response.yaml @@ -0,0 +1,54 @@ +interactions: +- request: + body: '{"data":{"attributes":{"anonymous":false,"data_definition":{},"description":"A + simple test form.","idp_survey":false,"name":"Test-Delete_a_form_returns_OK_response-1780598045","single_response":false,"ui_definition":{}},"type":"forms"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms + response: + body: + string: '{"data":{"id":"257a9d32-6ed0-429b-9745-75366363caf3","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-04T18:34:06.128238Z","datastore_config":{"datastore_id":"1e33b83f-0733-454e-9404-c032a479548e","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + simple test form.","idp_survey":false,"modified_at":"2026-06-04T18:34:06.128238Z","name":"Test-Delete_a_form_returns_OK_response-1780598045","org_id":321813,"self_service":false,"single_response":false,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":{"id":"354655","state":"draft","version":1,"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d","definition_signature":"{\"signature\":\"{\\\"version\\\":2,\\\"algorithm\\\":\\\"ecdsa-p384\\\",\\\"pubkey\\\":\\\"XOOWpRG1rFvaLHaG9qLf+GG78llET0BKnZtokyAtLfg=\\\",\\\"timestamp\\\":1780598046,\\\"proof\\\":\\\"MGQCMDR3p4Wc6qLinT0JK9tT2I3NBvYMx43pPcUuCOyMapne99sS2RJe0woOU68I0GbQvwIwQMw7OQruNsIuTNJxK0zthVCFnXaxLASIvl2NsyomT9s/p2cgEzOY4T+XyRl6i27c\\\"}\",\"version\":1}","data_definition":{},"ui_definition":{},"created_at":"2026-06-04T18:34:06.128238Z","modified_at":"2026-06-04T18:34:06.128238Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v2/forms/257a9d32-6ed0-429b-9745-75366363caf3 + response: + body: + string: '{"data":{"id":"257a9d32-6ed0-429b-9745-75366363caf3","type":"forms"}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v2/forms/257a9d32-6ed0-429b-9745-75366363caf3 + response: + body: + string: '{}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_tag_indexing_rule_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_tag_indexing_rule_returns_bad_request_response.frozen new file mode 100644 index 0000000000..6c06bbfaa0 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_tag_indexing_rule_returns_bad_request_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:36.667Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_tag_indexing_rule_returns_bad_request_response.yaml b/tests/v2/cassettes/test_scenarios/test_delete_a_tag_indexing_rule_returns_bad_request_response.yaml new file mode 100644 index 0000000000..c9c5d47274 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_tag_indexing_rule_returns_bad_request_response.yaml @@ -0,0 +1,18 @@ +interactions: +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/not-a-valid-uuid + response: + body: + string: '{"errors":["Invalid tag indexing rule ID format"]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 400 + message: Bad Request +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_tag_indexing_rule_returns_no_content_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_a_tag_indexing_rule_returns_no_content_response.frozen new file mode 100644 index 0000000000..2d5e68ac20 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_tag_indexing_rule_returns_no_content_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:36.727Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_a_tag_indexing_rule_returns_no_content_response.yaml b/tests/v2/cassettes/test_scenarios/test_delete_a_tag_indexing_rule_returns_no_content_response.yaml new file mode 100644 index 0000000000..07a960f067 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_delete_a_tag_indexing_rule_returns_no_content_response.yaml @@ -0,0 +1,48 @@ +interactions: +- request: + body: '{"data":{"attributes":{"metric_name_matches":["dd.TestDeleteatagindexingrulereturnsNoContentresponse1780591176.*"],"name":"TestDeleteatagindexingrulereturnsNoContentresponse1780591176","tags":["env","service"]},"type":"tag_indexing_rules"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules + response: + body: + string: '{"data":{"id":"223d99dd-9c0a-4181-82b7-53d234bf5b26","type":"tag_indexing_rules","attributes":{"created_at":"2026-06-04T16:39:36.77795Z","created_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","exclude_tags_mode":false,"metric_name_matches":["dd.TestDeleteatagindexingrulereturnsNoContentresponse1780591176.*"],"modified_at":"2026-06-04T16:39:36.77795Z","modified_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"TestDeleteatagindexingrulereturnsNoContentresponse1780591176","options":{"version":1,"data":{"override_previous_rules":false,"manage_preexisting_metrics":true}},"rule_order":1,"tags":["env","service"]}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 201 + message: Created +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/223d99dd-9c0a-4181-82b7-53d234bf5b26 + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/223d99dd-9c0a-4181-82b7-53d234bf5b26 + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_delete_an_existing_incident_service_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_delete_an_existing_incident_service_returns_ok_response.frozen deleted file mode 100644 index 6a8b97d928..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_delete_an_existing_incident_service_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2022-05-12T09:51:30.710Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_delete_an_existing_incident_service_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_delete_an_existing_incident_service_returns_ok_response.yaml deleted file mode 100644 index 3021355d6d..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_delete_an_existing_incident_service_returns_ok_response.yaml +++ /dev/null @@ -1,48 +0,0 @@ -interactions: -- request: - body: '{"data":{"attributes":{"name":"Test-Delete_an_existing_incident_service_returns_OK_response-1652349090"},"type":"services"}}' - headers: - accept: - - application/json - content-type: - - application/json - method: POST - uri: https://api.datadoghq.com/api/v2/services - response: - body: - string: '{"included":[{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0","attributes":{"name":null,"handle":"frog@datadoghq.com","created_at":"2019-10-02T08:15:39.795051+00:00","modified_at":"2020-06-15T12:33:12.884459+00:00","email":"frog@datadoghq.com","icon":"https://secure.gravatar.com/avatar/28a16dfe36e73b60c1d55872cb0f1172?s=48&d=retro","title":null,"verified":true,"service_account":false,"disabled":false,"allowed_login_methods":[],"status":"Active"},"relationships":{"org":{"data":{"type":"orgs","id":"4dee724d-00cc-11ea-a77b-570c9d03c6c5"}}}}],"data":{"type":"services","id":"9f42d0e5-438a-5808-bb84-01ede3c065fb","attributes":{"name":"Test-Delete_an_existing_incident_service_returns_OK_response-1652349090","created":"2022-05-12T09:51:31.181927+00:00","modified":"2022-05-12T09:51:31.181927+00:00"},"relationships":{"last_modified_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}},"created_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}}}}}' - headers: - content-type: - - application/json - status: - code: 201 - message: Created -- request: - body: null - headers: - accept: - - '*/*' - method: DELETE - uri: https://api.datadoghq.com/api/v2/services/9f42d0e5-438a-5808-bb84-01ede3c065fb - response: - body: - string: '' - headers: {} - status: - code: 204 - message: No Content -- request: - body: null - headers: - accept: - - '*/*' - method: DELETE - uri: https://api.datadoghq.com/api/v2/services/9f42d0e5-438a-5808-bb84-01ede3c065fb - response: - body: - string: '' - headers: {} - status: - code: 204 - message: No Content -version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_form_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_form_returns_not_found_response.frozen new file mode 100644 index 0000000000..9e0e0d9867 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_form_returns_not_found_response.frozen @@ -0,0 +1 @@ +2026-06-04T18:34:06.925Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_form_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_form_returns_not_found_response.yaml new file mode 100644 index 0000000000..c6a18c6860 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_form_returns_not_found_response.yaml @@ -0,0 +1,19 @@ +interactions: +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/forms/00000000-0000-0000-0000-000000000001 + response: + body: + string: '{"errors":[{"status":"404","id":"bccf11bd-13c7-4911-9c00-58c00b6f8f52","title":"form + not found"}]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 404 + message: Not Found +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_form_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_form_returns_ok_response.frozen new file mode 100644 index 0000000000..aea0ca127d --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_form_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-04T18:34:07.294Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_form_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_form_returns_ok_response.yaml new file mode 100644 index 0000000000..160e466229 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_form_returns_ok_response.yaml @@ -0,0 +1,55 @@ +interactions: +- request: + body: '{"data":{"attributes":{"anonymous":false,"data_definition":{},"description":"A + simple test form.","idp_survey":false,"name":"Test-Get_a_form_returns_OK_response-1780598047","single_response":false,"ui_definition":{}},"type":"forms"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms + response: + body: + string: '{"data":{"id":"b42493d4-fbd0-4139-b4b9-4815f414621d","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-04T18:34:07.632566Z","datastore_config":{"datastore_id":"9aace6ce-ee9d-4c81-b176-22bed53ff080","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + simple test form.","idp_survey":false,"modified_at":"2026-06-04T18:34:07.632566Z","name":"Test-Get_a_form_returns_OK_response-1780598047","org_id":321813,"self_service":false,"single_response":false,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":{"id":"354656","state":"draft","version":1,"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d","definition_signature":"{\"signature\":\"{\\\"version\\\":2,\\\"algorithm\\\":\\\"ecdsa-p384\\\",\\\"pubkey\\\":\\\"XOOWpRG1rFvaLHaG9qLf+GG78llET0BKnZtokyAtLfg=\\\",\\\"timestamp\\\":1780598047,\\\"proof\\\":\\\"MGUCMQCkP+Usa2zK0v4SsSDBHsE4p88u025oyaRrAnNTiTXLwGr3K0W4/MAFeeosBwZonE0CMGYsqH/GAJUKeY0ZZGl8GZp2QeY1l3byimzWXRLf36CHhuB1Pshv/7bi0WoYYCOQIg==\\\"}\",\"version\":1}","data_definition":{},"ui_definition":{},"created_at":"2026-06-04T18:34:07.632566Z","modified_at":"2026-06-04T18:34:07.632566Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/forms/b42493d4-fbd0-4139-b4b9-4815f414621d + response: + body: + string: '{"data":{"id":"b42493d4-fbd0-4139-b4b9-4815f414621d","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-04T18:34:07.632566Z","datastore_config":{"datastore_id":"9aace6ce-ee9d-4c81-b176-22bed53ff080","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + simple test form.","idp_survey":false,"modified_at":"2026-06-04T18:34:07.632566Z","name":"Test-Get_a_form_returns_OK_response-1780598047","org_id":321813,"self_service":false,"single_response":false,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":{"id":"354656","state":"draft","version":1,"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d","definition_signature":"{\"signature\":\"{\\\"version\\\":2,\\\"algorithm\\\":\\\"ecdsa-p384\\\",\\\"pubkey\\\":\\\"XOOWpRG1rFvaLHaG9qLf+GG78llET0BKnZtokyAtLfg=\\\",\\\"timestamp\\\":1780598047,\\\"proof\\\":\\\"MGUCMQCkP+Usa2zK0v4SsSDBHsE4p88u025oyaRrAnNTiTXLwGr3K0W4/MAFeeosBwZonE0CMGYsqH/GAJUKeY0ZZGl8GZp2QeY1l3byimzWXRLf36CHhuB1Pshv/7bi0WoYYCOQIg==\\\"}\",\"version\":1}","data_definition":{},"ui_definition":{},"created_at":"2026-06-04T18:34:07.632566Z","modified_at":"2026-06-04T18:34:07.632566Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v2/forms/b42493d4-fbd0-4139-b4b9-4815f414621d + response: + body: + string: '{"data":{"id":"b42493d4-fbd0-4139-b4b9-4815f414621d","type":"forms"}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_list_of_all_incident_services_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_list_of_all_incident_services_returns_ok_response.frozen deleted file mode 100644 index fe0e8ff0de..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_a_list_of_all_incident_services_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2022-05-12T09:51:32.124Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_list_of_all_incident_services_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_list_of_all_incident_services_returns_ok_response.yaml deleted file mode 100644 index 4a17ac23b4..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_a_list_of_all_incident_services_returns_ok_response.yaml +++ /dev/null @@ -1,50 +0,0 @@ -interactions: -- request: - body: '{"data":{"attributes":{"name":"Test-Get_a_list_of_all_incident_services_returns_OK_response-1652349092"},"type":"services"}}' - headers: - accept: - - application/json - content-type: - - application/json - method: POST - uri: https://api.datadoghq.com/api/v2/services - response: - body: - string: '{"included":[{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0","attributes":{"name":null,"handle":"frog@datadoghq.com","created_at":"2019-10-02T08:15:39.795051+00:00","modified_at":"2020-06-15T12:33:12.884459+00:00","email":"frog@datadoghq.com","icon":"https://secure.gravatar.com/avatar/28a16dfe36e73b60c1d55872cb0f1172?s=48&d=retro","title":null,"verified":true,"service_account":false,"disabled":false,"allowed_login_methods":[],"status":"Active"},"relationships":{"org":{"data":{"type":"orgs","id":"4dee724d-00cc-11ea-a77b-570c9d03c6c5"}}}}],"data":{"type":"services","id":"84fc985e-fd2b-5e37-b627-eee699786658","attributes":{"name":"Test-Get_a_list_of_all_incident_services_returns_OK_response-1652349092","created":"2022-05-12T09:51:32.548997+00:00","modified":"2022-05-12T09:51:32.548997+00:00"},"relationships":{"last_modified_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}},"created_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}}}}}' - headers: - content-type: - - application/json - status: - code: 201 - message: Created -- request: - body: null - headers: - accept: - - application/json - method: GET - uri: https://api.datadoghq.com/api/v2/services?filter=Test-Get_a_list_of_all_incident_services_returns_OK_response-1652349092 - response: - body: - string: '{"meta":{"sort":"ASC","pagination":{"total":7805,"size":1,"next_offset":1,"offset":0},"total":7805},"data":[{"type":"services","id":"84fc985e-fd2b-5e37-b627-eee699786658","attributes":{"name":"Test-Get_a_list_of_all_incident_services_returns_OK_response-1652349092","created":"2022-05-12T09:51:32.548997+00:00","modified":"2022-05-12T09:51:32.548997+00:00"},"relationships":{"last_modified_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}},"created_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}}}}]}' - headers: - content-type: - - application/json - status: - code: 200 - message: OK -- request: - body: null - headers: - accept: - - '*/*' - method: DELETE - uri: https://api.datadoghq.com/api/v2/services/84fc985e-fd2b-5e37-b627-eee699786658 - response: - body: - string: '' - headers: {} - status: - code: 204 - message: No Content -version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_bad_request_response.frozen new file mode 100644 index 0000000000..5e3118fd61 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_bad_request_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:36.958Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_bad_request_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_bad_request_response.yaml new file mode 100644 index 0000000000..09d4654757 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_bad_request_response.yaml @@ -0,0 +1,18 @@ +interactions: +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/not-a-valid-uuid + response: + body: + string: '{"errors":["Invalid tag indexing rule ID format"]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 400 + message: Bad Request +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_not_found_response.frozen new file mode 100644 index 0000000000..3411a781d2 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_not_found_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:37.020Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_not_found_response.yaml new file mode 100644 index 0000000000..4947cb507f --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_not_found_response.yaml @@ -0,0 +1,18 @@ +interactions: +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/00000000-0000-0000-0000-000000000000 + response: + body: + string: '{"errors":["Tag indexing rule not found"]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 404 + message: Not Found +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_ok_response.frozen new file mode 100644 index 0000000000..d312bd4626 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:37.099Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_ok_response.yaml new file mode 100644 index 0000000000..3e035e9105 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_a_tag_indexing_rule_returns_ok_response.yaml @@ -0,0 +1,50 @@ +interactions: +- request: + body: '{"data":{"attributes":{"metric_name_matches":["dd.TestGetatagindexingrulereturnsOKresponse1780591177.*"],"name":"TestGetatagindexingrulereturnsOKresponse1780591177","tags":["env","service"]},"type":"tag_indexing_rules"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules + response: + body: + string: '{"data":{"id":"cab4c8d3-6ac8-4cb8-aa74-e68a110db375","type":"tag_indexing_rules","attributes":{"created_at":"2026-06-04T16:39:37.150692Z","created_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","exclude_tags_mode":false,"metric_name_matches":["dd.TestGetatagindexingrulereturnsOKresponse1780591177.*"],"modified_at":"2026-06-04T16:39:37.150692Z","modified_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"TestGetatagindexingrulereturnsOKresponse1780591177","options":{"version":1,"data":{"override_previous_rules":false,"manage_preexisting_metrics":true}},"rule_order":1,"tags":["env","service"]}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 201 + message: Created +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/cab4c8d3-6ac8-4cb8-aa74-e68a110db375 + response: + body: + string: '{"data":{"id":"cab4c8d3-6ac8-4cb8-aa74-e68a110db375","type":"tag_indexing_rules","attributes":{"created_at":"2026-06-04T16:39:37.150692Z","created_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","exclude_tags_mode":false,"metric_name_matches":["dd.TestGetatagindexingrulereturnsOKresponse1780591177.*"],"modified_at":"2026-06-04T16:39:37.150692Z","modified_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"TestGetatagindexingrulereturnsOKresponse1780591177","options":{"version":1,"data":{"override_previous_rules":false,"manage_preexisting_metrics":true}},"rule_order":1,"tags":["env","service"]}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/cab4c8d3-6ac8-4cb8-aa74-e68a110db375 + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_get_details_of_an_incident_service_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_details_of_an_incident_service_returns_ok_response.frozen deleted file mode 100644 index 44bfb43319..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_details_of_an_incident_service_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2022-05-12T09:51:33.610Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_details_of_an_incident_service_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_details_of_an_incident_service_returns_ok_response.yaml deleted file mode 100644 index 54e7e73203..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_get_details_of_an_incident_service_returns_ok_response.yaml +++ /dev/null @@ -1,50 +0,0 @@ -interactions: -- request: - body: '{"data":{"attributes":{"name":"Test-Get_details_of_an_incident_service_returns_OK_response-1652349093"},"type":"services"}}' - headers: - accept: - - application/json - content-type: - - application/json - method: POST - uri: https://api.datadoghq.com/api/v2/services - response: - body: - string: '{"included":[{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0","attributes":{"name":null,"handle":"frog@datadoghq.com","created_at":"2019-10-02T08:15:39.795051+00:00","modified_at":"2020-06-15T12:33:12.884459+00:00","email":"frog@datadoghq.com","icon":"https://secure.gravatar.com/avatar/28a16dfe36e73b60c1d55872cb0f1172?s=48&d=retro","title":null,"verified":true,"service_account":false,"disabled":false,"allowed_login_methods":[],"status":"Active"},"relationships":{"org":{"data":{"type":"orgs","id":"4dee724d-00cc-11ea-a77b-570c9d03c6c5"}}}}],"data":{"type":"services","id":"e7c6527e-95ff-5ab1-b151-ba4f786038c0","attributes":{"name":"Test-Get_details_of_an_incident_service_returns_OK_response-1652349093","created":"2022-05-12T09:51:34.184497+00:00","modified":"2022-05-12T09:51:34.184497+00:00"},"relationships":{"last_modified_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}},"created_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}}}}}' - headers: - content-type: - - application/json - status: - code: 201 - message: Created -- request: - body: null - headers: - accept: - - application/json - method: GET - uri: https://api.datadoghq.com/api/v2/services/e7c6527e-95ff-5ab1-b151-ba4f786038c0 - response: - body: - string: '{"data":{"type":"services","id":"e7c6527e-95ff-5ab1-b151-ba4f786038c0","attributes":{"name":"Test-Get_details_of_an_incident_service_returns_OK_response-1652349093","created":"2022-05-12T09:51:34.184497+00:00","modified":"2022-05-12T09:51:34.184497+00:00"},"relationships":{"last_modified_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}},"created_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}}}}}' - headers: - content-type: - - application/json - status: - code: 200 - message: OK -- request: - body: null - headers: - accept: - - '*/*' - method: DELETE - uri: https://api.datadoghq.com/api/v2/services/e7c6527e-95ff-5ab1-b151-ba4f786038c0 - response: - body: - string: '' - headers: {} - status: - code: 204 - message: No Content -version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_list_forms_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_list_forms_returns_ok_response.frozen new file mode 100644 index 0000000000..e1050a989d --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_list_forms_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-04T18:34:08.479Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_list_forms_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_list_forms_returns_ok_response.yaml new file mode 100644 index 0000000000..f27c73922a --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_list_forms_returns_ok_response.yaml @@ -0,0 +1,59 @@ +interactions: +- request: + body: '{"data":{"attributes":{"anonymous":false,"data_definition":{},"description":"A + simple test form.","idp_survey":false,"name":"Test-List_forms_returns_OK_response-1780598048","single_response":false,"ui_definition":{}},"type":"forms"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms + response: + body: + string: '{"data":{"id":"d71d1aef-539d-4951-b98e-ff4c0c4f97bb","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-04T18:34:08.937305Z","datastore_config":{"datastore_id":"76b9f7b4-99d8-4a55-b95c-260cac22820d","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + simple test form.","idp_survey":false,"modified_at":"2026-06-04T18:34:08.937305Z","name":"Test-List_forms_returns_OK_response-1780598048","org_id":321813,"self_service":false,"single_response":false,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":{"id":"354657","state":"draft","version":1,"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d","definition_signature":"{\"signature\":\"{\\\"version\\\":2,\\\"algorithm\\\":\\\"ecdsa-p384\\\",\\\"pubkey\\\":\\\"XOOWpRG1rFvaLHaG9qLf+GG78llET0BKnZtokyAtLfg=\\\",\\\"timestamp\\\":1780598048,\\\"proof\\\":\\\"MGUCMBSAXvYX++PAyywDBLlJsqgHq1ug3WLtMqKQRwx50qdAdj1UP1W58NnN9/DP70HavAIxANwA4guivHrOqlL36ETzde//0mI55MJ8Yv0ynU2p+QhqCSuJEHHgUUWjk0wYKJuZog==\\\"}\",\"version\":1}","data_definition":{},"ui_definition":{},"created_at":"2026-06-04T18:34:08.937305Z","modified_at":"2026-06-04T18:34:08.937305Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/forms + response: + body: + string: '{"data":[{"id":"7af864d6-8c2f-41e5-b80d-1be56ea33d23","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-04T18:05:41.512876Z","datastore_config":{"datastore_id":"543a7e0e-0f0f-4b14-8911-2f20df5f1b07","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + form to collect user feedback.","idp_survey":false,"modified_at":"2026-06-04T18:05:41.512876Z","name":"User + Feedback Form","org_id":321813,"self_service":false,"single_response":false,"user_id":1445416,"user_uuid":"3ad549bf-eba0-11e9-a77a-0705486660d0"}},{"id":"b2953c07-9385-4de2-9cd3-af3f5d6c7d09","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-04T18:15:44.116619Z","datastore_config":{"datastore_id":"77b4b384-27d6-4619-bb55-1b2158d0080b","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + form to collect user feedback.","idp_survey":false,"modified_at":"2026-06-04T18:15:44.116619Z","name":"User + Feedback Form","org_id":321813,"self_service":false,"single_response":false,"user_id":1445416,"user_uuid":"3ad549bf-eba0-11e9-a77a-0705486660d0"}},{"id":"d71d1aef-539d-4951-b98e-ff4c0c4f97bb","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-04T18:34:08.937305Z","datastore_config":{"datastore_id":"76b9f7b4-99d8-4a55-b95c-260cac22820d","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + simple test form.","idp_survey":false,"modified_at":"2026-06-04T18:34:08.937305Z","name":"Test-List_forms_returns_OK_response-1780598048","org_id":321813,"self_service":false,"single_response":false,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v2/forms/d71d1aef-539d-4951-b98e-ff4c0c4f97bb + response: + body: + string: '{"data":{"id":"d71d1aef-539d-4951-b98e-ff4c0c4f97bb","type":"forms"}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_for_a_metric_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_for_a_metric_returns_bad_request_response.frozen new file mode 100644 index 0000000000..e625ce2934 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_for_a_metric_returns_bad_request_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:37.314Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_for_a_metric_returns_bad_request_response.yaml b/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_for_a_metric_returns_bad_request_response.yaml new file mode 100644 index 0000000000..3889044b9b --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_for_a_metric_returns_bad_request_response.yaml @@ -0,0 +1,19 @@ +interactions: +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/metrics/1invalid/tag-indexing-rules + response: + body: + string: '{"errors":["Invalid metric name: metric name must start with a letter + and only contain letters, numbers, dots, and underscores"]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 400 + message: Bad Request +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_for_a_metric_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_for_a_metric_returns_ok_response.frozen new file mode 100644 index 0000000000..b2c344487d --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_for_a_metric_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:37.373Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_for_a_metric_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_for_a_metric_returns_ok_response.yaml new file mode 100644 index 0000000000..3f2cf4be97 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_for_a_metric_returns_ok_response.yaml @@ -0,0 +1,18 @@ +interactions: +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/metrics/TestListtagindexingrulesforametricreturnsOKresponse1780591177/tag-indexing-rules + response: + body: + string: '{"data":[]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_returns_ok_response.frozen new file mode 100644 index 0000000000..70518b04ee --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:37.519Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_returns_ok_response.yaml new file mode 100644 index 0000000000..3195fc450e --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_list_tag_indexing_rules_returns_ok_response.yaml @@ -0,0 +1,18 @@ +interactions: +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules + response: + body: + string: '{"data":[],"meta":{"total":0},"links":{"self":"https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules","first":"https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules?page%5Blimit%5D=100\u0026page%5Boffset%5D=0"}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_publish_a_form_version_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_publish_a_form_version_returns_not_found_response.frozen new file mode 100644 index 0000000000..bb764fbf5b --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_publish_a_form_version_returns_not_found_response.frozen @@ -0,0 +1 @@ +2026-06-10T18:50:01.064Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_publish_a_form_version_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_publish_a_form_version_returns_not_found_response.yaml new file mode 100644 index 0000000000..4dc7cacafd --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_publish_a_form_version_returns_not_found_response.yaml @@ -0,0 +1,21 @@ +interactions: +- request: + body: '{"data":{"attributes":{"version":1},"type":"form_publications"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms/00000000-0000-0000-0000-000000000001/publish + response: + body: + string: '{"errors":[{"status":"404","id":"890f7bea-c0e2-45f9-a06a-e3214a19be57","title":"form + not found"}]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 404 + message: Not Found +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_publish_a_form_version_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_publish_a_form_version_returns_ok_response.frozen new file mode 100644 index 0000000000..1468de2aa1 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_publish_a_form_version_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-10T18:50:01.393Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_publish_a_form_version_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_publish_a_form_version_returns_ok_response.yaml new file mode 100644 index 0000000000..4b2fb3e8c8 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_publish_a_form_version_returns_ok_response.yaml @@ -0,0 +1,56 @@ +interactions: +- request: + body: '{"data":{"attributes":{"anonymous":false,"data_definition":{},"description":"A + simple test form.","idp_survey":false,"name":"Test-Publish_a_form_version_returns_OK_response-1781117401","single_response":false,"ui_definition":{}},"type":"forms"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms + response: + body: + string: '{"data":{"id":"c73796e4-0dd3-4da4-8a9a-9297ba412b3e","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-10T18:50:01.747408Z","datastore_config":{"datastore_id":"23249c30-b740-4a4b-8c23-34fb653dfdea","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + simple test form.","idp_survey":false,"modified_at":"2026-06-10T18:50:01.747408Z","name":"Test-Publish_a_form_version_returns_OK_response-1781117401","org_id":321813,"self_service":false,"single_response":false,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":{"id":"376767","state":"draft","version":1,"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d","definition_signature":"{\"signature\":\"{\\\"version\\\":2,\\\"algorithm\\\":\\\"ecdsa-p384\\\",\\\"pubkey\\\":\\\"XOOWpRG1rFvaLHaG9qLf+GG78llET0BKnZtokyAtLfg=\\\",\\\"timestamp\\\":1781117401,\\\"proof\\\":\\\"MGYCMQCE98ZIPD8JYrsEi1xXxe+8SVCjLroQbr+RRxKDmhfT++nN4tdcUXYYNtpNJDundgwCMQDG5TdraksHELR6ovN9xQtacfKq3wr2rKAIejh6Ut7m+jO5dmLml90pBOQMnAFXed4=\\\"}\",\"version\":1}","data_definition":{},"ui_definition":{},"created_at":"2026-06-10T18:50:01.747408Z","modified_at":"2026-06-10T18:50:01.747408Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: '{"data":{"attributes":{"version":1},"type":"form_publications"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms/c73796e4-0dd3-4da4-8a9a-9297ba412b3e/publish + response: + body: + string: '{"data":{"id":"380020","type":"form_publications","attributes":{"created_at":"2026-06-10T18:50:02.131227Z","form_id":"c73796e4-0dd3-4da4-8a9a-9297ba412b3e","form_version":1,"modified_at":"2026-06-10T18:50:02.131227Z","org_id":321813,"publish_seq":1,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v2/forms/c73796e4-0dd3-4da4-8a9a-9297ba412b3e + response: + body: + string: '{"data":{"id":"c73796e4-0dd3-4da4-8a9a-9297ba412b3e","type":"forms"}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_bad_request_response.frozen new file mode 100644 index 0000000000..b4a0a6926f --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_bad_request_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:37.579Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_bad_request_response.yaml b/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_bad_request_response.yaml new file mode 100644 index 0000000000..7894ed78dc --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_bad_request_response.yaml @@ -0,0 +1,20 @@ +interactions: +- request: + body: '{"data":{"attributes":{"rule_ids":[]},"type":"tag_indexing_rules"}}' + headers: + accept: + - '*/*' + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/order + response: + body: + string: '{"errors":["rule_ids must not be empty"]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 400 + message: Bad Request +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_no_content_response.frozen b/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_no_content_response.frozen new file mode 100644 index 0000000000..c65dd93546 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_no_content_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:37.630Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_no_content_response.yaml b/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_no_content_response.yaml new file mode 100644 index 0000000000..62d035083d --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_no_content_response.yaml @@ -0,0 +1,50 @@ +interactions: +- request: + body: '{"data":{"attributes":{"metric_name_matches":["dd.TestReordertagindexingrulesreturnsNoContentresponse1780591177.*"],"name":"TestReordertagindexingrulesreturnsNoContentresponse1780591177","tags":["env","service"]},"type":"tag_indexing_rules"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules + response: + body: + string: '{"data":{"id":"13b0b297-7c54-4744-9333-b1aa7a2fd200","type":"tag_indexing_rules","attributes":{"created_at":"2026-06-04T16:39:37.674807Z","created_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","exclude_tags_mode":false,"metric_name_matches":["dd.TestReordertagindexingrulesreturnsNoContentresponse1780591177.*"],"modified_at":"2026-06-04T16:39:37.674807Z","modified_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"TestReordertagindexingrulesreturnsNoContentresponse1780591177","options":{"version":1,"data":{"override_previous_rules":false,"manage_preexisting_metrics":true}},"rule_order":1,"tags":["env","service"]}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 201 + message: Created +- request: + body: '{"data":{"attributes":{"rule_ids":["13b0b297-7c54-4744-9333-b1aa7a2fd200"]},"type":"tag_indexing_rules"}}' + headers: + accept: + - '*/*' + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/order + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/13b0b297-7c54-4744-9333-b1aa7a2fd200 + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_not_found_response.frozen new file mode 100644 index 0000000000..4b0e8fd280 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_not_found_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:37.829Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_not_found_response.yaml new file mode 100644 index 0000000000..7e9920c561 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_reorder_tag_indexing_rules_returns_not_found_response.yaml @@ -0,0 +1,20 @@ +interactions: +- request: + body: '{"data":{"attributes":{"rule_ids":["00000000-0000-0000-0000-000000000001","00000000-0000-0000-0000-000000000002"]},"type":"tag_indexing_rules"}}' + headers: + accept: + - '*/*' + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/order + response: + body: + string: '{"errors":["One or more tag indexing rule IDs not found"]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 404 + message: Not Found +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_conflict_response.frozen b/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_conflict_response.frozen new file mode 100644 index 0000000000..86182034b5 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_conflict_response.frozen @@ -0,0 +1 @@ +2026-06-12T09:57:22.725Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_conflict_response.yaml b/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_conflict_response.yaml new file mode 100644 index 0000000000..e6a5f2ce22 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_conflict_response.yaml @@ -0,0 +1,74 @@ +interactions: +- request: + body: '{"cases":[{"condition":"a > 0","name":"","notifications":[],"status":"info"}],"filters":[],"isEnabled":true,"message":"Test + rule","name":"Test-Restore_a_rule_to_a_historical_version_returns_Conflict_response-1781258242","options":{"evaluationWindow":900,"keepAlive":3600,"maxSignalDuration":86400},"queries":[{"aggregation":"count","distinctFields":[],"groupByFields":[],"metrics":[],"query":"@test:true"}],"tags":[],"type":"log_detection"}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/security_monitoring/rules + response: + body: + string: '{"name":"Test-Restore_a_rule_to_a_historical_version_returns_Conflict_response-1781258242","createdAt":1781258244898,"isDefault":false,"isPartner":false,"isEnabled":true,"isBeta":false,"isDeleted":false,"isDeprecated":false,"queries":[{"query":"@test:true","groupByFields":[],"hasOptionalGroupByFields":false,"distinctFields":[],"aggregation":"count","name":"","dataSource":"logs"}],"options":{"evaluationWindow":900,"detectionMethod":"threshold","maxSignalDuration":86400,"keepAlive":3600},"cases":[{"name":"","status":"info","notifications":[],"condition":"a + \u003e 0"}],"message":"Test rule","tags":[],"hasExtendedTitle":false,"type":"log_detection","filters":[],"version":1,"id":"xrz-jfq-dfm","blocking":false,"metadata":{"entities":null,"sources":null},"creationAuthorId":2320499,"creator":{"handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"CI + Account"},"updater":{"handle":"","name":""}}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +- request: + body: '{"cases":[{"condition":"a > 0","name":"","notifications":[],"status":"info"}],"filters":[],"isEnabled":true,"message":"Test + rule updated","name":"Test-Restore_a_rule_to_a_historical_version_returns_Conflict_response-1781258242-updated","options":{"evaluationWindow":900,"keepAlive":3600,"maxSignalDuration":86400},"queries":[{"aggregation":"count","distinctFields":[],"groupByFields":[],"metrics":[],"query":"@test:true"}],"tags":[]}' + headers: + accept: + - application/json + content-type: + - application/json + method: PUT + uri: https://api.datadoghq.com/api/v2/security_monitoring/rules/xrz-jfq-dfm + response: + body: + string: '{"name":"Test-Restore_a_rule_to_a_historical_version_returns_Conflict_response-1781258242-updated","isEnabled":true,"queries":[{"query":"@test:true","groupByFields":[],"hasOptionalGroupByFields":false,"distinctFields":[],"aggregation":"count","name":"","dataSource":"logs"}],"options":{"evaluationWindow":900,"detectionMethod":"threshold","maxSignalDuration":86400,"keepAlive":3600},"cases":[{"name":"","status":"info","notifications":[],"condition":"a + \u003e 0"}],"message":"Test rule updated","tags":[],"hasExtendedTitle":false,"type":"log_detection","filters":[],"id":"xrz-jfq-dfm","version":2,"createdAt":1781258244898,"creationAuthorId":2320499,"updateAuthorId":2320499,"updatedAt":1781258245104,"isDefault":false,"blocking":false,"isBeta":false,"isDeleted":false,"isDeprecated":false,"metadata":{"entities":null,"sources":null}}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/security_monitoring/rules/xrz-jfq-dfm/restore/2 + response: + body: + string: '{"error":{"code":"AlreadyExists","message":"Cannot restore: target + version is the current version."}}' + headers: + content-type: + - application/json + status: + code: 409 + message: Conflict +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/security_monitoring/rules/xrz-jfq-dfm + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_not_found_response.frozen new file mode 100644 index 0000000000..d762af22af --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_not_found_response.frozen @@ -0,0 +1 @@ +2026-06-12T08:39:41.348Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_not_found_response.yaml new file mode 100644 index 0000000000..6e05771802 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_not_found_response.yaml @@ -0,0 +1,54 @@ +interactions: +- request: + body: '{"cases":[{"condition":"a > 0","name":"","notifications":[],"status":"info"}],"filters":[],"isEnabled":true,"message":"Test + rule","name":"Test-Restore_a_rule_to_a_historical_version_returns_Not_Found_response-1781253581","options":{"evaluationWindow":900,"keepAlive":3600,"maxSignalDuration":86400},"queries":[{"aggregation":"count","distinctFields":[],"groupByFields":[],"metrics":[],"query":"@test:true"}],"tags":[],"type":"log_detection"}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/security_monitoring/rules + response: + body: + string: '{"name":"Test-Restore_a_rule_to_a_historical_version_returns_Not_Found_response-1781253581","createdAt":1781253581645,"isDefault":false,"isPartner":false,"isEnabled":true,"isBeta":false,"isDeleted":false,"isDeprecated":false,"queries":[{"query":"@test:true","groupByFields":[],"hasOptionalGroupByFields":false,"distinctFields":[],"aggregation":"count","name":"","dataSource":"logs"}],"options":{"evaluationWindow":900,"detectionMethod":"threshold","maxSignalDuration":86400,"keepAlive":3600},"cases":[{"name":"","status":"info","notifications":[],"condition":"a + \u003e 0"}],"message":"Test rule","tags":[],"hasExtendedTitle":false,"type":"log_detection","filters":[],"version":1,"id":"uig-ynq-xlh","blocking":false,"metadata":{"entities":null,"sources":null},"creationAuthorId":2320499,"creator":{"handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"CI + Account"},"updater":{"handle":"","name":""}}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/security_monitoring/rules/uig-ynq-xlh/restore/9999 + response: + body: + string: '{"error":{"code":"NotFound","message":"Threat detection rule not found: + uig-ynq-xlh, version=9999"}}' + headers: + content-type: + - application/json + status: + code: 404 + message: Not Found +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/security_monitoring/rules/uig-ynq-xlh + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_ok_response.frozen new file mode 100644 index 0000000000..47bbb311c9 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-12T09:57:25.549Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_ok_response.yaml new file mode 100644 index 0000000000..1f3f33a42c --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_restore_a_rule_to_a_historical_version_returns_ok_response.yaml @@ -0,0 +1,76 @@ +interactions: +- request: + body: '{"cases":[{"condition":"a > 0","name":"","notifications":[],"status":"info"}],"filters":[],"isEnabled":true,"message":"Test + rule","name":"Test-Restore_a_rule_to_a_historical_version_returns_OK_response-1781258245","options":{"evaluationWindow":900,"keepAlive":3600,"maxSignalDuration":86400},"queries":[{"aggregation":"count","distinctFields":[],"groupByFields":[],"metrics":[],"query":"@test:true"}],"tags":[],"type":"log_detection"}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/security_monitoring/rules + response: + body: + string: '{"name":"Test-Restore_a_rule_to_a_historical_version_returns_OK_response-1781258245","createdAt":1781258245670,"isDefault":false,"isPartner":false,"isEnabled":true,"isBeta":false,"isDeleted":false,"isDeprecated":false,"queries":[{"query":"@test:true","groupByFields":[],"hasOptionalGroupByFields":false,"distinctFields":[],"aggregation":"count","name":"","dataSource":"logs"}],"options":{"evaluationWindow":900,"detectionMethod":"threshold","maxSignalDuration":86400,"keepAlive":3600},"cases":[{"name":"","status":"info","notifications":[],"condition":"a + \u003e 0"}],"message":"Test rule","tags":[],"hasExtendedTitle":false,"type":"log_detection","filters":[],"version":1,"id":"7sm-pyl-xzv","blocking":false,"metadata":{"entities":null,"sources":null},"creationAuthorId":2320499,"creator":{"handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"CI + Account"},"updater":{"handle":"","name":""}}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +- request: + body: '{"cases":[{"condition":"a > 0","name":"","notifications":[],"status":"info"}],"filters":[],"isEnabled":true,"message":"Test + rule updated","name":"Test-Restore_a_rule_to_a_historical_version_returns_OK_response-1781258245-updated","options":{"evaluationWindow":900,"keepAlive":3600,"maxSignalDuration":86400},"queries":[{"aggregation":"count","distinctFields":[],"groupByFields":[],"metrics":[],"query":"@test:true"}],"tags":[]}' + headers: + accept: + - application/json + content-type: + - application/json + method: PUT + uri: https://api.datadoghq.com/api/v2/security_monitoring/rules/7sm-pyl-xzv + response: + body: + string: '{"name":"Test-Restore_a_rule_to_a_historical_version_returns_OK_response-1781258245-updated","isEnabled":true,"queries":[{"query":"@test:true","groupByFields":[],"hasOptionalGroupByFields":false,"distinctFields":[],"aggregation":"count","name":"","dataSource":"logs"}],"options":{"evaluationWindow":900,"detectionMethod":"threshold","maxSignalDuration":86400,"keepAlive":3600},"cases":[{"name":"","status":"info","notifications":[],"condition":"a + \u003e 0"}],"message":"Test rule updated","tags":[],"hasExtendedTitle":false,"type":"log_detection","filters":[],"id":"7sm-pyl-xzv","version":2,"createdAt":1781258245670,"creationAuthorId":2320499,"updateAuthorId":2320499,"updatedAt":1781258245844,"isDefault":false,"blocking":false,"isBeta":false,"isDeleted":false,"isDeprecated":false,"metadata":{"entities":null,"sources":null}}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/security_monitoring/rules/7sm-pyl-xzv/restore/1 + response: + body: + string: '{"name":"Test-Restore_a_rule_to_a_historical_version_returns_OK_response-1781258245","createdAt":1781258245670,"isDefault":false,"isPartner":false,"isEnabled":true,"isBeta":false,"isDeleted":false,"isDeprecated":false,"queries":[{"query":"@test:true","groupByFields":[],"hasOptionalGroupByFields":false,"distinctFields":[],"aggregation":"count","name":"","dataSource":"logs"}],"options":{"evaluationWindow":900,"detectionMethod":"threshold","maxSignalDuration":86400,"keepAlive":3600},"cases":[{"name":"","status":"info","notifications":[],"condition":"a + \u003e 0"}],"message":"Test rule","tags":[],"hasExtendedTitle":false,"type":"log_detection","filters":[],"version":3,"id":"7sm-pyl-xzv","updatedAt":1781258246099,"blocking":false,"metadata":{"entities":null,"sources":null},"creationAuthorId":2320499,"updateAuthorId":2320499,"creator":{"handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"CI + Account"},"updater":{"handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"CI + Account"}}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/security_monitoring/rules/7sm-pyl-xzv + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_test_a_notification_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_test_a_notification_rule_returns_ok_response.frozen new file mode 100644 index 0000000000..dbdcb687da --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_test_a_notification_rule_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-10T09:27:59.116Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_test_a_notification_rule_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_test_a_notification_rule_returns_ok_response.yaml new file mode 100644 index 0000000000..55740cef69 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_test_a_notification_rule_returns_ok_response.yaml @@ -0,0 +1,20 @@ +interactions: +- request: + body: '{"data":{"attributes":{"enabled":true,"name":"Rule 1","selectors":{"query":"env:prod","rule_types":["log_detection"],"severities":["critical"],"trigger_source":"security_signals"},"targets":["@john.doe@email.com"]},"type":"notification_rules"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/security_monitoring/configuration/notification_rules/send_notification_preview + response: + body: + string: '{"data":{"id":"rka-loa-zwu","attributes":{"preview_results":[{"rule_type":"log_detection","notification_status":"DEFAULT"}]},"type":"notification_preview_response"}}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_form_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_form_returns_not_found_response.frozen new file mode 100644 index 0000000000..6a4eb039c7 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_form_returns_not_found_response.frozen @@ -0,0 +1 @@ +2026-06-10T18:50:02.747Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_form_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_form_returns_not_found_response.yaml new file mode 100644 index 0000000000..e235e4c831 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_form_returns_not_found_response.yaml @@ -0,0 +1,22 @@ +interactions: +- request: + body: '{"data":{"attributes":{"form_update":{"datastore_config":{"datastore_id":"5108ea24-dd83-4696-9caa-f069f73d0fad","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"An + updated description.","name":"Updated Form Name"}},"id":"22f6006a-2302-4926-9396-d2dfcf7b0b34","type":"forms"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: PATCH + uri: https://api.datadoghq.com/api/v2/forms/00000000-0000-0000-0000-000000000001 + response: + body: + string: '{"errors":[{"status":"404","id":"c5564241-69a8-4a9e-af78-20c7913fbf5b","title":"form + not found"}]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 404 + message: Not Found +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_form_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_form_returns_ok_response.frozen new file mode 100644 index 0000000000..131934de13 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_form_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-10T18:50:03.118Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_form_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_form_returns_ok_response.yaml new file mode 100644 index 0000000000..e29d495549 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_form_returns_ok_response.yaml @@ -0,0 +1,59 @@ +interactions: +- request: + body: '{"data":{"attributes":{"anonymous":false,"data_definition":{},"description":"A + simple test form.","idp_survey":false,"name":"Test-Update_a_form_returns_OK_response-1781117403","single_response":false,"ui_definition":{}},"type":"forms"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms + response: + body: + string: '{"data":{"id":"a365c4e1-5c1f-476f-9330-091fe52a6483","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-10T18:50:03.541399Z","datastore_config":{"datastore_id":"ec62b00b-6683-4943-8bd0-28d56f5dca64","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + simple test form.","idp_survey":false,"modified_at":"2026-06-10T18:50:03.541399Z","name":"Test-Update_a_form_returns_OK_response-1781117403","org_id":321813,"self_service":false,"single_response":false,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":{"id":"376768","state":"draft","version":1,"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d","definition_signature":"{\"signature\":\"{\\\"version\\\":2,\\\"algorithm\\\":\\\"ecdsa-p384\\\",\\\"pubkey\\\":\\\"XOOWpRG1rFvaLHaG9qLf+GG78llET0BKnZtokyAtLfg=\\\",\\\"timestamp\\\":1781117403,\\\"proof\\\":\\\"MGUCMFvO8GziqWVPfIg06kFsX3mHcT5e/Ub8cJ/9H1oJXqCp56oL/IRLCI351BB2xHXTFAIxALOhp9M+jw87Xn+Qvl//9uiS011jgg6a8e0UftJ1NY+G/ycp/aLzZrFKaBCt6RG8sA==\\\"}\",\"version\":1}","data_definition":{},"ui_definition":{},"created_at":"2026-06-10T18:50:03.541399Z","modified_at":"2026-06-10T18:50:03.541399Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: '{"data":{"attributes":{"form_update":{"datastore_config":{"datastore_id":"5108ea24-dd83-4696-9caa-f069f73d0fad","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"An + updated description.","name":"Updated Form Name"}},"id":"22f6006a-2302-4926-9396-d2dfcf7b0b34","type":"forms"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: PATCH + uri: https://api.datadoghq.com/api/v2/forms/a365c4e1-5c1f-476f-9330-091fe52a6483 + response: + body: + string: '{"data":{"id":"a365c4e1-5c1f-476f-9330-091fe52a6483","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-10T18:50:03.541399Z","datastore_config":{"datastore_id":"5108ea24-dd83-4696-9caa-f069f73d0fad","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"An + updated description.","idp_survey":false,"modified_at":"2026-06-10T18:50:03.926234Z","name":"Updated + Form Name","org_id":321813,"self_service":false,"single_response":false,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":{"id":"376768","state":"draft","version":1,"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d","definition_signature":"{\"signature\":\"{\\\"version\\\":2,\\\"algorithm\\\":\\\"ecdsa-p384\\\",\\\"pubkey\\\":\\\"XOOWpRG1rFvaLHaG9qLf+GG78llET0BKnZtokyAtLfg=\\\",\\\"timestamp\\\":1781117403,\\\"proof\\\":\\\"MGUCMFvO8GziqWVPfIg06kFsX3mHcT5e/Ub8cJ/9H1oJXqCp56oL/IRLCI351BB2xHXTFAIxALOhp9M+jw87Xn+Qvl//9uiS011jgg6a8e0UftJ1NY+G/ycp/aLzZrFKaBCt6RG8sA==\\\"}\",\"version\":1}","data_definition":{},"ui_definition":{},"created_at":"2026-06-10T18:50:03.541399Z","modified_at":"2026-06-10T18:50:03.541399Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v2/forms/a365c4e1-5c1f-476f-9330-091fe52a6483 + response: + body: + string: '{"data":{"id":"a365c4e1-5c1f-476f-9330-091fe52a6483","type":"forms"}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_bad_request_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_bad_request_response.frozen new file mode 100644 index 0000000000..6928945c77 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_bad_request_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:37.910Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_bad_request_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_bad_request_response.yaml new file mode 100644 index 0000000000..01386dc7da --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_bad_request_response.yaml @@ -0,0 +1,20 @@ +interactions: +- request: + body: '{"data":{"attributes":{"ignored_metric_name_matches":[],"metric_name_matches":["dd.test.*"],"name":"my-indexing-rule","options":{"data":{"dynamic_tags":{"queried_tags_window_seconds":3600,"related_asset_tags":false},"manage_preexisting_metrics":true,"metric_match":{"queried_window_seconds":3600},"override_previous_rules":false},"version":1},"rule_order":2,"tags":["env","service"]},"type":"tag_indexing_rules"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: PUT + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/not-a-valid-uuid + response: + body: + string: '{"errors":["Invalid tag indexing rule ID format"]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 400 + message: Bad Request +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_not_found_response.frozen new file mode 100644 index 0000000000..677ad04641 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_not_found_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:37.964Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_not_found_response.yaml new file mode 100644 index 0000000000..e546e27716 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_not_found_response.yaml @@ -0,0 +1,20 @@ +interactions: +- request: + body: '{"data":{"attributes":{"ignored_metric_name_matches":[],"metric_name_matches":["dd.test.*"],"name":"my-indexing-rule","options":{"data":{"dynamic_tags":{"queried_tags_window_seconds":3600,"related_asset_tags":false},"manage_preexisting_metrics":true,"metric_match":{"queried_window_seconds":3600},"override_previous_rules":false},"version":1},"rule_order":2,"tags":["env","service"]},"type":"tag_indexing_rules"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: PUT + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/00000000-0000-0000-0000-000000000000 + response: + body: + string: '{"errors":["Tag indexing rule not found"]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 404 + message: Not Found +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_ok_response.frozen new file mode 100644 index 0000000000..c71811ecaf --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-04T16:39:38.031Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_ok_response.yaml new file mode 100644 index 0000000000..d8a784f28a --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_update_a_tag_indexing_rule_returns_ok_response.yaml @@ -0,0 +1,52 @@ +interactions: +- request: + body: '{"data":{"attributes":{"metric_name_matches":["dd.TestUpdateatagindexingrulereturnsOKresponse1780591178.*"],"name":"TestUpdateatagindexingrulereturnsOKresponse1780591178","tags":["env","service"]},"type":"tag_indexing_rules"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules + response: + body: + string: '{"data":{"id":"c9f5704f-f5b9-4afe-9dec-69edfce00c0a","type":"tag_indexing_rules","attributes":{"created_at":"2026-06-04T16:39:38.068057Z","created_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","exclude_tags_mode":false,"metric_name_matches":["dd.TestUpdateatagindexingrulereturnsOKresponse1780591178.*"],"modified_at":"2026-06-04T16:39:38.068057Z","modified_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"TestUpdateatagindexingrulereturnsOKresponse1780591178","options":{"version":1,"data":{"override_previous_rules":false,"manage_preexisting_metrics":true}},"rule_order":1,"tags":["env","service"]}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 201 + message: Created +- request: + body: '{"data":{"attributes":{"ignored_metric_name_matches":[],"metric_name_matches":["dd.test.*"],"name":"my-indexing-rule","options":{"data":{"dynamic_tags":{"queried_tags_window_seconds":3600,"related_asset_tags":false},"manage_preexisting_metrics":true,"metric_match":{"queried_window_seconds":3600},"override_previous_rules":false},"version":1},"rule_order":2,"tags":["env","service"]},"type":"tag_indexing_rules"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: PUT + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/c9f5704f-f5b9-4afe-9dec-69edfce00c0a + response: + body: + string: '{"data":{"id":"c9f5704f-f5b9-4afe-9dec-69edfce00c0a","type":"tag_indexing_rules","attributes":{"created_at":"2026-06-04T16:39:38.068057Z","created_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","exclude_tags_mode":false,"ignored_metric_name_matches":[],"metric_name_matches":["dd.test.*"],"modified_at":"2026-06-04T16:39:38.137079Z","modified_by_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"my-indexing-rule","options":{"version":1,"data":{"override_previous_rules":false,"manage_preexisting_metrics":true,"dynamic_tags":{"queried_tags_window_seconds":3600},"metric_match":{"queried_window_seconds":3600}}},"rule_order":2,"tags":["env","service"]}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/metrics/tag-indexing-rules/c9f5704f-f5b9-4afe-9dec-69edfce00c0a + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_update_an_existing_incident_service_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_update_an_existing_incident_service_returns_ok_response.frozen deleted file mode 100644 index 45de6e2ecb..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_update_an_existing_incident_service_returns_ok_response.frozen +++ /dev/null @@ -1 +0,0 @@ -2022-05-12T09:51:35.154Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_update_an_existing_incident_service_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_update_an_existing_incident_service_returns_ok_response.yaml deleted file mode 100644 index 67df9170f7..0000000000 --- a/tests/v2/cassettes/test_scenarios/test_update_an_existing_incident_service_returns_ok_response.yaml +++ /dev/null @@ -1,52 +0,0 @@ -interactions: -- request: - body: '{"data":{"attributes":{"name":"Test-Update_an_existing_incident_service_returns_OK_response-1652349095"},"type":"services"}}' - headers: - accept: - - application/json - content-type: - - application/json - method: POST - uri: https://api.datadoghq.com/api/v2/services - response: - body: - string: '{"included":[{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0","attributes":{"name":null,"handle":"frog@datadoghq.com","created_at":"2019-10-02T08:15:39.795051+00:00","modified_at":"2020-06-15T12:33:12.884459+00:00","email":"frog@datadoghq.com","icon":"https://secure.gravatar.com/avatar/28a16dfe36e73b60c1d55872cb0f1172?s=48&d=retro","title":null,"verified":true,"service_account":false,"disabled":false,"allowed_login_methods":[],"status":"Active"},"relationships":{"org":{"data":{"type":"orgs","id":"4dee724d-00cc-11ea-a77b-570c9d03c6c5"}}}}],"data":{"type":"services","id":"f9f4467a-1e31-5513-83b8-ca6c4287a9b3","attributes":{"name":"Test-Update_an_existing_incident_service_returns_OK_response-1652349095","created":"2022-05-12T09:51:35.599056+00:00","modified":"2022-05-12T09:51:35.599056+00:00"},"relationships":{"last_modified_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}},"created_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}}}}}' - headers: - content-type: - - application/json - status: - code: 201 - message: Created -- request: - body: '{"data":{"attributes":{"name":"Test-Update_an_existing_incident_service_returns_OK_response-1652349095-updated"},"type":"services"}}' - headers: - accept: - - application/json - content-type: - - application/json - method: PATCH - uri: https://api.datadoghq.com/api/v2/services/f9f4467a-1e31-5513-83b8-ca6c4287a9b3 - response: - body: - string: '{"included":[{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0","attributes":{"name":null,"handle":"frog@datadoghq.com","created_at":"2019-10-02T08:15:39.795051+00:00","modified_at":"2020-06-15T12:33:12.884459+00:00","email":"frog@datadoghq.com","icon":"https://secure.gravatar.com/avatar/28a16dfe36e73b60c1d55872cb0f1172?s=48&d=retro","title":null,"verified":true,"service_account":false,"disabled":false,"allowed_login_methods":[],"status":"Active"},"relationships":{"org":{"data":{"type":"orgs","id":"4dee724d-00cc-11ea-a77b-570c9d03c6c5"}}}}],"data":{"type":"services","id":"f9f4467a-1e31-5513-83b8-ca6c4287a9b3","attributes":{"name":"Test-Update_an_existing_incident_service_returns_OK_response-1652349095-updated","created":"2022-05-12T09:51:35.599056+00:00","modified":"2022-05-12T09:51:36.165537+00:00"},"relationships":{"last_modified_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}},"created_by":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}}}}}' - headers: - content-type: - - application/json - status: - code: 200 - message: OK -- request: - body: null - headers: - accept: - - '*/*' - method: DELETE - uri: https://api.datadoghq.com/api/v2/services/f9f4467a-1e31-5513-83b8-ca6c4287a9b3 - response: - body: - string: '' - headers: {} - status: - code: 204 - message: No Content -version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_upsert_and_publish_a_form_version_returns_not_found_response.frozen b/tests/v2/cassettes/test_scenarios/test_upsert_and_publish_a_form_version_returns_not_found_response.frozen new file mode 100644 index 0000000000..a7e8da40bc --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_upsert_and_publish_a_form_version_returns_not_found_response.frozen @@ -0,0 +1 @@ +2026-06-11T15:57:52.090Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_upsert_and_publish_a_form_version_returns_not_found_response.yaml b/tests/v2/cassettes/test_scenarios/test_upsert_and_publish_a_form_version_returns_not_found_response.yaml new file mode 100644 index 0000000000..d3297880ae --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_upsert_and_publish_a_form_version_returns_not_found_response.yaml @@ -0,0 +1,23 @@ +interactions: +- request: + body: '{"data":{"attributes":{"data_definition":{"description":"Welcome to the + Engineering Experience Survey.","required":[],"title":"Developer Experience + Survey","type":"object"},"ui_definition":{"ui:order":[],"ui:theme":{"primaryColor":"gray"}},"upsert_params":{"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d"}},"type":"form_versions"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms/00000000-0000-0000-0000-000000000001/versions/upsert_and_publish + response: + body: + string: '{"errors":[{"status":"404","id":"08399bf1-1d71-4160-bc73-e858e01fde0f","title":"form + not found"}]}' + headers: + content-type: + - application/vnd.api+json + status: + code: 404 + message: Not Found +version: 1 diff --git a/tests/v2/cassettes/test_scenarios/test_upsert_and_publish_a_form_version_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_upsert_and_publish_a_form_version_returns_ok_response.frozen new file mode 100644 index 0000000000..2bab83cd01 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_upsert_and_publish_a_form_version_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-06-11T15:57:52.936Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_upsert_and_publish_a_form_version_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_upsert_and_publish_a_form_version_returns_ok_response.yaml new file mode 100644 index 0000000000..d5ef64a8d9 --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_upsert_and_publish_a_form_version_returns_ok_response.yaml @@ -0,0 +1,61 @@ +interactions: +- request: + body: '{"data":{"attributes":{"anonymous":false,"data_definition":{},"description":"A + simple test form.","idp_survey":false,"name":"Test-Upsert_and_publish_a_form_version_returns_OK_response-1781193472","single_response":false,"ui_definition":{}},"type":"forms"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms + response: + body: + string: '{"data":{"id":"25824ea9-3c52-4f43-8539-a2d4cd7f9a3b","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-11T15:57:53.185492Z","datastore_config":{"datastore_id":"37899277-a526-4668-966b-e26a258347a4","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + simple test form.","idp_survey":false,"modified_at":"2026-06-11T15:57:53.185492Z","name":"Test-Upsert_and_publish_a_form_version_returns_OK_response-1781193472","org_id":321813,"self_service":false,"single_response":false,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":{"id":"380435","state":"draft","version":1,"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d","definition_signature":"{\"signature\":\"{\\\"version\\\":2,\\\"algorithm\\\":\\\"ecdsa-p384\\\",\\\"pubkey\\\":\\\"S2KAuCoip8JbyZNOT2gYbpUouidttEGvYWyvqeoMQjE=\\\",\\\"timestamp\\\":1781193473,\\\"proof\\\":\\\"MGUCMQD5kghzucjG+znH/JVQhgs9+82KuT/veBwvMPxHafCX3toxbVfSadP16IDWljuo2SYCMFjmS1y3rcGEBUCajP/BE82sUdc9L8jxA57Jz6lvCsuDKC7BfFYVq2FjSrj19aS9Pg==\\\"}\",\"version\":1}","data_definition":{},"ui_definition":{},"created_at":"2026-06-11T15:57:53.185492Z","modified_at":"2026-06-11T15:57:53.185492Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: '{"data":{"attributes":{"data_definition":{"description":"Welcome to the + Engineering Experience Survey.","required":[],"title":"Developer Experience + Survey","type":"object"},"ui_definition":{"ui:order":[],"ui:theme":{"primaryColor":"gray"}},"upsert_params":{"etag":"b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d"}},"type":"form_versions"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/forms/25824ea9-3c52-4f43-8539-a2d4cd7f9a3b/versions/upsert_and_publish + response: + body: + string: '{"data":{"id":"25824ea9-3c52-4f43-8539-a2d4cd7f9a3b","type":"forms","attributes":{"active":true,"anonymous":false,"created_at":"2026-06-11T15:57:53.185492Z","datastore_config":{"datastore_id":"37899277-a526-4668-966b-e26a258347a4","primary_column_name":"id","primary_key_generation_strategy":"none"},"description":"A + simple test form.","idp_survey":false,"modified_at":"2026-06-11T15:57:53.185492Z","name":"Test-Upsert_and_publish_a_form_version_returns_OK_response-1781193472","org_id":321813,"publication":{"id":"383651","org_id":321813,"form_id":"25824ea9-3c52-4f43-8539-a2d4cd7f9a3b","publish_seq":1,"form_version":1,"created_at":"2026-06-11T15:57:53.39063Z","modified_at":"2026-06-11T15:57:53.39063Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"},"self_service":false,"single_response":false,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":{"id":"380435","state":"frozen","version":1,"etag":"30586851d6ab0b26080d3f34629e5e2cfb9f2f57457eec927b72eafefae81e48","definition_signature":"{\"signature\":\"{\\\"version\\\":2,\\\"algorithm\\\":\\\"ecdsa-p384\\\",\\\"pubkey\\\":\\\"XOOWpRG1rFvaLHaG9qLf+GG78llET0BKnZtokyAtLfg=\\\",\\\"timestamp\\\":1781193473,\\\"proof\\\":\\\"MGUCMQCtGifKZr+EjEtnFk2ZKxy0DThB02mQ5wMJ3vB5L7zgTpHR+6k38mxLM1CqP2YFeQgCMHL7aBH2pJzR7yrv2YvaWNnv2puOld4laoRAWzCcuHgxHVWnp7wEcrvebyDbNej+2g==\\\"}\",\"version\":1}","data_definition":{"description":"Welcome + to the Engineering Experience Survey.","required":[],"title":"Developer Experience + Survey","type":"object"},"ui_definition":{"ui:order":[],"ui:theme":{"primaryColor":"gray"}},"created_at":"2026-06-11T15:57:53.185492Z","modified_at":"2026-06-11T15:57:53.39063Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v2/forms/25824ea9-3c52-4f43-8539-a2d4cd7f9a3b + response: + body: + string: '{"data":{"id":"25824ea9-3c52-4f43-8539-a2d4cd7f9a3b","type":"forms"}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v2/features/aws_integration.feature b/tests/v2/features/aws_integration.feature index 5989319f4e..dac51bb744 100644 --- a/tests/v2/features/aws_integration.feature +++ b/tests/v2/features/aws_integration.feature @@ -292,3 +292,19 @@ Feature: AWS Integration And body with value {"data": {"attributes": {"account_tags": ["key:value"], "auth_config": {"role_name": "DatadogIntegrationRole"}, "aws_account_id": "123456789012", "aws_partition": "aws", "logs_config": {"lambda_forwarder": {"lambdas": ["arn:aws:lambda:us-east-1:123456789012:function:DatadogLambdaLogForwarder"], "log_source_config": {"tag_filters": [{"source": "s3", "tags": ["test:test"]}]}, "sources": ["s3"]}}, "metrics_config": {"automute_enabled": true, "collect_cloudwatch_alarms": true, "collect_custom_metrics": true, "enabled": true, "tag_filters": [{"namespace": "AWS/EC2", "tags": ["key:value"]}]}, "resources_config": {"cloud_security_posture_management_collection": false, "extended_collection": false}, "traces_config": {}}, "type": "account"}} When the request is sent Then the response status is 404 Not Found + + @generated @skip @team:DataDog/aws-integrations + Scenario: Validate AWS CCM config returns "AWS CCM Config validation result" response + Given operation "ValidateAWSCCMConfig" enabled + And new "ValidateAWSCCMConfig" request + And body with value {"data": {"attributes": {"account_id": "123456789012", "bucket_name": "billing", "bucket_region": "us-east-1", "report_name": "cost-and-usage-report", "report_prefix": "reports"}, "type": "ccm_config_validation"}} + When the request is sent + Then the response status is 200 AWS CCM Config validation result + + @generated @skip @team:DataDog/aws-integrations + Scenario: Validate AWS CCM config returns "Bad Request" response + Given operation "ValidateAWSCCMConfig" enabled + And new "ValidateAWSCCMConfig" request + And body with value {"data": {"attributes": {"account_id": "123456789012", "bucket_name": "billing", "bucket_region": "us-east-1", "report_name": "cost-and-usage-report", "report_prefix": "reports"}, "type": "ccm_config_validation"}} + When the request is sent + Then the response status is 400 Bad Request diff --git a/tests/v2/features/csm_ownership.feature b/tests/v2/features/csm_ownership.feature new file mode 100644 index 0000000000..58498ca155 --- /dev/null +++ b/tests/v2/features/csm_ownership.feature @@ -0,0 +1,165 @@ +@endpoint(csm-ownership) @endpoint(csm-ownership-v2) +Feature: CSM Ownership + Datadog Cloud Security Management (CSM) Ownership infers the most likely + owner for a cloud resource by combining ownership signals from across the + platform, and lets you review the inference, inspect its evidence, and + submit feedback to persist, override, or correct the inferred owner. For + more information, see [Cloud Security Management](https://docs.datadoghq.c + om/security/cloud_security_management). + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "CSMOwnership" API + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Get an ownership inference by owner type returns "Bad Request" response + Given operation "GetOwnershipInference" enabled + And new "GetOwnershipInference" request + And request contains "resource_id" parameter from "REPLACE.ME" + And request contains "owner_type" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Get an ownership inference by owner type returns "Not Found" response + Given operation "GetOwnershipInference" enabled + And new "GetOwnershipInference" request + And request contains "resource_id" parameter from "REPLACE.ME" + And request contains "owner_type" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Get an ownership inference by owner type returns "OK" response + Given operation "GetOwnershipInference" enabled + And new "GetOwnershipInference" request + And request contains "resource_id" parameter from "REPLACE.ME" + And request contains "owner_type" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Get the evidence for an ownership inference returns "Bad Request" response + Given operation "GetOwnershipEvidence" enabled + And new "GetOwnershipEvidence" request + And request contains "resource_id" parameter from "REPLACE.ME" + And request contains "owner_type" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Get the evidence for an ownership inference returns "Not Found" response + Given operation "GetOwnershipEvidence" enabled + And new "GetOwnershipEvidence" request + And request contains "resource_id" parameter from "REPLACE.ME" + And request contains "owner_type" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Get the evidence for an ownership inference returns "OK" response + Given operation "GetOwnershipEvidence" enabled + And new "GetOwnershipEvidence" request + And request contains "resource_id" parameter from "REPLACE.ME" + And request contains "owner_type" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: List ownership history by owner type returns "Bad Request" response + Given operation "ListOwnershipHistoryByOwnerType" enabled + And new "ListOwnershipHistoryByOwnerType" request + And request contains "resource_id" parameter from "REPLACE.ME" + And request contains "owner_type" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: List ownership history by owner type returns "OK" response + Given operation "ListOwnershipHistoryByOwnerType" enabled + And new "ListOwnershipHistoryByOwnerType" request + And request contains "resource_id" parameter from "REPLACE.ME" + And request contains "owner_type" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: List ownership inference history for a resource returns "Bad Request" response + Given operation "ListOwnershipHistory" enabled + And new "ListOwnershipHistory" request + And request contains "resource_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: List ownership inference history for a resource returns "OK" response + Given operation "ListOwnershipHistory" enabled + And new "ListOwnershipHistory" request + And request contains "resource_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: List ownership inferences for a resource returns "Bad Request" response + Given operation "ListOwnershipInferences" enabled + And new "ListOwnershipInferences" request + And request contains "resource_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: List ownership inferences for a resource returns "Not Found" response + Given operation "ListOwnershipInferences" enabled + And new "ListOwnershipInferences" request + And request contains "resource_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: List ownership inferences for a resource returns "OK" response + Given operation "ListOwnershipInferences" enabled + And new "ListOwnershipInferences" request + And request contains "resource_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Submit feedback on an ownership inference returns "Bad Request" response + Given operation "CreateOwnershipFeedback" enabled + And new "CreateOwnershipFeedback" request + And request contains "resource_id" parameter from "REPLACE.ME" + And request contains "owner_type" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"action": "confirm", "actor_handle": "user@example.com", "actor_type": "user", "corrected_owner_handle": "team-b", "corrected_owner_type": "team", "inference_checksum": "abc123", "reason": "Confirmed by team lead."}, "type": "ownership_feedback"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Submit feedback on an ownership inference returns "Conflict" response + Given operation "CreateOwnershipFeedback" enabled + And new "CreateOwnershipFeedback" request + And request contains "resource_id" parameter from "REPLACE.ME" + And request contains "owner_type" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"action": "confirm", "actor_handle": "user@example.com", "actor_type": "user", "corrected_owner_handle": "team-b", "corrected_owner_type": "team", "inference_checksum": "abc123", "reason": "Confirmed by team lead."}, "type": "ownership_feedback"}} + When the request is sent + Then the response status is 409 Conflict + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Submit feedback on an ownership inference returns "Created" response + Given operation "CreateOwnershipFeedback" enabled + And new "CreateOwnershipFeedback" request + And request contains "resource_id" parameter from "REPLACE.ME" + And request contains "owner_type" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"action": "confirm", "actor_handle": "user@example.com", "actor_type": "user", "corrected_owner_handle": "team-b", "corrected_owner_type": "team", "inference_checksum": "abc123", "reason": "Confirmed by team lead."}, "type": "ownership_feedback"}} + When the request is sent + Then the response status is 201 Created + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Submit feedback on an ownership inference returns "Not Found" response + Given operation "CreateOwnershipFeedback" enabled + And new "CreateOwnershipFeedback" request + And request contains "resource_id" parameter from "REPLACE.ME" + And request contains "owner_type" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"action": "confirm", "actor_handle": "user@example.com", "actor_type": "user", "corrected_owner_handle": "team-b", "corrected_owner_type": "team", "inference_checksum": "abc123", "reason": "Confirmed by team lead."}, "type": "ownership_feedback"}} + When the request is sent + Then the response status is 404 Not Found diff --git a/tests/v2/features/csm_settings.feature b/tests/v2/features/csm_settings.feature new file mode 100644 index 0000000000..c28ca491f3 --- /dev/null +++ b/tests/v2/features/csm_settings.feature @@ -0,0 +1,85 @@ +@endpoint(csm-settings) @endpoint(csm-settings-v2) +Feature: CSM Settings + Datadog Cloud Security Management (CSM) Settings APIs allow you to list + and filter your cloud hosts monitored by CSM, covering both agentless and + agent-based discovery. For more information, see [Cloud Security Managemen + t](https://docs.datadoghq.com/security/cloud_security_management). + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "CSMSettings" API + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Get agentless host facet info returns "Bad Request" response + Given operation "GetCSMAgentlessHostFacetInfo" enabled + And new "GetCSMAgentlessHostFacetInfo" request + And request contains "facet" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Get agentless host facet info returns "OK" response + Given operation "GetCSMAgentlessHostFacetInfo" enabled + And new "GetCSMAgentlessHostFacetInfo" request + And request contains "facet" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Get unified host facet info returns "Bad Request" response + Given operation "GetCSMUnifiedHostFacetInfo" enabled + And new "GetCSMUnifiedHostFacetInfo" request + And request contains "facet" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: Get unified host facet info returns "OK" response + Given operation "GetCSMUnifiedHostFacetInfo" enabled + And new "GetCSMUnifiedHostFacetInfo" request + And request contains "facet" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: List agentless host facets returns "OK" response + Given operation "ListCSMAgentlessHostFacets" enabled + And new "ListCSMAgentlessHostFacets" request + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: List agentless hosts returns "Bad Request" response + Given operation "ListCSMAgentlessHosts" enabled + And new "ListCSMAgentlessHosts" request + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: List agentless hosts returns "OK" response + Given operation "ListCSMAgentlessHosts" enabled + And new "ListCSMAgentlessHosts" request + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: List unified host facets returns "OK" response + Given operation "ListCSMUnifiedHostFacets" enabled + And new "ListCSMUnifiedHostFacets" request + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: List unified hosts returns "Bad Request" response + Given operation "ListCSMUnifiedHosts" enabled + And new "ListCSMUnifiedHosts" request + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-misconfigs + Scenario: List unified hosts returns "OK" response + Given operation "ListCSMUnifiedHosts" enabled + And new "ListCSMUnifiedHosts" request + When the request is sent + Then the response status is 200 OK diff --git a/tests/v2/features/dashboard_sharing.feature b/tests/v2/features/dashboard_sharing.feature new file mode 100644 index 0000000000..45257252d3 --- /dev/null +++ b/tests/v2/features/dashboard_sharing.feature @@ -0,0 +1,22 @@ +@endpoint(dashboard-sharing) @endpoint(dashboard-sharing-v2) +Feature: Dashboard Sharing + Manage dashboard sharing configurations. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "DashboardSharing" API + And operation "ListSharedDashboardsByDashboardId" enabled + And new "ListSharedDashboardsByDashboardId" request + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: List shared dashboards for a dashboard returns "Dashboard Not Found" response + Given request contains "dashboard_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Dashboard Not Found + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: List shared dashboards for a dashboard returns "OK" response + Given request contains "dashboard_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK diff --git a/tests/v2/features/fleet_automation.feature b/tests/v2/features/fleet_automation.feature index 3cc13c4aca..3fede3c72f 100644 --- a/tests/v2/features/fleet_automation.feature +++ b/tests/v2/features/fleet_automation.feature @@ -232,27 +232,6 @@ Feature: Fleet Automation When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/fleet-automation - Scenario: List all fleet clusters returns "Bad Request" response - Given operation "ListFleetClusters" enabled - And new "ListFleetClusters" request - When the request is sent - Then the response status is 400 Bad Request - - @generated @skip @team:DataDog/fleet-automation - Scenario: List all fleet clusters returns "Not Found" response - Given operation "ListFleetClusters" enabled - And new "ListFleetClusters" request - When the request is sent - Then the response status is 404 Not Found - - @generated @skip @team:DataDog/fleet-automation - Scenario: List all fleet clusters returns "OK" response - Given operation "ListFleetClusters" enabled - And new "ListFleetClusters" request - When the request is sent - Then the response status is 200 OK - @generated @skip @team:DataDog/fleet-automation Scenario: List all fleet tracers returns "Bad Request" response Given operation "ListFleetTracers" enabled @@ -288,30 +267,6 @@ Feature: Fleet Automation When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/fleet-automation - Scenario: List instrumented pods for a cluster returns "Bad Request" response - Given operation "ListFleetInstrumentedPods" enabled - And new "ListFleetInstrumentedPods" request - And request contains "cluster_name" parameter from "REPLACE.ME" - When the request is sent - Then the response status is 400 Bad Request - - @generated @skip @team:DataDog/fleet-automation - Scenario: List instrumented pods for a cluster returns "Not Found" response - Given operation "ListFleetInstrumentedPods" enabled - And new "ListFleetInstrumentedPods" request - And request contains "cluster_name" parameter from "REPLACE.ME" - When the request is sent - Then the response status is 404 Not Found - - @generated @skip @team:DataDog/fleet-automation - Scenario: List instrumented pods for a cluster returns "OK" response - Given operation "ListFleetInstrumentedPods" enabled - And new "ListFleetInstrumentedPods" request - And request contains "cluster_name" parameter from "REPLACE.ME" - When the request is sent - Then the response status is 200 OK - @generated @skip @team:DataDog/fleet-automation Scenario: List tracers for a specific agent returns "Bad Request" response Given operation "ListFleetAgentTracers" enabled diff --git a/tests/v2/features/forms.feature b/tests/v2/features/forms.feature new file mode 100644 index 0000000000..eb380d0f84 --- /dev/null +++ b/tests/v2/features/forms.feature @@ -0,0 +1,246 @@ +@endpoint(forms) @endpoint(forms-v2) +Feature: Forms + The Datadog Forms API lets you create and manage forms within the App + Builder platform. You can configure form settings, manage versions, and + publish forms. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "Forms" API + + @generated @skip @team:DataDog/app-builder-backend + Scenario: Clone a form returns "Bad Request" response + Given operation "CloneForm" enabled + And new "CloneForm" request + And request contains "form_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "Copy of My Form"}, "type": "forms"}} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/app-builder-backend + Scenario: Clone a form returns "Not Found" response + Given operation "CloneForm" enabled + And new "CloneForm" request + And request contains "form_id" parameter with value "00000000-0000-0000-0000-000000000001" + And body with value {"data": {"attributes": {"name": "Copy of My Form"}, "type": "forms"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/app-builder-backend + Scenario: Clone a form returns "OK" response + Given operation "CloneForm" enabled + And new "CloneForm" request + And request contains "form_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "Copy of My Form"}, "type": "forms"}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/app-builder-backend + Scenario: Create a form returns "Bad Request" response + Given operation "CreateForm" enabled + And new "CreateForm" request + And body with value {"data": {"attributes": {"anonymous": false, "data_definition": {"description": "Welcome to the Engineering Experience Survey.", "required": [], "title": "Developer Experience Survey", "type": "object"}, "description": "A form to collect user feedback.", "idp_survey": false, "name": "User Feedback Form", "single_response": false, "ui_definition": {"ui:order": [], "ui:theme": {"primaryColor": "gray"}}}, "type": "forms"}} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/app-builder-backend + Scenario: Create a form returns "OK" response + Given operation "CreateForm" enabled + And new "CreateForm" request + And body with value {"data": {"attributes": {"anonymous": false, "data_definition": {}, "description": "A form to collect user feedback.", "idp_survey": false, "name": "User Feedback Form", "single_response": false, "ui_definition": {}}, "type": "forms"}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/app-builder-backend + Scenario: Create and publish a form returns "Bad Request" response + Given operation "CreateAndPublishForm" enabled + And new "CreateAndPublishForm" request + And body with value {"data": {"attributes": {"anonymous": false, "data_definition": {"description": "Welcome to the Engineering Experience Survey.", "required": [], "title": "Developer Experience Survey", "type": "object"}, "description": "A form to collect user feedback.", "idp_survey": false, "name": "User Feedback Form", "single_response": false, "ui_definition": {"ui:order": [], "ui:theme": {"primaryColor": "gray"}}}, "type": "forms"}} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/app-builder-backend + Scenario: Create and publish a form returns "OK" response + Given operation "CreateAndPublishForm" enabled + And new "CreateAndPublishForm" request + And body with value {"data": {"attributes": {"anonymous": false, "data_definition": {}, "description": "A form to collect user feedback.", "idp_survey": false, "name": "User Feedback Form", "single_response": false, "ui_definition": {}}, "type": "forms"}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/app-builder-backend + Scenario: Create or update a form version returns "Bad Request" response + Given operation "UpsertFormVersion" enabled + And new "UpsertFormVersion" request + And request contains "form_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"data_definition": {"description": "Welcome to the Engineering Experience Survey.", "required": [], "title": "Developer Experience Survey", "type": "object"}, "state": "frozen", "ui_definition": {"ui:order": [], "ui:theme": {"primaryColor": "gray"}}, "upsert_params": {"etag": "b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d", "insert_only": false, "match_policy": "none"}}, "type": "form_versions"}} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/app-builder-backend + Scenario: Create or update a form version returns "Not Found" response + Given operation "UpsertFormVersion" enabled + And new "UpsertFormVersion" request + And request contains "form_id" parameter with value "00000000-0000-0000-0000-000000000001" + And body with value {"data": {"attributes": {"data_definition": {"description": "Welcome to the Engineering Experience Survey.", "required": [], "title": "Developer Experience Survey", "type": "object"}, "state": "frozen", "ui_definition": {"ui:order": [], "ui:theme": {"primaryColor": "gray"}}, "upsert_params": {"etag": "b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d", "insert_only": false, "match_policy": "none"}}, "type": "form_versions"}} + When the request is sent + Then the response status is 404 Not Found + + @team:DataDog/app-builder-backend + Scenario: Create or update a form version returns "OK" response + Given operation "UpsertFormVersion" enabled + And there is a valid "form" in the system + And new "UpsertFormVersion" request + And request contains "form_id" parameter from "form.data.id" + And body with value {"data": {"attributes": {"data_definition": {"description": "Welcome to the Engineering Experience Survey.", "required": [], "title": "Developer Experience Survey", "type": "object"}, "state": "frozen", "ui_definition": {"ui:order": [], "ui:theme": {"primaryColor": "gray"}}, "upsert_params": {"etag": "b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d", "insert_only": false, "match_policy": "none"}}, "type": "form_versions"}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/app-builder-backend + Scenario: Delete a form returns "Bad Request" response + Given operation "DeleteForm" enabled + And new "DeleteForm" request + And request contains "form_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/app-builder-backend + Scenario: Delete a form returns "OK" response + Given operation "DeleteForm" enabled + And there is a valid "form" in the system + And new "DeleteForm" request + And request contains "form_id" parameter from "form.data.id" + When the request is sent + Then the response status is 200 OK + And the response "data.id" has the same value as "form.data.id" + And the response "data.type" is equal to "forms" + + @generated @skip @team:DataDog/app-builder-backend + Scenario: Get a form returns "Bad Request" response + Given operation "GetForm" enabled + And new "GetForm" request + And request contains "form_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/app-builder-backend + Scenario: Get a form returns "Not Found" response + Given operation "GetForm" enabled + And new "GetForm" request + And request contains "form_id" parameter with value "00000000-0000-0000-0000-000000000001" + When the request is sent + Then the response status is 404 Not Found + + @team:DataDog/app-builder-backend + Scenario: Get a form returns "OK" response + Given operation "GetForm" enabled + And there is a valid "form" in the system + And new "GetForm" request + And request contains "form_id" parameter from "form.data.id" + When the request is sent + Then the response status is 200 OK + And the response "data.id" has the same value as "form.data.id" + And the response "data.type" is equal to "forms" + And the response "data.attributes.name" is equal to "{{ unique }}" + + @generated @skip @team:DataDog/app-builder-backend + Scenario: List forms returns "Bad Request" response + Given operation "ListForms" enabled + And new "ListForms" request + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/app-builder-backend + Scenario: List forms returns "OK" response + Given operation "ListForms" enabled + And there is a valid "form" in the system + And new "ListForms" request + When the request is sent + Then the response status is 200 OK + And the response "data" has item with field "id" with value "{{ form.data.id }}" + And the response "data" has item with field "type" with value "forms" + And the response "data" has item with field "attributes.name" with value "{{ unique }}" + + @generated @skip @team:DataDog/app-builder-backend + Scenario: Publish a form version returns "Bad Request" response + Given operation "PublishForm" enabled + And new "PublishForm" request + And request contains "form_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"version": 1}, "type": "form_publications"}} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/app-builder-backend + Scenario: Publish a form version returns "Not Found" response + Given operation "PublishForm" enabled + And new "PublishForm" request + And request contains "form_id" parameter with value "00000000-0000-0000-0000-000000000001" + And body with value {"data": {"attributes": {"version": 1}, "type": "form_publications"}} + When the request is sent + Then the response status is 404 Not Found + + @team:DataDog/app-builder-backend + Scenario: Publish a form version returns "OK" response + Given operation "PublishForm" enabled + And there is a valid "form" in the system + And new "PublishForm" request + And request contains "form_id" parameter from "form.data.id" + And body with value {"data": {"attributes": {"version": 1}, "type": "form_publications"}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/app-builder-backend + Scenario: Update a form returns "Bad Request" response + Given operation "UpdateForm" enabled + And new "UpdateForm" request + And request contains "form_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"form_update": {"datastore_config": {"datastore_id": "5108ea24-dd83-4696-9caa-f069f73d0fad", "primary_column_name": "id", "primary_key_generation_strategy": "none"}, "description": "An updated description.", "name": "Updated Form Name"}}, "id": "22f6006a-2302-4926-9396-d2dfcf7b0b34", "type": "forms"}} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/app-builder-backend + Scenario: Update a form returns "Not Found" response + Given operation "UpdateForm" enabled + And new "UpdateForm" request + And request contains "form_id" parameter with value "00000000-0000-0000-0000-000000000001" + And body with value {"data": {"attributes": {"form_update": {"datastore_config": {"datastore_id": "5108ea24-dd83-4696-9caa-f069f73d0fad", "primary_column_name": "id", "primary_key_generation_strategy": "none"}, "description": "An updated description.", "name": "Updated Form Name"}}, "id": "22f6006a-2302-4926-9396-d2dfcf7b0b34", "type": "forms"}} + When the request is sent + Then the response status is 404 Not Found + + @team:DataDog/app-builder-backend + Scenario: Update a form returns "OK" response + Given operation "UpdateForm" enabled + And there is a valid "form" in the system + And new "UpdateForm" request + And request contains "form_id" parameter from "form.data.id" + And body with value {"data": {"attributes": {"form_update": {"datastore_config": {"datastore_id": "5108ea24-dd83-4696-9caa-f069f73d0fad", "primary_column_name": "id", "primary_key_generation_strategy": "none"}, "description": "An updated description.", "name": "Updated Form Name"}}, "id": "22f6006a-2302-4926-9396-d2dfcf7b0b34", "type": "forms"}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/app-builder-backend + Scenario: Upsert and publish a form version returns "Bad Request" response + Given operation "UpsertAndPublishFormVersion" enabled + And new "UpsertAndPublishFormVersion" request + And request contains "form_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"data_definition": {"description": "Welcome to the Engineering Experience Survey.", "required": [], "title": "Developer Experience Survey", "type": "object"}, "ui_definition": {"ui:order": [], "ui:theme": {"primaryColor": "gray"}}, "upsert_params": {"etag": "b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d"}}, "type": "form_versions"}} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/app-builder-backend + Scenario: Upsert and publish a form version returns "Not Found" response + Given operation "UpsertAndPublishFormVersion" enabled + And new "UpsertAndPublishFormVersion" request + And request contains "form_id" parameter with value "00000000-0000-0000-0000-000000000001" + And body with value {"data": {"attributes": {"data_definition": {"description": "Welcome to the Engineering Experience Survey.", "required": [], "title": "Developer Experience Survey", "type": "object"}, "ui_definition": {"ui:order": [], "ui:theme": {"primaryColor": "gray"}}, "upsert_params": {"etag": "b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d"}}, "type": "form_versions"}} + When the request is sent + Then the response status is 404 Not Found + + @team:DataDog/app-builder-backend + Scenario: Upsert and publish a form version returns "OK" response + Given operation "UpsertAndPublishFormVersion" enabled + And there is a valid "form" in the system + And new "UpsertAndPublishFormVersion" request + And request contains "form_id" parameter from "form.data.id" + And body with value {"data": {"attributes": {"data_definition": {"description": "Welcome to the Engineering Experience Survey.", "required": [], "title": "Developer Experience Survey", "type": "object"}, "ui_definition": {"ui:order": [], "ui:theme": {"primaryColor": "gray"}}, "upsert_params": {"etag": "b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d"}}, "type": "form_versions"}} + When the request is sent + Then the response status is 200 OK diff --git a/tests/v2/features/given.json b/tests/v2/features/given.json index 097f6a07d5..f5ce3365da 100644 --- a/tests/v2/features/given.json +++ b/tests/v2/features/given.json @@ -498,6 +498,30 @@ "tag": "Feature Flags", "operationId": "UpdateAllocationsForFeatureFlagInEnvironment" }, + { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"forms\",\n \"attributes\": {\n \"name\": \"{{ unique }}\",\n \"description\": \"A simple test form.\",\n \"anonymous\": false,\n \"single_response\": false,\n \"idp_survey\": false,\n \"data_definition\": {},\n \"ui_definition\": {}\n }\n }\n}" + } + ], + "step": "there is a valid \"form\" in the system", + "key": "form", + "tag": "Forms", + "operationId": "CreateForm" + }, + { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"forms\",\n \"attributes\": {\n \"name\": \"{{ unique }}\",\n \"description\": \"A simple test form.\",\n \"anonymous\": false,\n \"single_response\": false,\n \"idp_survey\": false,\n \"data_definition\": {},\n \"ui_definition\": {}\n }\n }\n}" + } + ], + "step": "there is a valid \"form_published\" in the system", + "key": "form_published", + "tag": "Forms", + "operationId": "CreateAndPublishForm" + }, { "parameters": [ { @@ -650,6 +674,22 @@ "tag": "Google Chat Integration", "operationId": "CreateOrganizationHandle" }, + { + "parameters": [ + { + "name": "organization_binding_id", + "value": "\"e54cb570-c674-529c-769d-84b312288ed7\"" + }, + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"google-chat-target-audience\",\n \"attributes\": {\n \"audience_name\": \"{{ unique }}\",\n \"audience_id\": \"{{ unique }}\"\n }\n }\n}" + } + ], + "step": "there is a valid \"google_chat_target_audience\" in the system", + "key": "google_chat_target_audience", + "tag": "Google Chat Integration", + "operationId": "CreateGoogleChatTargetAudience" + }, { "parameters": [ { @@ -902,6 +942,34 @@ "tag": "Logs Restriction Queries", "operationId": "CreateRestrictionQuery" }, + { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"tag_indexing_rules\",\n \"attributes\": {\n \"name\": \"{{ unique_alnum }}\",\n \"metric_name_matches\": [\"dd.{{ unique_alnum }}.*\"],\n \"tags\": [\"env\", \"service\"]\n }\n }\n}" + } + ], + "step": "there is a valid \"tag_indexing_rule\" in the system", + "key": "tag_indexing_rule", + "tag": "Metrics", + "operationId": "CreateTagIndexingRule" + }, + { + "parameters": [ + { + "name": "metric_name", + "value": "\"{{ unique_metric_name }}\"" + }, + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"tag_indexing_rule_exemptions\",\n \"attributes\": {\n \"reason\": \"BDD test exemption\"\n }\n }\n}" + } + ], + "step": "there is a valid \"tag_indexing_rule_exemption\" in the system", + "key": "tag_indexing_rule_exemption", + "tag": "Metrics", + "operationId": "CreateTagIndexingRuleExemption" + }, { "parameters": [ { @@ -1354,6 +1422,22 @@ "tag": "Security Monitoring", "operationId": "CreateSecurityMonitoringRule" }, + { + "parameters": [ + { + "name": "rule_id", + "source": "security_rule.id" + }, + { + "name": "body", + "value": "{\n \"name\": \"{{ unique }}-updated\",\n \"queries\": [{\n \"query\": \"@test:true\",\n \"aggregation\": \"count\",\n \"groupByFields\": [],\n \"distinctFields\": [],\n \"metrics\": []\n }],\n \"filters\": [],\n \"cases\": [{\n \"name\": \"\",\n \"status\": \"info\",\n \"condition\": \"a > 0\",\n \"notifications\": []\n }],\n \"options\": {\n \"evaluationWindow\": 900,\n \"keepAlive\": 3600,\n \"maxSignalDuration\": 86400\n },\n \"message\": \"Test rule updated\",\n \"tags\": [],\n \"isEnabled\": true\n}" + } + ], + "step": "there is a valid \"security_rule_updated\" in the system", + "key": "security_rule_updated", + "tag": "Security Monitoring", + "operationId": "UpdateSecurityMonitoringRule" + }, { "step": "a valid \"configuration\" in the system", "key": "configuration", @@ -1428,18 +1512,6 @@ "tag": "Service Accounts", "operationId": "CreateServiceAccountApplicationKey" }, - { - "parameters": [ - { - "name": "body", - "value": "{\n \"data\": {\n \"attributes\": {\n \"name\": \"{{ unique }}\"\n },\n \"type\": \"services\"\n }\n}" - } - ], - "step": "there is a valid \"service\" in the system", - "key": "service", - "tag": "Incident Services", - "operationId": "CreateIncidentService" - }, { "parameters": [ { diff --git a/tests/v2/features/google_chat_integration.feature b/tests/v2/features/google_chat_integration.feature index f722a7ea20..65c1f264a6 100644 --- a/tests/v2/features/google_chat_integration.feature +++ b/tests/v2/features/google_chat_integration.feature @@ -9,6 +9,38 @@ Feature: Google Chat Integration And a valid "appKeyAuth" key in the system And an instance of "GoogleChatIntegration" API + @generated @skip @team:DataDog/chat-integrations + Scenario: Create a target audience returns "Bad Request" response + Given new "CreateGoogleChatTargetAudience" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"audience_id": "fake-audience-id-1", "audience_name": "fake audience name 1"}, "type": "google-chat-target-audience"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/chat-integrations + Scenario: Create a target audience returns "CREATED" response + Given new "CreateGoogleChatTargetAudience" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"audience_id": "fake-audience-id-1", "audience_name": "fake audience name 1"}, "type": "google-chat-target-audience"}} + When the request is sent + Then the response status is 201 CREATED + + @generated @skip @team:DataDog/chat-integrations + Scenario: Create a target audience returns "Conflict" response + Given new "CreateGoogleChatTargetAudience" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"audience_id": "fake-audience-id-1", "audience_name": "fake audience name 1"}, "type": "google-chat-target-audience"}} + When the request is sent + Then the response status is 409 Conflict + + @generated @skip @team:DataDog/chat-integrations + Scenario: Create a target audience returns "Not Found" response + Given new "CreateGoogleChatTargetAudience" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"audience_id": "fake-audience-id-1", "audience_name": "fake audience name 1"}, "type": "google-chat-target-audience"}} + When the request is sent + Then the response status is 404 Not Found + @generated @skip @team:DataDog/chat-integrations Scenario: Create organization handle returns "Bad Request" response Given new "CreateOrganizationHandle" request @@ -42,6 +74,36 @@ Feature: Google Chat Integration When the request is sent Then the response status is 404 Not Found + @generated @skip @team:DataDog/chat-integrations + Scenario: Delete a Google Chat organization binding returns "Bad Request" response + Given new "DeleteGoogleChatOrganization" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/chat-integrations + Scenario: Delete a Google Chat organization binding returns "OK" response + Given new "DeleteGoogleChatOrganization" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 OK + + @generated @skip @team:DataDog/chat-integrations + Scenario: Delete a target audience returns "Not Found" response + Given new "DeleteGoogleChatTargetAudience" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + And request contains "target_audience_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/chat-integrations + Scenario: Delete a target audience returns "OK" response + Given new "DeleteGoogleChatTargetAudience" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + And request contains "target_audience_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 OK + @generated @skip @team:DataDog/chat-integrations Scenario: Delete organization handle returns "Bad Request" response Given new "DeleteOrganizationHandle" request @@ -59,6 +121,56 @@ Feature: Google Chat Integration When the request is sent Then the response status is 204 OK + @generated @skip @team:DataDog/chat-integrations + Scenario: Delete the delegated user returns "Not Found" response + Given new "DeleteGoogleChatDelegatedUser" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/chat-integrations + Scenario: Delete the delegated user returns "OK" response + Given new "DeleteGoogleChatDelegatedUser" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 OK + + @generated @skip @team:DataDog/chat-integrations + Scenario: Get a Google Chat organization binding returns "Not Found" response + Given new "GetGoogleChatOrganization" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/chat-integrations + Scenario: Get a Google Chat organization binding returns "OK" response + Given new "GetGoogleChatOrganization" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/chat-integrations + Scenario: Get a target audience returns "Not Found" response + Given new "GetGoogleChatTargetAudience" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + And request contains "target_audience_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/chat-integrations + Scenario: Get a target audience returns "OK" response + Given new "GetGoogleChatTargetAudience" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + And request contains "target_audience_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/chat-integrations + Scenario: Get all Google Chat organization bindings returns "OK" response + Given new "ListGoogleChatOrganizations" request + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/chat-integrations Scenario: Get all organization handles returns "Bad Request" response Given new "ListOrganizationHandles" request @@ -82,6 +194,20 @@ Feature: Google Chat Integration Then the response status is 200 OK And the response "data[0].type" is equal to "google-chat-organization-handle" + @generated @skip @team:DataDog/chat-integrations + Scenario: Get all target audiences returns "Not Found" response + Given new "ListGoogleChatTargetAudiences" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/chat-integrations + Scenario: Get all target audiences returns "OK" response + Given new "ListGoogleChatTargetAudiences" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/chat-integrations Scenario: Get organization handle returns "Bad Request" response Given new "GetOrganizationHandle" request @@ -136,6 +262,47 @@ Feature: Google Chat Integration And the response "data.attributes.resource_name" is equal to "spaces/AAQA-zFIks8" And the response "data.attributes.organization_binding_id" is equal to "e54cb570-c674-529c-769d-84b312288ed7" + @generated @skip @team:DataDog/chat-integrations + Scenario: Get the delegated user returns "Not Found" response + Given new "GetGoogleChatDelegatedUser" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/chat-integrations + Scenario: Get the delegated user returns "OK" response + Given new "GetGoogleChatDelegatedUser" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/chat-integrations + Scenario: Update a target audience returns "Bad Request" response + Given new "UpdateGoogleChatTargetAudience" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + And request contains "target_audience_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"audience_id": "fake-audience-id-1", "audience_name": "fake audience name 1"}, "type": "google-chat-target-audience"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/chat-integrations + Scenario: Update a target audience returns "Not Found" response + Given new "UpdateGoogleChatTargetAudience" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + And request contains "target_audience_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"audience_id": "fake-audience-id-1", "audience_name": "fake audience name 1"}, "type": "google-chat-target-audience"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/chat-integrations + Scenario: Update a target audience returns "OK" response + Given new "UpdateGoogleChatTargetAudience" request + And request contains "organization_binding_id" parameter from "REPLACE.ME" + And request contains "target_audience_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"audience_id": "fake-audience-id-1", "audience_name": "fake audience name 1"}, "type": "google-chat-target-audience"}} + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/chat-integrations Scenario: Update organization handle returns "Bad Request" response Given new "UpdateOrganizationHandle" request diff --git a/tests/v2/features/incident_services.feature b/tests/v2/features/incident_services.feature deleted file mode 100644 index eb5e5716d4..0000000000 --- a/tests/v2/features/incident_services.feature +++ /dev/null @@ -1,146 +0,0 @@ -@endpoint(incident-services) @endpoint(incident-services-v2) -Feature: Incident Services - Create, update, delete, and retrieve services which can be associated with - incidents. See the [Incident Management - page](https://docs.datadoghq.com/service_management/incident_management/) - for more information. - - Background: - Given a valid "apiKeyAuth" key in the system - And a valid "appKeyAuth" key in the system - And an instance of "IncidentServices" API - - @generated @skip @team:Datadog/incident-app - Scenario: Create a new incident service returns "Bad Request" response - Given operation "CreateIncidentService" enabled - And new "CreateIncidentService" request - And body with value {"data": {"attributes": {"name": "an example service name"}, "type": "services"}} - When the request is sent - Then the response status is 400 Bad Request - - @team:Datadog/incident-app - Scenario: Create a new incident service returns "CREATED" response - Given operation "CreateIncidentService" enabled - And new "CreateIncidentService" request - And body with value {"data": {"type": "services", "attributes": {"name": "{{ unique }}"}}} - When the request is sent - Then the response status is 201 CREATED - And the response "data.attributes.name" is equal to "{{ unique }}" - And the response "data.type" is equal to "services" - - @generated @skip @team:Datadog/incident-app - Scenario: Create a new incident service returns "Not Found" response - Given operation "CreateIncidentService" enabled - And new "CreateIncidentService" request - And body with value {"data": {"attributes": {"name": "an example service name"}, "type": "services"}} - When the request is sent - Then the response status is 404 Not Found - - @generated @skip @team:Datadog/incident-app - Scenario: Delete an existing incident service returns "Bad Request" response - Given operation "DeleteIncidentService" enabled - And new "DeleteIncidentService" request - And request contains "service_id" parameter from "REPLACE.ME" - When the request is sent - Then the response status is 400 Bad Request - - @generated @skip @team:Datadog/incident-app - Scenario: Delete an existing incident service returns "Not Found" response - Given operation "DeleteIncidentService" enabled - And new "DeleteIncidentService" request - And request contains "service_id" parameter from "REPLACE.ME" - When the request is sent - Then the response status is 404 Not Found - - @team:Datadog/incident-app - Scenario: Delete an existing incident service returns "OK" response - Given there is a valid "service" in the system - And operation "DeleteIncidentService" enabled - And new "DeleteIncidentService" request - And request contains "service_id" parameter from "service.data.id" - When the request is sent - Then the response status is 204 OK - - @generated @skip @team:Datadog/incident-app - Scenario: Get a list of all incident services returns "Bad Request" response - Given operation "ListIncidentServices" enabled - And new "ListIncidentServices" request - When the request is sent - Then the response status is 400 Bad Request - - @generated @skip @team:Datadog/incident-app - Scenario: Get a list of all incident services returns "Not Found" response - Given operation "ListIncidentServices" enabled - And new "ListIncidentServices" request - When the request is sent - Then the response status is 404 Not Found - - @team:Datadog/incident-app - Scenario: Get a list of all incident services returns "OK" response - Given there is a valid "service" in the system - And operation "ListIncidentServices" enabled - And new "ListIncidentServices" request - And request contains "filter" parameter from "service.data.attributes.name" - When the request is sent - Then the response status is 200 OK - And the response "data" has length 1 - And the response "data[0].attributes.name" has the same value as "service.data.attributes.name" - - @generated @skip @team:Datadog/incident-app - Scenario: Get details of an incident service returns "Bad Request" response - Given operation "GetIncidentService" enabled - And new "GetIncidentService" request - And request contains "service_id" parameter from "REPLACE.ME" - When the request is sent - Then the response status is 400 Bad Request - - @generated @skip @team:Datadog/incident-app - Scenario: Get details of an incident service returns "Not Found" response - Given operation "GetIncidentService" enabled - And new "GetIncidentService" request - And request contains "service_id" parameter from "REPLACE.ME" - When the request is sent - Then the response status is 404 Not Found - - @team:Datadog/incident-app - Scenario: Get details of an incident service returns "OK" response - Given there is a valid "service" in the system - And operation "GetIncidentService" enabled - And new "GetIncidentService" request - And request contains "service_id" parameter from "service.data.id" - When the request is sent - Then the response status is 200 OK - And the response "data.id" is equal to "{{service.data.id}}" - And the response "data.type" is equal to "services" - And the response "data.attributes.name" has the same value as "service.data.attributes.name" - - @generated @skip @team:Datadog/incident-app - Scenario: Update an existing incident service returns "Bad Request" response - Given operation "UpdateIncidentService" enabled - And new "UpdateIncidentService" request - And request contains "service_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"name": "an example service name"}, "id": "00000000-0000-0000-0000-000000000000", "type": "services"}} - When the request is sent - Then the response status is 400 Bad Request - - @generated @skip @team:Datadog/incident-app - Scenario: Update an existing incident service returns "Not Found" response - Given operation "UpdateIncidentService" enabled - And new "UpdateIncidentService" request - And request contains "service_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"name": "an example service name"}, "id": "00000000-0000-0000-0000-000000000000", "type": "services"}} - When the request is sent - Then the response status is 404 Not Found - - @team:Datadog/incident-app - Scenario: Update an existing incident service returns "OK" response - Given there is a valid "service" in the system - And operation "UpdateIncidentService" enabled - And new "UpdateIncidentService" request - And request contains "service_id" parameter from "service.data.id" - And body with value {"data": {"type": "services", "attributes": {"name": "{{ service.data.attributes.name }}-updated"}}} - When the request is sent - Then the response status is 200 OK - And the response "data.id" is equal to "{{service.data.id}}" - And the response "data.type" is equal to "services" - And the response "data.attributes.name" is equal to "{{ service.data.attributes.name }}-updated" diff --git a/tests/v2/features/llm_observability.feature b/tests/v2/features/llm_observability.feature index 36976da92e..35e9592fa0 100644 --- a/tests/v2/features/llm_observability.feature +++ b/tests/v2/features/llm_observability.feature @@ -315,6 +315,57 @@ Feature: LLM Observability When the request is sent Then the response status is 422 Unprocessable Entity + @generated @skip @team:DataDog/ml-observability + Scenario: Create or update a patterns configuration returns "Bad Request" response + Given operation "UpsertLLMObsPatternsConfig" enabled + And new "UpsertLLMObsPatternsConfig" request + And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: Create or update a patterns configuration returns "Not Found" response + Given operation "UpsertLLMObsPatternsConfig" enabled + And new "UpsertLLMObsPatternsConfig" request + And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/ml-observability + Scenario: Create or update a patterns configuration returns "OK" response + Given operation "UpsertLLMObsPatternsConfig" enabled + And new "UpsertLLMObsPatternsConfig" request + And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: Create or update annotations returns "Bad Request" response + Given operation "UpsertLLMObsAnnotations" enabled + And new "UpsertLLMObsAnnotations" request + And request contains "queue_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"annotations": [{"interaction_id": "00000000-0000-0000-0000-000000000001", "label_values": [{"label_schema_id": "abc-123", "value": "good"}, {"label_schema_id": "ef56gh78", "value": "positive"}]}]}, "type": "annotations"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: Create or update annotations returns "Not Found — the queue does not exist." response + Given operation "UpsertLLMObsAnnotations" enabled + And new "UpsertLLMObsAnnotations" request + And request contains "queue_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"annotations": [{"interaction_id": "00000000-0000-0000-0000-000000000001", "label_values": [{"label_schema_id": "abc-123", "value": "good"}, {"label_schema_id": "ef56gh78", "value": "positive"}]}]}, "type": "annotations"}} + When the request is sent + Then the response status is 404 Not Found — the queue does not exist. + + @generated @skip @team:DataDog/ml-observability + Scenario: Create or update annotations returns "OK — annotations created or updated. Per-item errors are listed in `errors`." response + Given operation "UpsertLLMObsAnnotations" enabled + And new "UpsertLLMObsAnnotations" request + And request contains "queue_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"annotations": [{"interaction_id": "00000000-0000-0000-0000-000000000001", "label_values": [{"label_schema_id": "abc-123", "value": "good"}, {"label_schema_id": "ef56gh78", "value": "positive"}]}]}, "type": "annotations"}} + When the request is sent + Then the response status is 200 OK — annotations created or updated. Per-item errors are listed in `errors`. + @generated @skip @team:DataDog/ml-observability Scenario: Delete LLM Observability data returns "Accepted" response Given operation "DeleteLLMObsData" enabled @@ -444,6 +495,30 @@ Feature: LLM Observability When the request is sent Then the response status is 404 Not Found + @generated @skip @team:DataDog/ml-observability + Scenario: Delete a patterns configuration returns "Bad Request" response + Given operation "DeleteLLMObsPatternsConfig" enabled + And new "DeleteLLMObsPatternsConfig" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: Delete a patterns configuration returns "No Content" response + Given operation "DeleteLLMObsPatternsConfig" enabled + And new "DeleteLLMObsPatternsConfig" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 No Content + + @generated @skip @team:DataDog/ml-observability + Scenario: Delete a patterns configuration returns "Not Found" response + Given operation "DeleteLLMObsPatternsConfig" enabled + And new "DeleteLLMObsPatternsConfig" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + @generated @skip @team:DataDog/ml-observability Scenario: Delete an LLM Observability annotation queue returns "No Content" response Given operation "DeleteLLMObsAnnotationQueue" enabled @@ -487,6 +562,33 @@ Feature: LLM Observability When the request is sent Then the response status is 404 Not Found + @generated @skip @team:DataDog/ml-observability + Scenario: Delete annotations returns "Bad Request" response + Given operation "DeleteLLMObsAnnotations" enabled + And new "DeleteLLMObsAnnotations" request + And request contains "queue_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"annotation_ids": ["00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000001"]}, "type": "annotations"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: Delete annotations returns "Not Found — the queue does not exist." response + Given operation "DeleteLLMObsAnnotations" enabled + And new "DeleteLLMObsAnnotations" request + And request contains "queue_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"annotation_ids": ["00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000001"]}, "type": "annotations"}} + When the request is sent + Then the response status is 404 Not Found — the queue does not exist. + + @generated @skip @team:DataDog/ml-observability + Scenario: Delete annotations returns "OK — annotations deleted. Errors for annotations that could not be deleted are listed in `errors`." response + Given operation "DeleteLLMObsAnnotations" enabled + And new "DeleteLLMObsAnnotations" request + And request contains "queue_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"annotation_ids": ["00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000001"]}, "type": "annotations"}} + When the request is sent + Then the response status is 200 OK — annotations deleted. Errors for annotations that could not be deleted are listed in `errors`. + @generated @skip @team:DataDog/ml-observability Scenario: Export an LLM Observability dataset returns "Bad Request" response Given operation "ExportLLMObsDataset" enabled @@ -565,6 +667,27 @@ Feature: LLM Observability When the request is sent Then the response status is 200 OK + @generated @skip @team:DataDog/ml-observability + Scenario: Get a patterns configuration returns "Bad Request" response + Given operation "GetLLMObsPatternsConfig" enabled + And new "GetLLMObsPatternsConfig" request + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: Get a patterns configuration returns "Not Found" response + Given operation "GetLLMObsPatternsConfig" enabled + And new "GetLLMObsPatternsConfig" request + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/ml-observability + Scenario: Get a patterns configuration returns "OK" response + Given operation "GetLLMObsPatternsConfig" enabled + And new "GetLLMObsPatternsConfig" request + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/ml-observability Scenario: Get annotated interactions by content IDs returns "Bad Request" response Given operation "GetLLMObsAnnotatedInteractionsByTraceIDs" enabled @@ -621,6 +744,30 @@ Feature: LLM Observability When the request is sent Then the response status is 200 OK + @generated @skip @team:DataDog/ml-observability + Scenario: Get patterns run status returns "Bad Request" response + Given operation "GetLLMObsPatternsRunStatus" enabled + And new "GetLLMObsPatternsRunStatus" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: Get patterns run status returns "Not Found" response + Given operation "GetLLMObsPatternsRunStatus" enabled + And new "GetLLMObsPatternsRunStatus" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/ml-observability + Scenario: Get patterns run status returns "OK" response + Given operation "GetLLMObsPatternsRunStatus" enabled + And new "GetLLMObsPatternsRunStatus" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/ml-observability Scenario: List LLM Observability annotation queues returns "Bad Request" response Given operation "ListLLMObsAnnotationQueues" enabled @@ -861,6 +1008,116 @@ Feature: LLM Observability When the request is sent Then the response status is 200 OK + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns clustered points returns "Bad Request" response + Given operation "ListLLMObsPatternsClusteredPoints" enabled + And new "ListLLMObsPatternsClusteredPoints" request + And request contains "topic_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns clustered points returns "Not Found" response + Given operation "ListLLMObsPatternsClusteredPoints" enabled + And new "ListLLMObsPatternsClusteredPoints" request + And request contains "topic_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns clustered points returns "OK" response + Given operation "ListLLMObsPatternsClusteredPoints" enabled + And new "ListLLMObsPatternsClusteredPoints" request + And request contains "topic_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns configurations returns "Bad Request" response + Given operation "ListLLMObsPatternsConfigs" enabled + And new "ListLLMObsPatternsConfigs" request + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns configurations returns "OK" response + Given operation "ListLLMObsPatternsConfigs" enabled + And new "ListLLMObsPatternsConfigs" request + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns runs returns "Bad Request" response + Given operation "ListLLMObsPatternsRuns" enabled + And new "ListLLMObsPatternsRuns" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns runs returns "Not Found" response + Given operation "ListLLMObsPatternsRuns" enabled + And new "ListLLMObsPatternsRuns" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns runs returns "OK" response + Given operation "ListLLMObsPatternsRuns" enabled + And new "ListLLMObsPatternsRuns" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns topics returns "Bad Request" response + Given operation "ListLLMObsPatternsTopics" enabled + And new "ListLLMObsPatternsTopics" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns topics returns "Not Found" response + Given operation "ListLLMObsPatternsTopics" enabled + And new "ListLLMObsPatternsTopics" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns topics returns "OK" response + Given operation "ListLLMObsPatternsTopics" enabled + And new "ListLLMObsPatternsTopics" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns topics with clustered points returns "Bad Request" response + Given operation "ListLLMObsPatternsTopicsWithClusteredPoints" enabled + And new "ListLLMObsPatternsTopicsWithClusteredPoints" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns topics with clustered points returns "Not Found" response + Given operation "ListLLMObsPatternsTopicsWithClusteredPoints" enabled + And new "ListLLMObsPatternsTopicsWithClusteredPoints" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/ml-observability + Scenario: List patterns topics with clustered points returns "OK" response + Given operation "ListLLMObsPatternsTopicsWithClusteredPoints" enabled + And new "ListLLMObsPatternsTopicsWithClusteredPoints" request + And request contains "config_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/ml-observability Scenario: Lock LLM Observability dataset draft state returns "Bad Request" response Given operation "LockLLMObsDatasetDraftState" enabled @@ -1021,6 +1278,30 @@ Feature: LLM Observability When the request is sent Then the response status is 200 OK + @generated @skip @team:DataDog/ml-observability + Scenario: Trigger a patterns run returns "Accepted" response + Given operation "TriggerLLMObsPatterns" enabled + And new "TriggerLLMObsPatterns" request + And body with value {"data": {"attributes": {"config_id": "a7c8d9e0-1234-5678-9abc-def012345678"}, "type": "topic_discovery"}} + When the request is sent + Then the response status is 202 Accepted + + @generated @skip @team:DataDog/ml-observability + Scenario: Trigger a patterns run returns "Bad Request" response + Given operation "TriggerLLMObsPatterns" enabled + And new "TriggerLLMObsPatterns" request + And body with value {"data": {"attributes": {"config_id": "a7c8d9e0-1234-5678-9abc-def012345678"}, "type": "topic_discovery"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: Trigger a patterns run returns "Not Found" response + Given operation "TriggerLLMObsPatterns" enabled + And new "TriggerLLMObsPatterns" request + And body with value {"data": {"attributes": {"config_id": "a7c8d9e0-1234-5678-9abc-def012345678"}, "type": "topic_discovery"}} + When the request is sent + Then the response status is 404 Not Found + @generated @skip @team:DataDog/ml-observability Scenario: Unlock LLM Observability dataset draft state returns "Bad Request" response Given operation "UnlockLLMObsDatasetDraftState" enabled diff --git a/tests/v2/features/metrics.feature b/tests/v2/features/metrics.feature index 032b561fc6..0d0dac2e9d 100644 --- a/tests/v2/features/metrics.feature +++ b/tests/v2/features/metrics.feature @@ -68,6 +68,40 @@ Feature: Metrics When the request is sent Then the response status is 201 Created + @generated @skip @team:DataDog/metrics-experience + Scenario: Create a tag indexing rule exemption returns "Bad Request" response + Given a valid "appKeyAuth" key in the system + And new "CreateTagIndexingRuleExemption" request + And request contains "metric_name" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"reason": "This metric has a pre-existing tag configuration."}, "type": "tag_indexing_rule_exemptions"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/metrics-experience + Scenario: Create a tag indexing rule exemption returns "Created" response + Given a valid "appKeyAuth" key in the system + And new "CreateTagIndexingRuleExemption" request + And request contains "metric_name" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"reason": "This metric has a pre-existing tag configuration."}, "type": "tag_indexing_rule_exemptions"}} + When the request is sent + Then the response status is 201 Created + + @team:DataDog/metrics-experience + Scenario: Create a tag indexing rule returns "Bad Request" response + Given a valid "appKeyAuth" key in the system + And new "CreateTagIndexingRule" request + And body with value {"data": {"type": "tag_indexing_rules", "attributes": {"name": "test", "metric_name_matches": ["dd.test.*"], "options": {"version": 99, "data": {"override_previous_rules": false, "manage_preexisting_metrics": true}}}}} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/metrics-experience + Scenario: Create a tag indexing rule returns "Created" response + Given a valid "appKeyAuth" key in the system + And new "CreateTagIndexingRule" request + And body with value {"data": {"attributes": {"exclude_tags_mode": false, "ignored_metric_name_matches": [], "metric_name_matches": ["dd.test.*"], "name": "my-indexing-rule", "options": {"data": {"dynamic_tags": {"queried_tags_window_seconds": 3600, "related_asset_tags": false}, "manage_preexisting_metrics": true, "metric_match": {"queried_window_seconds": 3600}, "override_previous_rules": false}, "version": 1}, "tags": ["env", "service"]}, "type": "tag_indexing_rules"}} + When the request is sent + Then the response status is 201 Created + @replay-only @skip-validation @team:DataDog/metrics-experience Scenario: Delete a tag configuration returns "No Content" response Given there is a valid "metric" in the system @@ -86,6 +120,39 @@ Feature: Metrics When the request is sent Then the response status is 404 Not found + @generated @skip @team:DataDog/metrics-experience + Scenario: Delete a tag indexing rule exemption returns "Bad Request" response + Given a valid "appKeyAuth" key in the system + And new "DeleteTagIndexingRuleExemption" request + And request contains "metric_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/metrics-experience + Scenario: Delete a tag indexing rule exemption returns "No Content" response + Given a valid "appKeyAuth" key in the system + And new "DeleteTagIndexingRuleExemption" request + And request contains "metric_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 No Content + + @team:DataDog/metrics-experience + Scenario: Delete a tag indexing rule returns "Bad Request" response + Given a valid "appKeyAuth" key in the system + And new "DeleteTagIndexingRule" request + And request contains "id" parameter with value "not-a-valid-uuid" + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/metrics-experience + Scenario: Delete a tag indexing rule returns "No Content" response + Given a valid "appKeyAuth" key in the system + And there is a valid "tag_indexing_rule" in the system + And new "DeleteTagIndexingRule" request + And request contains "id" parameter from "tag_indexing_rule.data.id" + When the request is sent + Then the response status is 204 No Content + @generated @skip @team:DataDog/metrics-experience Scenario: Delete tags for multiple metrics returns "Accepted" response Given a valid "appKeyAuth" key in the system @@ -152,6 +219,55 @@ Feature: Metrics Then the response status is 200 Success And the response "data[0].type" is equal to "manage_tags" + @generated @skip @team:DataDog/metrics-experience + Scenario: Get a tag indexing rule exemption returns "Bad Request" response + Given a valid "appKeyAuth" key in the system + And new "GetTagIndexingRuleExemption" request + And request contains "metric_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/metrics-experience + Scenario: Get a tag indexing rule exemption returns "Not Found" response + Given a valid "appKeyAuth" key in the system + And new "GetTagIndexingRuleExemption" request + And request contains "metric_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/metrics-experience + Scenario: Get a tag indexing rule exemption returns "OK" response + Given a valid "appKeyAuth" key in the system + And new "GetTagIndexingRuleExemption" request + And request contains "metric_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @team:DataDog/metrics-experience + Scenario: Get a tag indexing rule returns "Bad Request" response + Given a valid "appKeyAuth" key in the system + And new "GetTagIndexingRule" request + And request contains "id" parameter with value "not-a-valid-uuid" + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/metrics-experience + Scenario: Get a tag indexing rule returns "Not Found" response + Given a valid "appKeyAuth" key in the system + And new "GetTagIndexingRule" request + And request contains "id" parameter with value "00000000-0000-0000-0000-000000000000" + When the request is sent + Then the response status is 404 Not Found + + @team:DataDog/metrics-experience + Scenario: Get a tag indexing rule returns "OK" response + Given a valid "appKeyAuth" key in the system + And there is a valid "tag_indexing_rule" in the system + And new "GetTagIndexingRule" request + And request contains "id" parameter from "tag_indexing_rule.data.id" + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/metrics-experience Scenario: Get tag key cardinality details returns "Bad Request" response Given a valid "appKeyAuth" key in the system @@ -249,6 +365,36 @@ Feature: Metrics Then the response status is 200 Success And the response "data.id" has the same value as "metric_tag_configuration.data.id" + @team:DataDog/metrics-experience + Scenario: List tag indexing rules for a metric returns "Bad Request" response + Given a valid "appKeyAuth" key in the system + And new "ListTagIndexingRulesForMetric" request + And request contains "metric_name" parameter with value "1invalid" + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/metrics-experience + Scenario: List tag indexing rules for a metric returns "OK" response + Given a valid "appKeyAuth" key in the system + And new "ListTagIndexingRulesForMetric" request + And request contains "metric_name" parameter with value "{{ unique_alnum }}" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/metrics-experience + Scenario: List tag indexing rules returns "Bad Request" response + Given a valid "appKeyAuth" key in the system + And new "ListTagIndexingRules" request + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/metrics-experience + Scenario: List tag indexing rules returns "OK" response + Given a valid "appKeyAuth" key in the system + And new "ListTagIndexingRules" request + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/metrics-experience Scenario: List tags by metric name returns "Bad Request" response Given a valid "appKeyAuth" key in the system @@ -326,6 +472,31 @@ Feature: Metrics And the response "data.type" is equal to "metrics" And the response "data.id" is equal to "system.cpu.user" + @team:DataDog/metrics-experience + Scenario: Reorder tag indexing rules returns "Bad Request" response + Given a valid "appKeyAuth" key in the system + And new "ReorderTagIndexingRules" request + And body with value {"data": {"attributes": {"rule_ids": []}, "type": "tag_indexing_rules"}} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/metrics-experience + Scenario: Reorder tag indexing rules returns "No Content" response + Given a valid "appKeyAuth" key in the system + And there is a valid "tag_indexing_rule" in the system + And new "ReorderTagIndexingRules" request + And body with value {"data": {"attributes": {"rule_ids": ["{{ tag_indexing_rule.data.id }}"]}, "type": "tag_indexing_rules"}} + When the request is sent + Then the response status is 204 No Content + + @team:DataDog/metrics-experience + Scenario: Reorder tag indexing rules returns "Not Found" response + Given a valid "appKeyAuth" key in the system + And new "ReorderTagIndexingRules" request + And body with value {"data": {"attributes": {"rule_ids": ["00000000-0000-0000-0000-000000000001", "00000000-0000-0000-0000-000000000002"]}, "type": "tag_indexing_rules"}} + When the request is sent + Then the response status is 404 Not Found + @team:Datadog/timeseries-query Scenario: Scalar cross product query returns "Bad Request" response Given a valid "appKeyAuth" key in the system @@ -786,3 +957,40 @@ Feature: Metrics And body with value {"data": {"attributes": {"group_by": ["app", "datacenter"], "include_percentiles": false}, "id": "http.endpoint.request", "type": "manage_tags"}} When the request is sent Then the response status is 422 Unprocessable Entity + + @team:DataDog/metrics-experience + Scenario: Update a tag indexing rule returns "Bad Request" response + Given a valid "appKeyAuth" key in the system + And new "UpdateTagIndexingRule" request + And request contains "id" parameter with value "not-a-valid-uuid" + And body with value {"data": {"attributes": {"ignored_metric_name_matches": [], "metric_name_matches": ["dd.test.*"], "name": "my-indexing-rule", "options": {"data": {"dynamic_tags": {"queried_tags_window_seconds": 3600, "related_asset_tags": false}, "manage_preexisting_metrics": true, "metric_match": {"queried_window_seconds": 3600}, "override_previous_rules": false}, "version": 1}, "rule_order": 2, "tags": ["env", "service"]}, "type": "tag_indexing_rules"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/metrics-experience + Scenario: Update a tag indexing rule returns "Conflict" response + Given a valid "appKeyAuth" key in the system + And new "UpdateTagIndexingRule" request + And request contains "id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"ignored_metric_name_matches": [], "metric_name_matches": ["dd.test.*"], "name": "my-indexing-rule", "options": {"data": {"dynamic_tags": {"queried_tags_window_seconds": 3600, "related_asset_tags": false}, "manage_preexisting_metrics": true, "metric_match": {"queried_window_seconds": 3600}, "override_previous_rules": false}, "version": 1}, "rule_order": 2, "tags": ["env", "service"]}, "type": "tag_indexing_rules"}} + When the request is sent + Then the response status is 409 Conflict + + @team:DataDog/metrics-experience + Scenario: Update a tag indexing rule returns "Not Found" response + Given a valid "appKeyAuth" key in the system + And new "UpdateTagIndexingRule" request + And request contains "id" parameter with value "00000000-0000-0000-0000-000000000000" + And body with value {"data": {"attributes": {"ignored_metric_name_matches": [], "metric_name_matches": ["dd.test.*"], "name": "my-indexing-rule", "options": {"data": {"dynamic_tags": {"queried_tags_window_seconds": 3600, "related_asset_tags": false}, "manage_preexisting_metrics": true, "metric_match": {"queried_window_seconds": 3600}, "override_previous_rules": false}, "version": 1}, "rule_order": 2, "tags": ["env", "service"]}, "type": "tag_indexing_rules"}} + When the request is sent + Then the response status is 404 Not Found + + @team:DataDog/metrics-experience + Scenario: Update a tag indexing rule returns "OK" response + Given a valid "appKeyAuth" key in the system + And there is a valid "tag_indexing_rule" in the system + And new "UpdateTagIndexingRule" request + And request contains "id" parameter from "tag_indexing_rule.data.id" + And body with value {"data": {"attributes": {"ignored_metric_name_matches": [], "metric_name_matches": ["dd.test.*"], "name": "my-indexing-rule", "options": {"data": {"dynamic_tags": {"queried_tags_window_seconds": 3600, "related_asset_tags": false}, "manage_preexisting_metrics": true, "metric_match": {"queried_window_seconds": 3600}, "override_previous_rules": false}, "version": 1}, "rule_order": 2, "tags": ["env", "service"]}, "type": "tag_indexing_rules"}} + When the request is sent + Then the response status is 200 OK diff --git a/tests/v2/features/microsoft_teams_integration.feature b/tests/v2/features/microsoft_teams_integration.feature index d76425d375..ddbffd9627 100644 --- a/tests/v2/features/microsoft_teams_integration.feature +++ b/tests/v2/features/microsoft_teams_integration.feature @@ -146,6 +146,27 @@ Feature: Microsoft Teams Integration When the request is sent Then the response status is 204 OK + @generated @skip @team:DataDog/chat-integrations + Scenario: Delete user binding returns "Bad Request" response + Given new "DeleteMSTeamsUserBinding" request + And request contains "tenant_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/chat-integrations + Scenario: Delete user binding returns "Failed Precondition" response + Given new "DeleteMSTeamsUserBinding" request + And request contains "tenant_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 412 Failed Precondition + + @generated @skip @team:DataDog/chat-integrations + Scenario: Delete user binding returns "No Content" response + Given new "DeleteMSTeamsUserBinding" request + And request contains "tenant_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 No Content + @team:DataDog/chat-integrations Scenario: Delete workflow webhook handle returns "OK" response Given there is a valid "workflows_webhook_handle" in the system diff --git a/tests/v2/features/network_health_insights.feature b/tests/v2/features/network_health_insights.feature new file mode 100644 index 0000000000..c5036b6af5 --- /dev/null +++ b/tests/v2/features/network_health_insights.feature @@ -0,0 +1,23 @@ +@endpoint(network-health-insights) @endpoint(network-health-insights-v2) +Feature: Network Health Insights + Analyze network health by surfacing actionable insights for services + experiencing connectivity issues. Insights are derived from DNS failure + data (timeouts, NXDOMAIN, SERVFAIL, general failures), TLS certificate + health (expired, expiring soon), and security group denials. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "NetworkHealthInsights" API + And operation "ListNetworkHealthInsights" enabled + And new "ListNetworkHealthInsights" request + + @generated @skip @team:DataDog/cloud-network-monitoring + Scenario: List network health insights returns "Bad Request" response + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/cloud-network-monitoring + Scenario: List network health insights returns "OK" response + When the request is sent + Then the response status is 200 OK diff --git a/tests/v2/features/organizations.feature b/tests/v2/features/organizations.feature index 01706fd558..a8ed63ab7e 100644 --- a/tests/v2/features/organizations.feature +++ b/tests/v2/features/organizations.feature @@ -61,6 +61,27 @@ Feature: Organizations When the request is sent Then the response status is 200 OK + @generated @skip @team:DataDog/delegated-auth-login + Scenario: List global orgs returns "Bad Request" response + Given new "ListGlobalOrgs" request + And request contains "user_handle" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/delegated-auth-login + Scenario: List global orgs returns "OK" response + Given new "ListGlobalOrgs" request + And request contains "user_handle" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/delegated-auth-login @with-pagination + Scenario: List global orgs returns "OK" response with pagination + Given new "ListGlobalOrgs" request + And request contains "user_handle" parameter from "REPLACE.ME" + When the request with pagination is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/org-management Scenario: List your managed organizations returns "OK" response Given new "ListOrgs" request @@ -147,6 +168,20 @@ Feature: Organizations When the request is sent Then the response status is 404 Not Found + @generated @skip @team:DataDog/delegated-auth-login + Scenario: Update the maximum session duration returns "Bad Request" response + Given new "UpdateLoginOrgConfigsMaxSessionDuration" request + And body with value {"data": {"attributes": {"max_session_duration": 604800}, "type": "max_session_duration"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/delegated-auth-login + Scenario: Update the maximum session duration returns "No Content" response + Given new "UpdateLoginOrgConfigsMaxSessionDuration" request + And body with value {"data": {"attributes": {"max_session_duration": 604800}, "type": "max_session_duration"}} + When the request is sent + Then the response status is 204 No Content + @skip-go @skip-java @skip-python @skip-ruby @skip-rust @skip-terraform-config @skip-typescript @skip-validation @team:DataDog/delegated-auth-login Scenario: Upload IdP metadata returns "Bad Request - caused by either malformed XML or invalid SAML IdP metadata" response Given new "UploadIdPMetadata" request diff --git a/tests/v2/features/report_schedules.feature b/tests/v2/features/report_schedules.feature new file mode 100644 index 0000000000..7d2ffafbc6 --- /dev/null +++ b/tests/v2/features/report_schedules.feature @@ -0,0 +1,61 @@ +@endpoint(report-schedules) @endpoint(report-schedules-v2) +Feature: Report Schedules + Create and manage scheduled reports. A scheduled report renders a + dashboard or integration dashboard on a recurring cadence and delivers it + to a set of recipients over email, Slack, or Microsoft Teams. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "ReportSchedules" API + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Create a report schedule returns "Bad Request" response + Given operation "CreateReportSchedule" enabled + And new "CreateReportSchedule" request + And body with value {"data": {"attributes": {"delivery_format": "pdf", "description": "Weekly summary of infrastructure health.", "recipients": ["user@example.com", "slack:T01234567.C01234567.alerts", "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2"], "resource_id": "abc-def-ghi", "resource_type": "dashboard", "rrule": "DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0", "tab_id": "66666666-7777-8888-9999-000000000000", "template_variables": [{"name": "env", "values": ["prod"]}], "timeframe": "calendar_month", "timezone": "America/New_York", "title": "Weekly Infrastructure Report"}, "type": "schedule"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Create a report schedule returns "CREATED" response + Given operation "CreateReportSchedule" enabled + And new "CreateReportSchedule" request + And body with value {"data": {"attributes": {"delivery_format": "pdf", "description": "Weekly summary of infrastructure health.", "recipients": ["user@example.com", "slack:T01234567.C01234567.alerts", "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2"], "resource_id": "abc-def-ghi", "resource_type": "dashboard", "rrule": "DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0", "tab_id": "66666666-7777-8888-9999-000000000000", "template_variables": [{"name": "env", "values": ["prod"]}], "timeframe": "calendar_month", "timezone": "America/New_York", "title": "Weekly Infrastructure Report"}, "type": "schedule"}} + When the request is sent + Then the response status is 201 CREATED + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Create a report schedule returns "Not Found" response + Given operation "CreateReportSchedule" enabled + And new "CreateReportSchedule" request + And body with value {"data": {"attributes": {"delivery_format": "pdf", "description": "Weekly summary of infrastructure health.", "recipients": ["user@example.com", "slack:T01234567.C01234567.alerts", "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2"], "resource_id": "abc-def-ghi", "resource_type": "dashboard", "rrule": "DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0", "tab_id": "66666666-7777-8888-9999-000000000000", "template_variables": [{"name": "env", "values": ["prod"]}], "timeframe": "calendar_month", "timezone": "America/New_York", "title": "Weekly Infrastructure Report"}, "type": "schedule"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Update a report schedule returns "Bad Request" response + Given operation "PatchReportSchedule" enabled + And new "PatchReportSchedule" request + And request contains "schedule_uuid" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"delivery_format": "pdf", "description": "Updated weekly summary of infrastructure health.", "recipients": ["user@example.com", "slack:T01234567.C01234567.alerts", "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2"], "rrule": "DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0", "tab_id": "66666666-7777-8888-9999-000000000000", "template_variables": [{"name": "env", "values": ["prod"]}], "timeframe": "calendar_month", "timezone": "America/New_York", "title": "Weekly Infrastructure Report"}, "type": "schedule"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Update a report schedule returns "Not Found" response + Given operation "PatchReportSchedule" enabled + And new "PatchReportSchedule" request + And request contains "schedule_uuid" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"delivery_format": "pdf", "description": "Updated weekly summary of infrastructure health.", "recipients": ["user@example.com", "slack:T01234567.C01234567.alerts", "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2"], "rrule": "DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0", "tab_id": "66666666-7777-8888-9999-000000000000", "template_variables": [{"name": "env", "values": ["prod"]}], "timeframe": "calendar_month", "timezone": "America/New_York", "title": "Weekly Infrastructure Report"}, "type": "schedule"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Update a report schedule returns "OK" response + Given operation "PatchReportSchedule" enabled + And new "PatchReportSchedule" request + And request contains "schedule_uuid" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"delivery_format": "pdf", "description": "Updated weekly summary of infrastructure health.", "recipients": ["user@example.com", "slack:T01234567.C01234567.alerts", "teams:11111111-1111-1111-1111-111111111111|22222222-2222-2222-2222-222222222222|19:exampleChannelId@thread.tacv2"], "rrule": "DTSTART;TZID=America/New_York:20260601T090000\nRRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0", "tab_id": "66666666-7777-8888-9999-000000000000", "template_variables": [{"name": "env", "values": ["prod"]}], "timeframe": "calendar_month", "timezone": "America/New_York", "title": "Weekly Infrastructure Report"}, "type": "schedule"}} + When the request is sent + Then the response status is 200 OK diff --git a/tests/v2/features/rum_hardcoded_retention_filters.feature b/tests/v2/features/rum_hardcoded_retention_filters.feature deleted file mode 100644 index 05e942989b..0000000000 --- a/tests/v2/features/rum_hardcoded_retention_filters.feature +++ /dev/null @@ -1,59 +0,0 @@ -@endpoint(rum-hardcoded-retention-filters) @endpoint(rum-hardcoded-retention-filters-v2) -Feature: RUM Retention Filters Hardcoded - Manage hardcoded retention filters through [Manage - Applications](https://app.datadoghq.com/rum/list) in RUM. - - Background: - Given a valid "apiKeyAuth" key in the system - And a valid "appKeyAuth" key in the system - And an instance of "RUMRetentionFiltersHardcoded" API - - @generated @skip @team:DataDog/rum-backend - Scenario: Get a hardcoded retention filter returns "Not Found" response - Given new "GetHardcodedRetentionFilter" request - And request contains "app_id" parameter with value "{{ unique }}" - And request contains "rf_id" parameter with value "{{ unique }}" - When the request is sent - Then the response status is 404 Not Found - - @generated @skip @team:DataDog/rum-backend - Scenario: Get a hardcoded retention filter returns "OK" response - Given new "GetHardcodedRetentionFilter" request - And request contains "app_id" parameter with value "{{ unique }}" - And request contains "rf_id" parameter with value "{{ unique }}" - When the request is sent - Then the response status is 200 OK - - @generated @skip @team:DataDog/rum-backend - Scenario: Get all hardcoded retention filters returns "OK" response - Given new "ListHardcodedRetentionFilters" request - And request contains "app_id" parameter with value "{{ unique }}" - When the request is sent - Then the response status is 200 OK - - @generated @skip @team:DataDog/rum-backend - Scenario: Update a hardcoded retention filter returns "Bad Request" response - Given new "UpdateHardcodedRetentionFilter" request - And request contains "app_id" parameter with value "{{ unique }}" - And request contains "rf_id" parameter with value "{{ unique }}" - And body with value {"data": {"id": "REPLACE.ME", "type": "hardcoded_retention_filters", "attributes": {"cross_product_sampling": {"session_replay_sample_rate": 50.0}}}} - When the request is sent - Then the response status is 400 Bad Request - - @generated @skip @team:DataDog/rum-backend - Scenario: Update a hardcoded retention filter returns "Not Found" response - Given new "UpdateHardcodedRetentionFilter" request - And request contains "app_id" parameter with value "{{ unique }}" - And request contains "rf_id" parameter with value "{{ unique }}" - And body with value {"data": {"id": "REPLACE.ME", "type": "hardcoded_retention_filters", "attributes": {"cross_product_sampling": {"session_replay_sample_rate": 50.0}}}} - When the request is sent - Then the response status is 404 Not Found - - @generated @skip @team:DataDog/rum-backend - Scenario: Update a hardcoded retention filter returns "Updated" response - Given new "UpdateHardcodedRetentionFilter" request - And request contains "app_id" parameter with value "{{ unique }}" - And request contains "rf_id" parameter with value "{{ unique }}" - And body with value {"data": {"id": "REPLACE.ME", "type": "hardcoded_retention_filters", "attributes": {"cross_product_sampling": {"session_replay_sample_rate": 50.0, "session_replay_enabled": true}}}} - When the request is sent - Then the response status is 200 OK diff --git a/tests/v2/features/rum_rate_limit.feature b/tests/v2/features/rum_rate_limit.feature new file mode 100644 index 0000000000..90869ed178 --- /dev/null +++ b/tests/v2/features/rum_rate_limit.feature @@ -0,0 +1,93 @@ +@endpoint(rum-rate-limit) @endpoint(rum-rate-limit-v2) +Feature: Rum Rate Limit + Manage RUM rate limit configurations for your organization's RUM + applications. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "RumRateLimit" API + + @generated @skip @team:DataDog/rum-backend + Scenario: Create or update a RUM rate limit configuration returns "Bad Request" response + Given operation "UpdateRumRateLimitConfig" enabled + And new "UpdateRumRateLimitConfig" request + And request contains "scope_type" parameter from "REPLACE.ME" + And request contains "scope_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"adaptive": {"max_retention_rate": 0.5}, "custom": {"daily_reset_time": "08:00", "daily_reset_timezone": "+09:00", "quota_reached_action": "stop", "session_limit": 1000000, "window_type": "daily"}, "mode": "custom"}, "id": "cd73a516-a481-4af5-8352-9b577465c77b", "type": "rum_rate_limit_config"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/rum-backend + Scenario: Create or update a RUM rate limit configuration returns "Not Found" response + Given operation "UpdateRumRateLimitConfig" enabled + And new "UpdateRumRateLimitConfig" request + And request contains "scope_type" parameter from "REPLACE.ME" + And request contains "scope_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"adaptive": {"max_retention_rate": 0.5}, "custom": {"daily_reset_time": "08:00", "daily_reset_timezone": "+09:00", "quota_reached_action": "stop", "session_limit": 1000000, "window_type": "daily"}, "mode": "custom"}, "id": "cd73a516-a481-4af5-8352-9b577465c77b", "type": "rum_rate_limit_config"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/rum-backend + Scenario: Create or update a RUM rate limit configuration returns "OK" response + Given operation "UpdateRumRateLimitConfig" enabled + And new "UpdateRumRateLimitConfig" request + And request contains "scope_type" parameter from "REPLACE.ME" + And request contains "scope_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"adaptive": {"max_retention_rate": 0.5}, "custom": {"daily_reset_time": "08:00", "daily_reset_timezone": "+09:00", "quota_reached_action": "stop", "session_limit": 1000000, "window_type": "daily"}, "mode": "custom"}, "id": "cd73a516-a481-4af5-8352-9b577465c77b", "type": "rum_rate_limit_config"}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/rum-backend + Scenario: Delete a RUM rate limit configuration returns "Bad Request" response + Given operation "DeleteRumRateLimitConfig" enabled + And new "DeleteRumRateLimitConfig" request + And request contains "scope_type" parameter from "REPLACE.ME" + And request contains "scope_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/rum-backend + Scenario: Delete a RUM rate limit configuration returns "No Content" response + Given operation "DeleteRumRateLimitConfig" enabled + And new "DeleteRumRateLimitConfig" request + And request contains "scope_type" parameter from "REPLACE.ME" + And request contains "scope_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 No Content + + @generated @skip @team:DataDog/rum-backend + Scenario: Delete a RUM rate limit configuration returns "Not Found" response + Given operation "DeleteRumRateLimitConfig" enabled + And new "DeleteRumRateLimitConfig" request + And request contains "scope_type" parameter from "REPLACE.ME" + And request contains "scope_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/rum-backend + Scenario: Get a RUM rate limit configuration returns "Bad Request" response + Given operation "GetRumRateLimitConfig" enabled + And new "GetRumRateLimitConfig" request + And request contains "scope_type" parameter from "REPLACE.ME" + And request contains "scope_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/rum-backend + Scenario: Get a RUM rate limit configuration returns "Not Found" response + Given operation "GetRumRateLimitConfig" enabled + And new "GetRumRateLimitConfig" request + And request contains "scope_type" parameter from "REPLACE.ME" + And request contains "scope_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/rum-backend + Scenario: Get a RUM rate limit configuration returns "OK" response + Given operation "GetRumRateLimitConfig" enabled + And new "GetRumRateLimitConfig" request + And request contains "scope_type" parameter from "REPLACE.ME" + And request contains "scope_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK diff --git a/tests/v2/features/rum_retention_filters_hardcoded.feature b/tests/v2/features/rum_retention_filters_hardcoded.feature deleted file mode 100644 index 2ce25e7a3a..0000000000 --- a/tests/v2/features/rum_retention_filters_hardcoded.feature +++ /dev/null @@ -1,59 +0,0 @@ -@endpoint(rum-retention-filters-hardcoded) @endpoint(rum-retention-filters-hardcoded-v2) -Feature: RUM Retention Filters Hardcoded - Manage hardcoded retention filters through [Manage - Applications](https://app.datadoghq.com/rum/list) in RUM. - - Background: - Given a valid "apiKeyAuth" key in the system - And a valid "appKeyAuth" key in the system - And an instance of "RUMRetentionFiltersHardcoded" API - - @generated @skip @team:DataDog/rum-backend - Scenario: Get a hardcoded retention filter returns "Not Found" response - Given new "GetHardcodedRetentionFilter" request - And request contains "app_id" parameter from "REPLACE.ME" - And request contains "rf_id" parameter from "REPLACE.ME" - When the request is sent - Then the response status is 404 Not Found - - @generated @skip @team:DataDog/rum-backend - Scenario: Get a hardcoded retention filter returns "OK" response - Given new "GetHardcodedRetentionFilter" request - And request contains "app_id" parameter from "REPLACE.ME" - And request contains "rf_id" parameter from "REPLACE.ME" - When the request is sent - Then the response status is 200 OK - - @generated @skip @team:DataDog/rum-backend - Scenario: Get all hardcoded retention filters returns "OK" response - Given new "ListHardcodedRetentionFilters" request - And request contains "app_id" parameter from "REPLACE.ME" - When the request is sent - Then the response status is 200 OK - - @generated @skip @team:DataDog/rum-backend - Scenario: Update a hardcoded retention filter returns "Bad Request" response - Given new "UpdateHardcodedRetentionFilter" request - And request contains "app_id" parameter from "REPLACE.ME" - And request contains "rf_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"cross_product_sampling": {"session_replay_enabled": true, "session_replay_sample_rate": 50.0, "trace_enabled": true, "trace_sample_rate": 25.0}}, "id": "forced_replay_sessions", "type": "hardcoded_retention_filters"}} - When the request is sent - Then the response status is 400 Bad Request - - @generated @skip @team:DataDog/rum-backend - Scenario: Update a hardcoded retention filter returns "Not Found" response - Given new "UpdateHardcodedRetentionFilter" request - And request contains "app_id" parameter from "REPLACE.ME" - And request contains "rf_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"cross_product_sampling": {"session_replay_enabled": true, "session_replay_sample_rate": 50.0, "trace_enabled": true, "trace_sample_rate": 25.0}}, "id": "forced_replay_sessions", "type": "hardcoded_retention_filters"}} - When the request is sent - Then the response status is 404 Not Found - - @generated @skip @team:DataDog/rum-backend - Scenario: Update a hardcoded retention filter returns "Updated" response - Given new "UpdateHardcodedRetentionFilter" request - And request contains "app_id" parameter from "REPLACE.ME" - And request contains "rf_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"cross_product_sampling": {"session_replay_enabled": true, "session_replay_sample_rate": 50.0, "trace_enabled": true, "trace_sample_rate": 25.0}}, "id": "forced_replay_sessions", "type": "hardcoded_retention_filters"}} - When the request is sent - Then the response status is 200 Updated diff --git a/tests/v2/features/security_monitoring.feature b/tests/v2/features/security_monitoring.feature index bae8918780..d6ec475edf 100644 --- a/tests/v2/features/security_monitoring.feature +++ b/tests/v2/features/security_monitoring.feature @@ -759,7 +759,7 @@ Feature: Security Monitoring @generated @skip @team:DataDog/cloud-security-posture-management Scenario: Create a new signal-based notification rule returns "Bad Request" response Given new "CreateSignalNotificationRule" request - And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400}, "type": "notification_rules"}} + And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "routing": {"mode": "manual"}, "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400}, "type": "notification_rules"}} When the request is sent Then the response status is 400 Bad Request @@ -773,7 +773,7 @@ Feature: Security Monitoring @generated @skip @team:DataDog/cloud-security-posture-management Scenario: Create a new vulnerability-based notification rule returns "Bad Request" response Given new "CreateVulnerabilityNotificationRule" request - And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400}, "type": "notification_rules"}} + And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "routing": {"mode": "manual"}, "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400}, "type": "notification_rules"}} When the request is sent Then the response status is 400 Bad Request @@ -1608,6 +1608,30 @@ Feature: Security Monitoring When the request is sent Then the response status is 200 OK + @generated @skip @team:DataDog/k9-cloud-siem + Scenario: Get a single entity context returns "Bad Request" response + Given operation "GetSingleEntityContext" enabled + And new "GetSingleEntityContext" request + And request contains "id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-cloud-siem + Scenario: Get a single entity context returns "Not Found" response + Given operation "GetSingleEntityContext" enabled + And new "GetSingleEntityContext" request + And request contains "id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/k9-cloud-siem + Scenario: Get a single entity context returns "OK" response + Given operation "GetSingleEntityContext" enabled + And new "GetSingleEntityContext" request + And request contains "id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + @skip-validation @team:DataDog/k9-cloud-siem Scenario: Get a suppression rule returns "Not Found" response Given new "GetSecurityMonitoringSuppression" request @@ -2470,7 +2494,7 @@ Feature: Security Monitoring Scenario: Patch a signal-based notification rule returns "The server cannot process the request because it contains invalid data." response Given new "PatchSignalNotificationRule" request And request contains "id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400, "version": 1}, "id": "aaa-bbb-ccc", "type": "notification_rules"}} + And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "routing": {"mode": "manual"}, "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400, "version": 1}, "id": "aaa-bbb-ccc", "type": "notification_rules"}} When the request is sent Then the response status is 422 The server cannot process the request because it contains invalid data. @@ -2504,10 +2528,52 @@ Feature: Security Monitoring Scenario: Patch a vulnerability-based notification rule returns "The server cannot process the request because it contains invalid data." response Given new "PatchVulnerabilityNotificationRule" request And request contains "id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400, "version": 1}, "id": "aaa-bbb-ccc", "type": "notification_rules"}} + And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "routing": {"mode": "manual"}, "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400, "version": 1}, "id": "aaa-bbb-ccc", "type": "notification_rules"}} When the request is sent Then the response status is 422 The server cannot process the request because it contains invalid data. + @generated @skip @team:DataDog/k9-cloud-siem + Scenario: Restore a rule to a historical version returns "Bad Request" response + Given operation "RestoreSecurityMonitoringRule" enabled + And new "RestoreSecurityMonitoringRule" request + And request contains "rule_id" parameter from "REPLACE.ME" + And request contains "version" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/k9-cloud-siem + Scenario: Restore a rule to a historical version returns "Conflict" response + Given operation "RestoreSecurityMonitoringRule" enabled + And there is a valid "security_rule" in the system + And there is a valid "security_rule_updated" in the system + And new "RestoreSecurityMonitoringRule" request + And request contains "rule_id" parameter from "security_rule.id" + And request contains "version" parameter with value 2 + When the request is sent + Then the response status is 409 Conflict + + @team:DataDog/k9-cloud-siem + Scenario: Restore a rule to a historical version returns "Not Found" response + Given operation "RestoreSecurityMonitoringRule" enabled + And there is a valid "security_rule" in the system + And new "RestoreSecurityMonitoringRule" request + And request contains "rule_id" parameter from "security_rule.id" + And request contains "version" parameter with value 9999 + When the request is sent + Then the response status is 404 Not Found + + @skip-validation @team:DataDog/k9-cloud-siem + Scenario: Restore a rule to a historical version returns "OK" response + Given operation "RestoreSecurityMonitoringRule" enabled + And there is a valid "security_rule" in the system + And there is a valid "security_rule_updated" in the system + And new "RestoreSecurityMonitoringRule" request + And request contains "rule_id" parameter from "security_rule.id" + And request contains "version" parameter with value 1 + When the request is sent + Then the response status is 200 OK + And the response "id" has the same value as "security_rule.id" + @generated @skip @team:DataDog/k9-vm-ast Scenario: Returns a list of Secrets rules returns "OK" response Given operation "GetSecretsRules" enabled @@ -2611,6 +2677,20 @@ Feature: Security Monitoring When the request is sent Then the response status is 200 OK + @generated @skip @team:DataDog/k9-cloud-siem + Scenario: Test a notification rule returns "Bad Request" response + Given new "SendSecurityMonitoringNotificationPreview" request + And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "routing": {"mode": "manual"}, "selectors": {"query": "(source:production_service OR env:prod)", "rule_types": ["misconfiguration", "attack_path"], "severities": ["critical"], "trigger_source": "security_findings"}, "targets": ["@john.doe@email.com"], "time_aggregation": 86400}, "type": "notification_rules"}} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/k9-cloud-siem + Scenario: Test a notification rule returns "OK" response + Given new "SendSecurityMonitoringNotificationPreview" request + And body with value {"data": {"attributes": {"enabled": true, "name": "Rule 1", "selectors": {"query": "env:prod", "rule_types": ["log_detection"], "severities": ["critical"], "trigger_source": "security_signals"}, "targets": ["@john.doe@email.com"]}, "type": "notification_rules"}} + When the request is sent + Then the response status is 200 OK + @skip @team:DataDog/k9-cloud-siem Scenario: Test a rule returns "Bad Request" response Given new "TestSecurityMonitoringRule" request diff --git a/tests/v2/features/slack_integration.feature b/tests/v2/features/slack_integration.feature new file mode 100644 index 0000000000..0ef645a642 --- /dev/null +++ b/tests/v2/features/slack_integration.feature @@ -0,0 +1,23 @@ +@endpoint(slack-integration) @endpoint(slack-integration-v2) +Feature: Slack Integration + Configure your [Datadog Slack + integration](https://docs.datadoghq.com/integrations/slack/) directly + through the Datadog API. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "SlackIntegration" API + And new "ListSlackUserBindings" request + + @generated @skip @team:DataDog/chat-integrations + Scenario: List Slack user bindings returns "Bad Request" response + Given request contains "user_uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/chat-integrations + Scenario: List Slack user bindings returns "OK" response + Given request contains "user_uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK diff --git a/tests/v2/features/tag_policies.feature b/tests/v2/features/tag_policies.feature new file mode 100644 index 0000000000..b5d064c202 --- /dev/null +++ b/tests/v2/features/tag_policies.feature @@ -0,0 +1,150 @@ +@endpoint(tag-policies) @endpoint(tag-policies-v2) +Feature: Tag Policies + Tag Policies define rules that govern which tag values are accepted for a + given tag key, scoped to a particular telemetry source (such as logs, + spans, or metrics). Policies can be `blocking` (data not matching the + policy is rejected) or `surfacing` (matching data is highlighted but not + blocked). Each policy reports a compliance `score` derived from how much + recent telemetry adheres to the policy. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "TagPolicies" API + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Create a tag policy returns "Bad Request" response + Given operation "CreateTagPolicy" enabled + And new "CreateTagPolicy" request + And body with value {"data": {"attributes": {"enabled": true, "negated": false, "policy_name": "Service tag must be one of api or web", "policy_type": "surfacing", "required": true, "scope": "env", "source": "logs", "tag_key": "service", "tag_value_patterns": ["api", "web"]}, "type": "tag_policy"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Create a tag policy returns "Conflict" response + Given operation "CreateTagPolicy" enabled + And new "CreateTagPolicy" request + And body with value {"data": {"attributes": {"enabled": true, "negated": false, "policy_name": "Service tag must be one of api or web", "policy_type": "surfacing", "required": true, "scope": "env", "source": "logs", "tag_key": "service", "tag_value_patterns": ["api", "web"]}, "type": "tag_policy"}} + When the request is sent + Then the response status is 409 Conflict + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Create a tag policy returns "Created" response + Given operation "CreateTagPolicy" enabled + And new "CreateTagPolicy" request + And body with value {"data": {"attributes": {"enabled": true, "negated": false, "policy_name": "Service tag must be one of api or web", "policy_type": "surfacing", "required": true, "scope": "env", "source": "logs", "tag_key": "service", "tag_value_patterns": ["api", "web"]}, "type": "tag_policy"}} + When the request is sent + Then the response status is 201 Created + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Delete a tag policy returns "Bad Request" response + Given operation "DeleteTagPolicy" enabled + And new "DeleteTagPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Delete a tag policy returns "No Content" response + Given operation "DeleteTagPolicy" enabled + And new "DeleteTagPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 No Content + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Delete a tag policy returns "Not Found" response + Given operation "DeleteTagPolicy" enabled + And new "DeleteTagPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Get a tag policy compliance score returns "Bad Request" response + Given operation "GetTagPolicyScore" enabled + And new "GetTagPolicyScore" request + And request contains "policy_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Get a tag policy compliance score returns "Not Found" response + Given operation "GetTagPolicyScore" enabled + And new "GetTagPolicyScore" request + And request contains "policy_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Get a tag policy compliance score returns "OK" response + Given operation "GetTagPolicyScore" enabled + And new "GetTagPolicyScore" request + And request contains "policy_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Get a tag policy returns "Bad Request" response + Given operation "GetTagPolicy" enabled + And new "GetTagPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Get a tag policy returns "Not Found" response + Given operation "GetTagPolicy" enabled + And new "GetTagPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Get a tag policy returns "OK" response + Given operation "GetTagPolicy" enabled + And new "GetTagPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: List tag policies returns "Bad Request" response + Given operation "ListTagPolicies" enabled + And new "ListTagPolicies" request + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: List tag policies returns "OK" response + Given operation "ListTagPolicies" enabled + And new "ListTagPolicies" request + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Update a tag policy returns "Bad Request" response + Given operation "UpdateTagPolicy" enabled + And new "UpdateTagPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"policy_type": "surfacing", "tag_value_patterns": []}, "id": "123", "type": "tag_policy"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Update a tag policy returns "Not Found" response + Given operation "UpdateTagPolicy" enabled + And new "UpdateTagPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"policy_type": "surfacing", "tag_value_patterns": []}, "id": "123", "type": "tag_policy"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/aaa-governance-console + Scenario: Update a tag policy returns "OK" response + Given operation "UpdateTagPolicy" enabled + And new "UpdateTagPolicy" request + And request contains "policy_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"policy_type": "surfacing", "tag_value_patterns": []}, "id": "123", "type": "tag_policy"}} + When the request is sent + Then the response status is 200 OK diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index bf8c214ece..e947f19f57 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -23,18 +23,6 @@ "type": "safe" } }, - "ListFleetClusters": { - "tag": "Fleet Automation", - "undo": { - "type": "safe" - } - }, - "ListFleetInstrumentedPods": { - "tag": "Fleet Automation", - "undo": { - "type": "safe" - } - }, "ListFleetDeployments": { "tag": "Fleet Automation", "undo": { @@ -2031,6 +2019,78 @@ "type": "safe" } }, + "ListOwnershipInferences": { + "tag": "CSM Ownership", + "undo": { + "type": "safe" + } + }, + "ListOwnershipHistory": { + "tag": "CSM Ownership", + "undo": { + "type": "safe" + } + }, + "GetOwnershipInference": { + "tag": "CSM Ownership", + "undo": { + "type": "safe" + } + }, + "GetOwnershipEvidence": { + "tag": "CSM Ownership", + "undo": { + "type": "safe" + } + }, + "CreateOwnershipFeedback": { + "tag": "CSM Ownership", + "undo": { + "type": "idempotent" + } + }, + "ListOwnershipHistoryByOwnerType": { + "tag": "CSM Ownership", + "undo": { + "type": "safe" + } + }, + "ListCSMAgentlessHosts": { + "tag": "CSM Settings", + "undo": { + "type": "safe" + } + }, + "GetCSMAgentlessHostFacetInfo": { + "tag": "CSM Settings", + "undo": { + "type": "safe" + } + }, + "ListCSMAgentlessHostFacets": { + "tag": "CSM Settings", + "undo": { + "type": "safe" + } + }, + "ListCSMUnifiedHosts": { + "tag": "CSM Settings", + "undo": { + "type": "safe" + } + }, + "GetCSMUnifiedHostFacetInfo": { + "tag": "CSM Settings", + "undo": { + "type": "safe" + } + }, + "ListCSMUnifiedHostFacets": { + "tag": "CSM Settings", + "undo": { + "type": "safe" + } + }, "GetCurrentUser": { "tag": "Users", "undo": { @@ -2105,6 +2165,12 @@ "type": "safe" } }, + "ListSharedDashboardsByDashboardId": { + "tag": "Dashboard Sharing", + "undo": { + "type": "safe" + } + }, "CreateDashboardSecureEmbed": { "tag": "Dashboard Secure Embed", "undo": { @@ -2609,6 +2675,93 @@ "type": "unsafe" } }, + "ListForms": { + "tag": "Forms", + "undo": { + "type": "safe" + } + }, + "CreateForm": { + "tag": "Forms", + "undo": { + "operationId": "DeleteForm", + "parameters": [ + { + "name": "form_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "CreateAndPublishForm": { + "tag": "Forms", + "undo": { + "operationId": "DeleteForm", + "parameters": [ + { + "name": "form_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "DeleteForm": { + "tag": "Forms", + "undo": { + "type": "idempotent" + } + }, + "GetForm": { + "tag": "Forms", + "undo": { + "type": "safe" + } + }, + "UpdateForm": { + "tag": "Forms", + "undo": { + "type": "idempotent" + } + }, + "CloneForm": { + "tag": "Forms", + "undo": { + "operationId": "DeleteForm", + "parameters": [ + { + "name": "form_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "PublishForm": { + "tag": "Forms", + "undo": { + "type": "idempotent" + } + }, + "UpsertFormVersion": { + "tag": "Forms", + "undo": { + "type": "idempotent" + } + }, + "UpsertAndPublishFormVersion": { + "tag": "Forms", + "undo": { + "type": "idempotent" + } + }, + "ListGlobalOrgs": { + "tag": "Organizations", + "undo": { + "type": "safe" + } + }, "GetHamrOrgConnection": { "tag": "High Availability MultiRegion", "undo": { @@ -3193,6 +3346,12 @@ "type": "safe" } }, + "ValidateAWSCCMConfig": { + "tag": "AWS Integration", + "undo": { + "type": "safe" + } + }, "ListGCPSTSAccounts": { "tag": "GCP Integration", "undo": { @@ -3236,12 +3395,42 @@ "type": "idempotent" } }, + "ListGoogleChatOrganizations": { + "tag": "Google Chat Integration", + "undo": { + "type": "safe" + } + }, "GetSpaceByDisplayName": { "tag": "Google Chat Integration", "undo": { "type": "safe" } }, + "DeleteGoogleChatOrganization": { + "tag": "Google Chat Integration", + "undo": { + "type": "idempotent" + } + }, + "GetGoogleChatOrganization": { + "tag": "Google Chat Integration", + "undo": { + "type": "safe" + } + }, + "DeleteGoogleChatDelegatedUser": { + "tag": "Google Chat Integration", + "undo": { + "type": "idempotent" + } + }, + "GetGoogleChatDelegatedUser": { + "tag": "Google Chat Integration", + "undo": { + "type": "safe" + } + }, "ListOrganizationHandles": { "tag": "Google Chat Integration", "undo": { @@ -3284,6 +3473,48 @@ "type": "idempotent" } }, + "ListGoogleChatTargetAudiences": { + "tag": "Google Chat Integration", + "undo": { + "type": "safe" + } + }, + "CreateGoogleChatTargetAudience": { + "tag": "Google Chat Integration", + "undo": { + "operationId": "DeleteGoogleChatTargetAudience", + "parameters": [ + { + "name": "organization_binding_id", + "origin": "path", + "source": "organization_binding_id" + }, + { + "name": "target_audience_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "DeleteGoogleChatTargetAudience": { + "tag": "Google Chat Integration", + "undo": { + "type": "idempotent" + } + }, + "GetGoogleChatTargetAudience": { + "tag": "Google Chat Integration", + "undo": { + "type": "safe" + } + }, + "UpdateGoogleChatTargetAudience": { + "tag": "Google Chat Integration", + "undo": { + "type": "idempotent" + } + }, "ListJiraAccounts": { "tag": "Jira Integration", "undo": { @@ -3376,6 +3607,12 @@ "type": "idempotent" } }, + "DeleteMSTeamsUserBinding": { + "tag": "Microsoft Teams Integration", + "undo": { + "type": "idempotent" + } + }, "ListWorkflowsWebhookHandles": { "tag": "Microsoft Teams Integration", "undo": { @@ -3628,6 +3865,12 @@ "type": "safe" } }, + "ListSlackUserBindings": { + "tag": "Slack Integration", + "undo": { + "type": "safe" + } + }, "DeleteStatuspageAccount": { "tag": "Statuspage Integration", "undo": { @@ -4005,6 +4248,29 @@ "type": "safe" } }, + "UpsertLLMObsAnnotations": { + "tag": "LLM Observability", + "undo": { + "operationId": "DeleteLLMObsAnnotations", + "parameters": [ + { + "name": "queue_id", + "source": "path.queue_id" + }, + { + "name": "body", + "template": "{\"data\": {\"type\": \"annotations\", \"attributes\": {\"annotation_ids\": [\"{{ data.attributes.annotations[0].id }}\"]}}}" + } + ], + "type": "unsafe" + } + }, + "DeleteLLMObsAnnotations": { + "tag": "LLM Observability", + "undo": { + "type": "idempotent" + } + }, "CreateLLMObsAnnotationQueueInteractions": { "tag": "LLM Observability", "undo": { @@ -4161,6 +4427,68 @@ "type": "safe" } }, + "ListLLMObsPatternsClusteredPoints": { + "tag": "LLM Observability", + "undo": { + "type": "safe" + } + }, + "ListLLMObsPatternsConfigs": { + "tag": "LLM Observability", + "undo": { + "type": "safe" + } + }, + "UpsertLLMObsPatternsConfig": { + "tag": "LLM Observability", + "undo": { + "type": "idempotent" + } + }, + "GetLLMObsPatternsConfig": { + "tag": "LLM Observability", + "undo": { + "type": "safe" + } + }, + "DeleteLLMObsPatternsConfig": { + "tag": "LLM Observability", + "undo": { + "type": "idempotent" + } + }, + "ListLLMObsPatternsRuns": { + "tag": "LLM Observability", + "undo": { + "type": "safe" + } + }, + "TriggerLLMObsPatterns": { + "tag": "LLM Observability", + "undo": { + "operationId": "TODO", + "parameters": [], + "type": "unsafe" + } + }, + "GetLLMObsPatternsRunStatus": { + "tag": "LLM Observability", + "undo": { + "type": "safe" + } + }, + "ListLLMObsPatternsTopics": { + "tag": "LLM Observability", + "undo": { + "type": "safe" + } + }, + "ListLLMObsPatternsTopicsWithClusteredPoints": { + "tag": "LLM Observability", + "undo": { + "type": "safe" + } + }, "ListLLMObsDatasets": { "tag": "LLM Observability", "undo": { @@ -4294,6 +4622,12 @@ "type": "safe" } }, + "UpdateLoginOrgConfigsMaxSessionDuration": { + "tag": "Organizations", + "undo": { + "type": "idempotent" + } + }, "SubmitLog": { "tag": "Logs", "undo": { @@ -4588,6 +4922,49 @@ "type": "unsafe" } }, + "ListTagIndexingRules": { + "tag": "Metrics", + "undo": { + "type": "safe" + } + }, + "CreateTagIndexingRule": { + "tag": "Metrics", + "undo": { + "operationId": "DeleteTagIndexingRule", + "parameters": [ + { + "name": "id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "ReorderTagIndexingRules": { + "tag": "Metrics", + "undo": { + "type": "idempotent" + } + }, + "DeleteTagIndexingRule": { + "tag": "Metrics", + "undo": { + "type": "idempotent" + } + }, + "GetTagIndexingRule": { + "tag": "Metrics", + "undo": { + "type": "safe" + } + }, + "UpdateTagIndexingRule": { + "tag": "Metrics", + "undo": { + "type": "idempotent" + } + }, "ListActiveMetricConfigurations": { "tag": "Metrics", "undo": { @@ -4618,6 +4995,37 @@ "type": "safe" } }, + "DeleteTagIndexingRuleExemption": { + "tag": "Metrics", + "undo": { + "type": "idempotent" + } + }, + "GetTagIndexingRuleExemption": { + "tag": "Metrics", + "undo": { + "type": "safe" + } + }, + "CreateTagIndexingRuleExemption": { + "tag": "Metrics", + "undo": { + "operationId": "DeleteTagIndexingRuleExemption", + "parameters": [ + { + "name": "metric_name", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "ListTagIndexingRulesForMetric": { + "tag": "Metrics", + "undo": { + "type": "safe" + } + }, "DeleteTagConfiguration": { "tag": "Metrics", "undo": { @@ -4938,6 +5346,12 @@ "type": "idempotent" } }, + "ListNetworkHealthInsights": { + "tag": "Network Health Insights", + "undo": { + "type": "safe" + } + }, "GetAggregatedConnections": { "tag": "Cloud Network Monitoring", "undo": { @@ -5919,6 +6333,19 @@ "type": "idempotent" } }, + "CreateReportSchedule": { + "tag": "Report Schedules", + "undo": { + "type": "unsafe" + } + }, + "PatchReportSchedule": { + "tag": "Report Schedules", + "undo": { + "operationId": "PatchReportSchedule", + "type": "idempotent" + } + }, "DeleteRestrictionPolicy": { "tag": "Restriction Policies", "undo": { @@ -6054,24 +6481,6 @@ "type": "unsafe" } }, - "ListHardcodedRetentionFilters": { - "tag": "RUM Retention Filters Hardcoded", - "undo": { - "type": "safe" - } - }, - "GetHardcodedRetentionFilter": { - "tag": "RUM Retention Filters Hardcoded", - "undo": { - "type": "safe" - } - }, - "UpdateHardcodedRetentionFilter": { - "tag": "RUM Retention Filters Hardcoded", - "undo": { - "type": "idempotent" - } - }, "OrderRetentionFilters": { "tag": "Rum Retention Filters", "undo": { @@ -6181,6 +6590,24 @@ "type": "idempotent" } }, + "DeleteRumRateLimitConfig": { + "tag": "Rum Rate Limit", + "undo": { + "type": "idempotent" + } + }, + "GetRumRateLimitConfig": { + "tag": "Rum Rate Limit", + "undo": { + "type": "safe" + } + }, + "UpdateRumRateLimitConfig": { + "tag": "Rum Rate Limit", + "undo": { + "type": "idempotent" + } + }, "ListRUMEvents": { "tag": "RUM", "undo": { @@ -6800,6 +7227,12 @@ "type": "safe" } }, + "SendSecurityMonitoringNotificationPreview": { + "tag": "Security Monitoring", + "undo": { + "type": "safe" + } + }, "ListSecurityFilters": { "tag": "Security Monitoring", "undo": { @@ -6983,6 +7416,12 @@ "type": "safe" } }, + "GetSingleEntityContext": { + "tag": "Security Monitoring", + "undo": { + "type": "safe" + } + }, "ListSecurityMonitoringRules": { "tag": "Security Monitoring", "undo": { @@ -7062,6 +7501,12 @@ "type": "idempotent" } }, + "RestoreSecurityMonitoringRule": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, "TestExistingSecurityMonitoringRule": { "tag": "Security Monitoring", "undo": { @@ -7379,25 +7824,6 @@ "type": "idempotent" } }, - "ListIncidentServices": { - "tag": "Incident Services", - "undo": { - "type": "safe" - } - }, - "CreateIncidentService": { - "tag": "Incident Services", - "undo": { - "operationId": "DeleteIncidentService", - "parameters": [ - { - "name": "service_id", - "source": "data.id" - } - ], - "type": "unsafe" - } - }, "ListServiceDefinitions": { "tag": "Service Definition", "undo": { @@ -7429,24 +7855,6 @@ "type": "safe" } }, - "DeleteIncidentService": { - "tag": "Incident Services", - "undo": { - "type": "idempotent" - } - }, - "GetIncidentService": { - "tag": "Incident Services", - "undo": { - "type": "safe" - } - }, - "UpdateIncidentService": { - "tag": "Incident Services", - "undo": { - "type": "idempotent" - } - }, "ListSecurityMonitoringHistsignals": { "tag": "Security Monitoring", "undo": { @@ -8247,6 +8655,49 @@ "type": "safe" } }, + "ListTagPolicies": { + "tag": "Tag Policies", + "undo": { + "type": "safe" + } + }, + "CreateTagPolicy": { + "tag": "Tag Policies", + "undo": { + "operationId": "DeleteTagPolicy", + "parameters": [ + { + "name": "policy_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "DeleteTagPolicy": { + "tag": "Tag Policies", + "undo": { + "type": "idempotent" + } + }, + "GetTagPolicy": { + "tag": "Tag Policies", + "undo": { + "type": "safe" + } + }, + "UpdateTagPolicy": { + "tag": "Tag Policies", + "undo": { + "type": "idempotent" + } + }, + "GetTagPolicyScore": { + "tag": "Tag Policies", + "undo": { + "type": "safe" + } + }, "ListTagPipelinesRulesets": { "tag": "Cloud Cost Management", "undo": {