From ea3b5baf820473d7b9bf76befe3727c9e4634d45 Mon Sep 17 00:00:00 2001 From: "api-clients-generation-pipeline[bot]" <54105614+api-clients-generation-pipeline[bot]@users.noreply.github.com> Date: Thu, 11 Dec 2025 20:17:38 +0000 Subject: [PATCH] Add host field to Post an event V2 API (#2826) Co-authored-by: ci.datadog-api-spec --- .generator/schemas/v2/openapi.yaml | 8 ++++++ ...-event-returns-Bad-request-response.frozen | 2 +- ...-an-event-returns-Bad-request-response.yml | 4 +-- .../Post-an-event-returns-OK-response.frozen | 2 +- .../Post-an-event-returns-OK-response.yml | 6 ++--- examples/v2/events/CreateEvent.rb | 1 + features/v2/events.feature | 4 +-- .../v2/models/event_payload.rb | 27 ++++++++++++++++++- 8 files changed, 44 insertions(+), 10 deletions(-) diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 7c9668ae428..82b87c5b71c 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -20306,6 +20306,13 @@ components: $ref: '#/components/schemas/EventPayloadAttributes' category: $ref: '#/components/schemas/EventCategory' + host: + description: Host name to associate with the event. Any tags associated + with the host are also applied to this event. Limited to 255 characters. + example: hostname + maxLength: 255 + minLength: 1 + type: string integration_id: $ref: '#/components/schemas/EventPayloadIntegrationId' message: @@ -67866,6 +67873,7 @@ paths: rule: datacenter: devcycle.us1.prod category: change + host: hostname integration_id: custom-events message: payment_processed feature flag has been enabled tags: diff --git a/cassettes/features/v2/events/Post-an-event-returns-Bad-request-response.frozen b/cassettes/features/v2/events/Post-an-event-returns-Bad-request-response.frozen index a1cd4e8e4ac..a69ab24497f 100644 --- a/cassettes/features/v2/events/Post-an-event-returns-Bad-request-response.frozen +++ b/cassettes/features/v2/events/Post-an-event-returns-Bad-request-response.frozen @@ -1 +1 @@ -2025-06-10T15:38:58.529Z \ No newline at end of file +2025-12-10T21:31:06.468Z \ No newline at end of file diff --git a/cassettes/features/v2/events/Post-an-event-returns-Bad-request-response.yml b/cassettes/features/v2/events/Post-an-event-returns-Bad-request-response.yml index b5aac5f8d28..22954b69258 100644 --- a/cassettes/features/v2/events/Post-an-event-returns-Bad-request-response.yml +++ b/cassettes/features/v2/events/Post-an-event-returns-Bad-request-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Tue, 10 Jun 2025 15:38:58 GMT +- recorded_at: Wed, 10 Dec 2025 21:31:06 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"aggregation_key":"aggregation_key_123","attributes":{"author":{"name":"example@datadog.com","type":"user"},"change_metadata":{"dd":{"team":"datadog_team","user_email":"datadog@datadog.com","user_id":"datadog_user_id","user_name":"datadog_username"},"resource_link":"datadog.com/feature/fallback_payments_test"},"changed_resource":{"name":"fallback_payments_test","type":"feature_flag"},"impacted_resources":[{"name":"payments_api","type":"service"}],"new_value":{"enabled":true,"percentage":"50%","rule":{"datacenter":"devcycle.us1.prod"}},"prev_value":{"enabled":true,"percentage":"10%","rule":{"datacenter":"devcycle.us1.prod"}}},"category":"invalid","integration_id":"custom-events","message":"payment_processed + string: '{"data":{"attributes":{"aggregation_key":"aggregation_key_123","attributes":{"author":{"name":"example@datadog.com","type":"user"},"change_metadata":{"dd":{"team":"datadog_team","user_email":"datadog@datadog.com","user_id":"datadog_user_id","user_name":"datadog_username"},"resource_link":"datadog.com/feature/fallback_payments_test"},"changed_resource":{"name":"fallback_payments_test","type":"feature_flag"},"impacted_resources":[{"name":"payments_api","type":"service"}],"new_value":{"enabled":true,"percentage":"50%","rule":{"datacenter":"devcycle.us1.prod"}},"prev_value":{"enabled":true,"percentage":"10%","rule":{"datacenter":"devcycle.us1.prod"}}},"category":"invalid","host":"test-host","integration_id":"custom-events","message":"payment_processed feature flag has been enabled","tags":["env:api_client_test"],"title":"payment_processed feature flag updated"},"type":"event"}}' headers: diff --git a/cassettes/features/v2/events/Post-an-event-returns-OK-response.frozen b/cassettes/features/v2/events/Post-an-event-returns-OK-response.frozen index 42309286e25..36850703b78 100644 --- a/cassettes/features/v2/events/Post-an-event-returns-OK-response.frozen +++ b/cassettes/features/v2/events/Post-an-event-returns-OK-response.frozen @@ -1 +1 @@ -2025-06-10T15:38:58.954Z \ No newline at end of file +2025-12-10T21:30:25.683Z \ No newline at end of file diff --git a/cassettes/features/v2/events/Post-an-event-returns-OK-response.yml b/cassettes/features/v2/events/Post-an-event-returns-OK-response.yml index eb908711b84..a49f5a38468 100644 --- a/cassettes/features/v2/events/Post-an-event-returns-OK-response.yml +++ b/cassettes/features/v2/events/Post-an-event-returns-OK-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Tue, 10 Jun 2025 15:38:58 GMT +- recorded_at: Wed, 10 Dec 2025 21:30:25 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"aggregation_key":"aggregation_key_123","attributes":{"author":{"name":"example@datadog.com","type":"user"},"change_metadata":{"dd":{"team":"datadog_team","user_email":"datadog@datadog.com","user_id":"datadog_user_id","user_name":"datadog_username"},"resource_link":"datadog.com/feature/fallback_payments_test"},"changed_resource":{"name":"fallback_payments_test","type":"feature_flag"},"impacted_resources":[{"name":"payments_api","type":"service"}],"new_value":{"enabled":true,"percentage":"50%","rule":{"datacenter":"devcycle.us1.prod"}},"prev_value":{"enabled":true,"percentage":"10%","rule":{"datacenter":"devcycle.us1.prod"}}},"category":"change","integration_id":"custom-events","message":"payment_processed + string: '{"data":{"attributes":{"aggregation_key":"aggregation_key_123","attributes":{"author":{"name":"example@datadog.com","type":"user"},"change_metadata":{"dd":{"team":"datadog_team","user_email":"datadog@datadog.com","user_id":"datadog_user_id","user_name":"datadog_username"},"resource_link":"datadog.com/feature/fallback_payments_test"},"changed_resource":{"name":"fallback_payments_test","type":"feature_flag"},"impacted_resources":[{"name":"payments_api","type":"service"}],"new_value":{"enabled":true,"percentage":"50%","rule":{"datacenter":"devcycle.us1.prod"}},"prev_value":{"enabled":true,"percentage":"10%","rule":{"datacenter":"devcycle.us1.prod"}}},"category":"change","host":"test-host","integration_id":"custom-events","message":"payment_processed feature flag has been enabled","tags":["env:api_client_test"],"title":"payment_processed feature flag updated"},"type":"event"}}' headers: @@ -16,7 +16,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"attributes":{"attributes":{"evt":{"uid":"AZdafqaTAACKG_iMQ82pmAAA"}}},"id":"_","type":"event"},"links":{"self":"https://app.datadoghq.com/event/event?uid=AZdafqaTAACKG_iMQ82pmAAA"}}' + string: '{"data":{"attributes":{"attributes":{"evt":{"id":"8407723285051133019","uid":"AZsKLCxvAACrUQTfNDwMWwAA"}}},"id":"_","type":"event"},"links":{"self":"https://app.datadoghq.com/event/event?uid=AZsKLCxvAACrUQTfNDwMWwAA"}}' headers: Content-Type: - application/json diff --git a/examples/v2/events/CreateEvent.rb b/examples/v2/events/CreateEvent.rb index 4352e1601e4..3b214d3b03c 100644 --- a/examples/v2/events/CreateEvent.rb +++ b/examples/v2/events/CreateEvent.rb @@ -34,6 +34,7 @@ }), category: DatadogAPIClient::V2::EventCategory::CHANGE, integration_id: DatadogAPIClient::V2::EventPayloadIntegrationId::CUSTOM_EVENTS, + host: "test-host", message: "payment_processed feature flag has been enabled", tags: [ "env:api_client_test", diff --git a/features/v2/events.feature b/features/v2/events.feature index 61d824ce108..5beda13d5e3 100644 --- a/features/v2/events.feature +++ b/features/v2/events.feature @@ -74,14 +74,14 @@ Feature: Events @team:DataDog/event-management Scenario: Post an event returns "Bad request" response Given new "CreateEvent" request - And body with value {"data": {"attributes": {"aggregation_key": "aggregation_key_123", "attributes": {"author": {"name": "example@datadog.com", "type": "user"}, "change_metadata": {"dd": {"team": "datadog_team", "user_email": "datadog@datadog.com", "user_id": "datadog_user_id", "user_name": "datadog_username"}, "resource_link": "datadog.com/feature/fallback_payments_test"}, "changed_resource": {"name": "fallback_payments_test", "type": "feature_flag"}, "impacted_resources": [{"name": "payments_api", "type": "service"}], "new_value": {"enabled": true, "percentage": "50%", "rule": {"datacenter": "devcycle.us1.prod"}}, "prev_value": {"enabled": true, "percentage": "10%", "rule": {"datacenter": "devcycle.us1.prod"}}}, "category": "invalid", "integration_id": "custom-events", "message": "payment_processed feature flag has been enabled", "tags": ["env:api_client_test"], "title": "payment_processed feature flag updated"}, "type": "event"}} + And body with value {"data": {"attributes": {"aggregation_key": "aggregation_key_123", "attributes": {"author": {"name": "example@datadog.com", "type": "user"}, "change_metadata": {"dd": {"team": "datadog_team", "user_email": "datadog@datadog.com", "user_id": "datadog_user_id", "user_name": "datadog_username"}, "resource_link": "datadog.com/feature/fallback_payments_test"}, "changed_resource": {"name": "fallback_payments_test", "type": "feature_flag"}, "impacted_resources": [{"name": "payments_api", "type": "service"}], "new_value": {"enabled": true, "percentage": "50%", "rule": {"datacenter": "devcycle.us1.prod"}}, "prev_value": {"enabled": true, "percentage": "10%", "rule": {"datacenter": "devcycle.us1.prod"}}}, "category": "invalid", "integration_id": "custom-events", "host": "test-host", "message": "payment_processed feature flag has been enabled", "tags": ["env:api_client_test"], "title": "payment_processed feature flag updated"}, "type": "event"}} When the request is sent Then the response status is 400 Bad request @skip-validation @team:DataDog/event-management Scenario: Post an event returns "OK" response Given new "CreateEvent" request - And body with value {"data": {"attributes": {"aggregation_key": "aggregation_key_123", "attributes": {"author": {"name": "example@datadog.com", "type": "user"}, "change_metadata": {"dd": {"team": "datadog_team", "user_email": "datadog@datadog.com", "user_id": "datadog_user_id", "user_name": "datadog_username"}, "resource_link": "datadog.com/feature/fallback_payments_test"}, "changed_resource": {"name": "fallback_payments_test", "type": "feature_flag"}, "impacted_resources": [{"name": "payments_api", "type": "service"}], "new_value": {"enabled": true, "percentage": "50%", "rule": {"datacenter": "devcycle.us1.prod"}}, "prev_value": {"enabled": true, "percentage": "10%", "rule": {"datacenter": "devcycle.us1.prod"}}}, "category": "change", "integration_id": "custom-events", "message": "payment_processed feature flag has been enabled", "tags": ["env:api_client_test"], "title": "payment_processed feature flag updated"}, "type": "event"}} + And body with value {"data": {"attributes": {"aggregation_key": "aggregation_key_123", "attributes": {"author": {"name": "example@datadog.com", "type": "user"}, "change_metadata": {"dd": {"team": "datadog_team", "user_email": "datadog@datadog.com", "user_id": "datadog_user_id", "user_name": "datadog_username"}, "resource_link": "datadog.com/feature/fallback_payments_test"}, "changed_resource": {"name": "fallback_payments_test", "type": "feature_flag"}, "impacted_resources": [{"name": "payments_api", "type": "service"}], "new_value": {"enabled": true, "percentage": "50%", "rule": {"datacenter": "devcycle.us1.prod"}}, "prev_value": {"enabled": true, "percentage": "10%", "rule": {"datacenter": "devcycle.us1.prod"}}}, "category": "change", "integration_id": "custom-events", "host": "test-host", "message": "payment_processed feature flag has been enabled", "tags": ["env:api_client_test"], "title": "payment_processed feature flag updated"}, "type": "event"}} When the request is sent Then the response status is 202 OK And the response "data.type" is equal to "event" diff --git a/lib/datadog_api_client/v2/models/event_payload.rb b/lib/datadog_api_client/v2/models/event_payload.rb index 569a5f18d2e..f47df2baaa1 100644 --- a/lib/datadog_api_client/v2/models/event_payload.rb +++ b/lib/datadog_api_client/v2/models/event_payload.rb @@ -30,6 +30,9 @@ class EventPayload # Event category identifying the type of event. attr_reader :category + # Host name to associate with the event. Any tags associated with the host are also applied to this event. Limited to 255 characters. + attr_reader :host + # Integration ID sourced from integration manifests. attr_accessor :integration_id @@ -55,6 +58,7 @@ def self.attribute_map :'aggregation_key' => :'aggregation_key', :'attributes' => :'attributes', :'category' => :'category', + :'host' => :'host', :'integration_id' => :'integration_id', :'message' => :'message', :'tags' => :'tags', @@ -70,6 +74,7 @@ def self.openapi_types :'aggregation_key' => :'String', :'attributes' => :'EventPayloadAttributes', :'category' => :'EventCategory', + :'host' => :'String', :'integration_id' => :'EventPayloadIntegrationId', :'message' => :'String', :'tags' => :'Array', @@ -106,6 +111,10 @@ def initialize(attributes = {}) self.category = attributes[:'category'] end + if attributes.key?(:'host') + self.host = attributes[:'host'] + end + if attributes.key?(:'integration_id') self.integration_id = attributes[:'integration_id'] end @@ -137,6 +146,8 @@ def valid? return false if !@aggregation_key.nil? && @aggregation_key.to_s.length < 1 return false if @attributes.nil? return false if @category.nil? + return false if !@host.nil? && @host.to_s.length > 255 + return false if !@host.nil? && @host.to_s.length < 1 return false if !@message.nil? && @message.to_s.length > 4000 return false if !@message.nil? && @message.to_s.length < 1 return false if !@tags.nil? && @tags.length > 100 @@ -180,6 +191,19 @@ def category=(category) @category = category end + # Custom attribute writer method with validation + # @param host [Object] Object to be assigned + # @!visibility private + def host=(host) + if !host.nil? && host.to_s.length > 255 + fail ArgumentError, 'invalid value for "host", the character length must be smaller than or equal to 255.' + end + if !host.nil? && host.to_s.length < 1 + fail ArgumentError, 'invalid value for "host", the character length must be great than or equal to 1.' + end + @host = host + end + # Custom attribute writer method with validation # @param message [Object] Object to be assigned # @!visibility private @@ -231,6 +255,7 @@ def ==(o) aggregation_key == o.aggregation_key && attributes == o.attributes && category == o.category && + host == o.host && integration_id == o.integration_id && message == o.message && tags == o.tags && @@ -242,7 +267,7 @@ def ==(o) # @return [Integer] Hash code # @!visibility private def hash - [aggregation_key, attributes, category, integration_id, message, tags, timestamp, title].hash + [aggregation_key, attributes, category, host, integration_id, message, tags, timestamp, title].hash end end end