From 037e1c565aad0d417848eee720b4fd437046dca4 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Fri, 27 Mar 2026 18:17:31 +0000 Subject: [PATCH] Regenerate client from commit 8d71763 of spec repo --- .generator/schemas/v2/openapi.yaml | 594 ++++++++++++++++++ examples/v2/widgets/CreateWidget.rb | 18 + examples/v2/widgets/DeleteWidget.rb | 5 + examples/v2/widgets/GetWidget.rb | 5 + examples/v2/widgets/SearchWidgets.rb | 5 + examples/v2/widgets/UpdateWidget.rb | 18 + features/scenarios_model_mapping.rb | 28 + features/v1/authentication.feature | 4 +- features/v1/key_management.feature | 46 +- features/v2/key_management.feature | 70 +-- features/v2/service_accounts.feature | 30 +- features/v2/undo.json | 41 ++ features/v2/widgets.feature | 115 ++++ lib/datadog_api_client/inflector.rb | 17 + lib/datadog_api_client/v2/api/widgets_api.rb | 431 +++++++++++++ .../models/create_or_update_widget_request.rb | 123 ++++ ...ate_or_update_widget_request_attributes.rb | 143 +++++ .../create_or_update_widget_request_data.rb | 144 +++++ .../v2/models/widget_attributes.rb | 206 ++++++ .../v2/models/widget_data.rb | 175 ++++++ .../v2/models/widget_definition.rb | 153 +++++ .../v2/models/widget_experience_type.rb | 29 + .../v2/models/widget_included_user.rb | 154 +++++ .../models/widget_included_user_attributes.rb | 123 ++++ .../v2/models/widget_list_response.rb | 147 +++++ .../v2/models/widget_relationship_data.rb | 144 +++++ .../v2/models/widget_relationship_item.rb | 105 ++++ .../v2/models/widget_relationships.rb | 115 ++++ .../v2/models/widget_response.rb | 135 ++++ .../v2/models/widget_search_meta.rb | 135 ++++ .../v2/models/widget_type.rb | 41 ++ 31 files changed, 3424 insertions(+), 75 deletions(-) create mode 100644 examples/v2/widgets/CreateWidget.rb create mode 100644 examples/v2/widgets/DeleteWidget.rb create mode 100644 examples/v2/widgets/GetWidget.rb create mode 100644 examples/v2/widgets/SearchWidgets.rb create mode 100644 examples/v2/widgets/UpdateWidget.rb create mode 100644 features/v2/widgets.feature create mode 100644 lib/datadog_api_client/v2/api/widgets_api.rb create mode 100644 lib/datadog_api_client/v2/models/create_or_update_widget_request.rb create mode 100644 lib/datadog_api_client/v2/models/create_or_update_widget_request_attributes.rb create mode 100644 lib/datadog_api_client/v2/models/create_or_update_widget_request_data.rb create mode 100644 lib/datadog_api_client/v2/models/widget_attributes.rb create mode 100644 lib/datadog_api_client/v2/models/widget_data.rb create mode 100644 lib/datadog_api_client/v2/models/widget_definition.rb create mode 100644 lib/datadog_api_client/v2/models/widget_experience_type.rb create mode 100644 lib/datadog_api_client/v2/models/widget_included_user.rb create mode 100644 lib/datadog_api_client/v2/models/widget_included_user_attributes.rb create mode 100644 lib/datadog_api_client/v2/models/widget_list_response.rb create mode 100644 lib/datadog_api_client/v2/models/widget_relationship_data.rb create mode 100644 lib/datadog_api_client/v2/models/widget_relationship_item.rb create mode 100644 lib/datadog_api_client/v2/models/widget_relationships.rb create mode 100644 lib/datadog_api_client/v2/models/widget_response.rb create mode 100644 lib/datadog_api_client/v2/models/widget_search_meta.rb create mode 100644 lib/datadog_api_client/v2/models/widget_type.rb diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index f45d9a1cc953..d02bb7aa5a11 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -15324,6 +15324,41 @@ components: id: $ref: "#/components/schemas/ApiID" type: object + CreateOrUpdateWidgetRequest: + description: Request body for creating or updating a widget. + properties: + data: + $ref: "#/components/schemas/CreateOrUpdateWidgetRequestData" + required: + - data + type: object + CreateOrUpdateWidgetRequestAttributes: + description: Attributes for creating or updating a widget. + properties: + definition: + $ref: "#/components/schemas/WidgetDefinition" + tags: + description: User-defined tags for organizing the widget. + items: + type: string + nullable: true + type: array + required: + - definition + type: object + CreateOrUpdateWidgetRequestData: + description: Data for creating or updating a widget. + properties: + attributes: + $ref: "#/components/schemas/CreateOrUpdateWidgetRequestAttributes" + type: + description: Widgets resource type. + example: widgets + type: string + required: + - type + - attributes + type: object CreatePageRequest: description: Full request to trigger an On-Call Page. example: @@ -71675,6 +71710,136 @@ components: - FRIDAY - SATURDAY - SUNDAY + WidgetAttributes: + description: Attributes of a widget resource. + properties: + created_at: + description: ISO 8601 timestamp of when the widget was created. + example: "2024-01-15T00:00:00.000Z" + type: string + definition: + $ref: "#/components/schemas/WidgetDefinition" + is_favorited: + description: "Will be implemented soon. Currently always returns false." + example: false + type: boolean + modified_at: + description: ISO 8601 timestamp of when the widget was last modified. + example: "2024-01-15T00:00:00.000Z" + type: string + tags: + description: User-defined tags for organizing widgets. + example: + - "team:my-team" + items: + type: string + nullable: true + type: array + required: + - definition + - tags + - is_favorited + - created_at + - modified_at + type: object + WidgetData: + description: A widget resource object. + properties: + attributes: + $ref: "#/components/schemas/WidgetAttributes" + id: + description: The unique identifier of the widget. + example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + type: string + relationships: + $ref: "#/components/schemas/WidgetRelationships" + type: + description: Widgets resource type. + example: widgets + type: string + required: + - id + - type + - attributes + type: object + WidgetDefinition: + additionalProperties: {} + description: The definition of a widget, including its type and configuration. + properties: + title: + description: The display title of the widget. + example: My Widget + maxLength: 100 + minLength: 1 + type: string + type: + $ref: "#/components/schemas/WidgetType" + required: + - type + - title + type: object + WidgetExperienceType: + description: Widget experience types that differentiate between the products using the specific widget. + enum: + - ccm_reports + - logs_reports + - csv_reports + - product_analytics + example: ccm_reports + type: string + x-enum-varnames: + - CCM_REPORTS + - LOGS_REPORTS + - CSV_REPORTS + - PRODUCT_ANALYTICS + WidgetIncludedUser: + description: A user resource included in the response. + properties: + attributes: + $ref: "#/components/schemas/WidgetIncludedUserAttributes" + id: + description: The unique identifier of the user. + example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + type: string + type: + description: Users resource type. + example: users + type: string + required: + - id + - type + type: object + WidgetIncludedUserAttributes: + description: Attributes of an included user resource. + properties: + handle: + description: The email handle of the user. + example: "john.doe@example.com" + type: string + name: + description: The display name of the user. + example: "John Doe" + nullable: true + type: string + type: object + WidgetListResponse: + description: Response containing a list of widgets. + properties: + data: + description: List of widget resources. + items: + $ref: "#/components/schemas/WidgetData" + type: array + included: + description: Array of user resources related to the widgets. + items: + $ref: "#/components/schemas/WidgetIncludedUser" + type: array + meta: + $ref: "#/components/schemas/WidgetSearchMeta" + required: + - data + type: object WidgetLiveSpan: description: The available timeframes depend on the widget you are using. enum: @@ -71711,6 +71876,108 @@ components: - PAST_SIX_MONTHS - PAST_ONE_YEAR - ALERT + WidgetRelationshipData: + description: Relationship data referencing a user resource. + properties: + id: + description: The unique identifier of the user. + example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + type: string + type: + description: Users resource type. + example: users + type: string + required: + - id + - type + type: object + WidgetRelationshipItem: + description: A JSON:API relationship to a user. + properties: + data: + $ref: "#/components/schemas/WidgetRelationshipData" + type: object + WidgetRelationships: + description: Relationships of the widget resource. + properties: + created_by: + $ref: "#/components/schemas/WidgetRelationshipItem" + description: The user who created the widget. + modified_by: + $ref: "#/components/schemas/WidgetRelationshipItem" + description: The user who last modified the widget. + type: object + WidgetResponse: + description: Response containing a single widget. + properties: + data: + $ref: "#/components/schemas/WidgetData" + included: + description: Array of user resources related to the widget. + items: + $ref: "#/components/schemas/WidgetIncludedUser" + type: array + required: + - data + type: object + WidgetSearchMeta: + description: Metadata about the search results. + properties: + created_by_anyone_total: + description: Total number of widgets created by anyone. + format: int64 + type: integer + created_by_you_total: + description: Total number of widgets created by the current user. + format: int64 + type: integer + favorited_by_you_total: + description: Total number of widgets favorited by the current user. + format: int64 + type: integer + filtered_total: + description: Total number of widgets matching the current filter criteria. + format: int64 + type: integer + type: object + WidgetType: + description: |- + Widget types that are allowed to be stored as individual records. + This is not a complete list of dashboard and notebook widget types. + enum: + - bar_chart + - change + - cloud_cost_summary + - cohort + - funnel + - geomap + - list_stream + - query_table + - query_value + - retention_curve + - sankey + - sunburst + - timeseries + - toplist + - treemap + example: bar_chart + type: string + x-enum-varnames: + - BAR_CHART + - CHANGE + - CLOUD_COST_SUMMARY + - COHORT + - FUNNEL + - GEOMAP + - LIST_STREAM + - QUERY_TABLE + - QUERY_VALUE + - RETENTION_CURVE + - SANKEY + - SUNBURST + - TIMESERIES + - TOPLIST + - TREEMAP WorkflowData: description: Data related to the workflow. properties: @@ -109866,6 +110133,328 @@ paths: operator: OR permissions: - teams_read + /api/v2/widgets/{experience_type}: + get: + description: Search and list widgets for a given experience type. Supports filtering by widget type, creator, title, and tags, as well as sorting and pagination. + operationId: SearchWidgets + parameters: + - description: The experience type for the widget. + in: path + name: experience_type + required: true + schema: + $ref: "#/components/schemas/WidgetExperienceType" + - description: Filter widgets by widget type. + in: query + name: filter[widgetType] + schema: + $ref: "#/components/schemas/WidgetType" + - description: Filter widgets by the email handle of the creator. + in: query + name: filter[creatorHandle] + schema: + example: "john.doe@example.com" + type: string + - description: Filter to only widgets favorited by the current user. + in: query + name: filter[isFavorited] + schema: + type: boolean + - description: Filter widgets by title (substring match). + in: query + name: filter[title] + schema: + type: string + - description: Filter widgets by tags. Format as bracket-delimited CSV, e.g. `[tag1,tag2]`. + in: query + name: filter[tags] + schema: + type: string + - description: |- + Sort field for the results. Prefix with `-` for descending order. + Allowed values: `title`, `created_at`, `modified_at`. + in: query + name: sort + schema: + default: "-modified_at" + example: "-modified_at" + type: string + - description: Page number for pagination (0-indexed). + in: query + name: page[number] + schema: + default: 0 + minimum: 0 + type: integer + - description: Number of widgets per page. + in: query + name: page[size] + schema: + default: 50 + maximum: 100 + type: integer + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/WidgetListResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Search widgets + tags: + - Widgets + x-permission: + operator: OR + permissions: + - cloud_cost_management_read + - generate_log_reports + - manage_log_reports + - product_analytics_saved_widgets_read + post: + description: Create a new widget for a given experience type. + operationId: CreateWidget + parameters: + - description: The experience type for the widget. + in: path + name: experience_type + required: true + schema: + $ref: "#/components/schemas/WidgetExperienceType" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CreateOrUpdateWidgetRequest" + description: Widget request body. + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/WidgetResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Create a widget + tags: + - Widgets + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - cloud_cost_management_write + - generate_log_reports + - manage_log_reports + - product_analytics_saved_widgets_write + /api/v2/widgets/{experience_type}/{uuid}: + delete: + description: Soft-delete a widget by its UUID for a given experience type. + operationId: DeleteWidget + parameters: + - description: The experience type for the widget. + in: path + name: experience_type + required: true + schema: + $ref: "#/components/schemas/WidgetExperienceType" + - description: The UUID of the widget. + in: path + name: uuid + required: true + schema: + format: uuid + type: string + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Delete a widget + tags: + - Widgets + x-permission: + operator: OR + permissions: + - cloud_cost_management_write + - generate_log_reports + - manage_log_reports + - product_analytics_saved_widgets_write + get: + description: Retrieve a widget by its UUID for a given experience type. + operationId: GetWidget + parameters: + - description: The experience type for the widget. + in: path + name: experience_type + required: true + schema: + $ref: "#/components/schemas/WidgetExperienceType" + - description: The UUID of the widget. + in: path + name: uuid + required: true + schema: + format: uuid + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/WidgetResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Get a widget + tags: + - Widgets + x-permission: + operator: OR + permissions: + - cloud_cost_management_read + - generate_log_reports + - manage_log_reports + - product_analytics_saved_widgets_read + put: + description: Update a widget by its UUID for a given experience type. This performs a full replacement of the widget definition. + operationId: UpdateWidget + parameters: + - description: The experience type for the widget. + in: path + name: experience_type + required: true + schema: + $ref: "#/components/schemas/WidgetExperienceType" + - description: The UUID of the widget. + in: path + name: uuid + required: true + schema: + format: uuid + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CreateOrUpdateWidgetRequest" + description: Widget request body. + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/WidgetResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Update a widget + tags: + - Widgets + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - cloud_cost_management_write + - generate_log_reports + - manage_log_reports + - product_analytics_saved_widgets_write /api/v2/workflows: post: description: Create a new workflow, returning the workflow ID. This API requires a [registered application key](https://docs.datadoghq.com/api/latest/action-connection/#register-a-new-app-key). Alternatively, you can configure these permissions [in the UI](https://docs.datadoghq.com/account_management/api-app-keys/#actions-api-access). @@ -110716,6 +111305,11 @@ tags: externalDocs: url: https://docs.datadoghq.com/account_management/users name: Users + - description: |- + Create, read, update, and delete saved widgets. Widgets are reusable + visualization components stored independently from any dashboard or notebook, + partitioned by experience type and identified by a UUID. + name: Widgets - description: |- Datadog Workflow Automation allows you to automate your end-to-end processes by connecting Datadog with the rest of your tech stack. Build workflows to auto-remediate your alerts, streamline your incident and security processes, and reduce manual toil. Workflow Automation supports over 1,000+ OOTB actions, including AWS, JIRA, ServiceNow, GitHub, and OpenAI. Learn more in our Workflow Automation docs [here](https://docs.datadoghq.com/service_management/workflows/). externalDocs: diff --git a/examples/v2/widgets/CreateWidget.rb b/examples/v2/widgets/CreateWidget.rb new file mode 100644 index 000000000000..5ba0ba9beadd --- /dev/null +++ b/examples/v2/widgets/CreateWidget.rb @@ -0,0 +1,18 @@ +# Create a widget returns "OK" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::WidgetsAPI.new + +body = DatadogAPIClient::V2::CreateOrUpdateWidgetRequest.new({ + data: DatadogAPIClient::V2::CreateOrUpdateWidgetRequestData.new({ + attributes: DatadogAPIClient::V2::CreateOrUpdateWidgetRequestAttributes.new({ + definition: DatadogAPIClient::V2::WidgetDefinition.new({ + title: "My Widget", + type: DatadogAPIClient::V2::WidgetType::BAR_CHART, + }), + tags: [], + }), + type: "widgets", + }), +}) +p api_instance.create_widget(WidgetExperienceType::CCM_REPORTS, body) diff --git a/examples/v2/widgets/DeleteWidget.rb b/examples/v2/widgets/DeleteWidget.rb new file mode 100644 index 000000000000..705052ca3082 --- /dev/null +++ b/examples/v2/widgets/DeleteWidget.rb @@ -0,0 +1,5 @@ +# Delete a widget returns "No Content" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::WidgetsAPI.new +api_instance.delete_widget(WidgetExperienceType::CCM_REPORTS, "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d") diff --git a/examples/v2/widgets/GetWidget.rb b/examples/v2/widgets/GetWidget.rb new file mode 100644 index 000000000000..325cd38a6590 --- /dev/null +++ b/examples/v2/widgets/GetWidget.rb @@ -0,0 +1,5 @@ +# Get a widget returns "OK" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::WidgetsAPI.new +p api_instance.get_widget(WidgetExperienceType::CCM_REPORTS, "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d") diff --git a/examples/v2/widgets/SearchWidgets.rb b/examples/v2/widgets/SearchWidgets.rb new file mode 100644 index 000000000000..64fd833bd1c9 --- /dev/null +++ b/examples/v2/widgets/SearchWidgets.rb @@ -0,0 +1,5 @@ +# Search widgets returns "OK" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::WidgetsAPI.new +p api_instance.search_widgets(WidgetExperienceType::CCM_REPORTS) diff --git a/examples/v2/widgets/UpdateWidget.rb b/examples/v2/widgets/UpdateWidget.rb new file mode 100644 index 000000000000..d4216c0990fb --- /dev/null +++ b/examples/v2/widgets/UpdateWidget.rb @@ -0,0 +1,18 @@ +# Update a widget returns "OK" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::WidgetsAPI.new + +body = DatadogAPIClient::V2::CreateOrUpdateWidgetRequest.new({ + data: DatadogAPIClient::V2::CreateOrUpdateWidgetRequestData.new({ + attributes: DatadogAPIClient::V2::CreateOrUpdateWidgetRequestAttributes.new({ + definition: DatadogAPIClient::V2::WidgetDefinition.new({ + title: "My Widget", + type: DatadogAPIClient::V2::WidgetType::BAR_CHART, + }), + tags: [], + }), + type: "widgets", + }), +}) +p api_instance.update_widget(WidgetExperienceType::CCM_REPORTS, "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d", body) diff --git a/features/scenarios_model_mapping.rb b/features/scenarios_model_mapping.rb index d0609933ade5..813fdd824fe4 100644 --- a/features/scenarios_model_mapping.rb +++ b/features/scenarios_model_mapping.rb @@ -4164,6 +4164,34 @@ "v2.ListUserPermissions" => { "user_id" => "String", }, + "v2.SearchWidgets" => { + "experience_type" => "WidgetExperienceType", + "filter_widget_type" => "WidgetType", + "filter_creator_handle" => "String", + "filter_is_favorited" => "Boolean", + "filter_title" => "String", + "filter_tags" => "String", + "sort" => "String", + "page_number" => "Integer", + "page_size" => "Integer", + }, + "v2.CreateWidget" => { + "experience_type" => "WidgetExperienceType", + "body" => "CreateOrUpdateWidgetRequest", + }, + "v2.DeleteWidget" => { + "experience_type" => "WidgetExperienceType", + "uuid" => "UUID", + }, + "v2.GetWidget" => { + "experience_type" => "WidgetExperienceType", + "uuid" => "UUID", + }, + "v2.UpdateWidget" => { + "experience_type" => "WidgetExperienceType", + "uuid" => "UUID", + "body" => "CreateOrUpdateWidgetRequest", + }, "v2.CreateWorkflow" => { "body" => "CreateWorkflowRequest", }, diff --git a/features/v1/authentication.feature b/features/v1/authentication.feature index b82a2313218e..29acfedbf0a4 100644 --- a/features/v1/authentication.feature +++ b/features/v1/authentication.feature @@ -16,12 +16,12 @@ Feature: Authentication Given an instance of "Authentication" API And new "Validate" request - @skip-validation @team:DataDog/credentials-management + @skip-validation @team:DataDog/credential-management Scenario: Validate API key returns "Forbidden" response When the request is sent Then the response status is 403 OK - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Validate API key returns "OK" response Given a valid "apiKeyAuth" key in the system When the request is sent diff --git a/features/v1/key_management.feature b/features/v1/key_management.feature index c3f18c2346a1..222728688f23 100644 --- a/features/v1/key_management.feature +++ b/features/v1/key_management.feature @@ -12,77 +12,77 @@ Feature: Key Management And a valid "appKeyAuth" key in the system And an instance of "KeyManagement" API - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Create an API key returns "Bad Request" response Given new "CreateAPIKey" request And body with value {"name": "example user"} When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Create an API key returns "OK" response Given new "CreateAPIKey" request And body with value {"name": "example user"} When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Create an application key returns "Bad Request" response Given new "CreateApplicationKey" request And body with value {"name": "example user"} When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Create an application key returns "Conflict" response Given new "CreateApplicationKey" request And body with value {"name": "example user"} When the request is sent Then the response status is 409 Conflict - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Create an application key returns "OK" response Given new "CreateApplicationKey" request And body with value {"name": "example user"} When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Delete an API key returns "Bad Request" response Given new "DeleteAPIKey" request And request contains "key" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Delete an API key returns "Not Found" response Given new "DeleteAPIKey" request And request contains "key" parameter from "REPLACE.ME" When the request is sent Then the response status is 404 Not Found - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Delete an API key returns "OK" response Given new "DeleteAPIKey" request And request contains "key" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Delete an application key returns "Not Found" response Given new "DeleteApplicationKey" request And request contains "key" parameter from "REPLACE.ME" When the request is sent Then the response status is 404 Not Found - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Delete an application key returns "OK" response Given new "DeleteApplicationKey" request And request contains "key" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Edit an API key returns "Bad Request" response Given new "UpdateAPIKey" request And request contains "key" parameter from "REPLACE.ME" @@ -90,7 +90,7 @@ Feature: Key Management When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Edit an API key returns "Not Found" response Given new "UpdateAPIKey" request And request contains "key" parameter from "REPLACE.ME" @@ -98,7 +98,7 @@ Feature: Key Management When the request is sent Then the response status is 404 Not Found - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Edit an API key returns "OK" response Given new "UpdateAPIKey" request And request contains "key" parameter from "REPLACE.ME" @@ -106,7 +106,7 @@ Feature: Key Management When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Edit an application key returns "Bad Request" response Given new "UpdateApplicationKey" request And request contains "key" parameter from "REPLACE.ME" @@ -114,7 +114,7 @@ Feature: Key Management When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Edit an application key returns "Conflict" response Given new "UpdateApplicationKey" request And request contains "key" parameter from "REPLACE.ME" @@ -122,7 +122,7 @@ Feature: Key Management When the request is sent Then the response status is 409 Conflict - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Edit an application key returns "Not Found" response Given new "UpdateApplicationKey" request And request contains "key" parameter from "REPLACE.ME" @@ -130,7 +130,7 @@ Feature: Key Management When the request is sent Then the response status is 404 Not Found - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Edit an application key returns "OK" response Given new "UpdateApplicationKey" request And request contains "key" parameter from "REPLACE.ME" @@ -138,40 +138,40 @@ Feature: Key Management When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Get API key returns "Not Found" response Given new "GetAPIKey" request And request contains "key" parameter from "REPLACE.ME" When the request is sent Then the response status is 404 Not Found - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Get API key returns "OK" response Given new "GetAPIKey" request And request contains "key" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Get all API keys returns "OK" response Given new "ListAPIKeys" request When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Get all application keys returns "OK" response Given new "ListApplicationKeys" request When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Get an application key returns "Not Found" response Given new "GetApplicationKey" request And request contains "key" parameter from "REPLACE.ME" When the request is sent Then the response status is 404 Not Found - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Get an application key returns "OK" response Given new "GetApplicationKey" request And request contains "key" parameter from "REPLACE.ME" diff --git a/features/v2/key_management.feature b/features/v2/key_management.feature index 40daf9df54f4..d7e706efa85b 100644 --- a/features/v2/key_management.feature +++ b/features/v2/key_management.feature @@ -12,14 +12,14 @@ Feature: Key Management And a valid "appKeyAuth" key in the system And an instance of "KeyManagement" API - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Create an API key returns "Bad Request" response Given new "CreateAPIKey" request And body with value {"data": {"attributes": {"name": "API Key for submitting metrics"}, "type": "api_keys"}} When the request is sent Then the response status is 400 Bad Request - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Create an API key returns "Created" response Given new "CreateAPIKey" request And body with value {"data": {"type": "api_keys", "attributes": {"name": "{{ unique }}"}}} @@ -28,7 +28,7 @@ Feature: Key Management And the response "data.type" is equal to "api_keys" And the response "data.attributes.name" is equal to "{{ unique }}" - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Create an Application key with scopes for current user returns "Created" response Given new "CreateCurrentUserApplicationKey" request And body with value {"data": {"type": "application_keys", "attributes": {"name": "{{ unique }}", "scopes": ["dashboards_read", "dashboards_write", "dashboards_public_share"]}}} @@ -37,14 +37,14 @@ Feature: Key Management And the response "data.attributes.name" is equal to "{{ unique }}" And the response "data.attributes.scopes" is equal to ["dashboards_read", "dashboards_write", "dashboards_public_share"] - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Create an application key for current user returns "Bad Request" response Given new "CreateCurrentUserApplicationKey" request And body with value {"data": {"attributes": {"name": "Application Key for managing dashboards", "scopes": ["dashboards_read", "dashboards_write", "dashboards_public_share"]}, "type": "application_keys"}} When the request is sent Then the response status is 400 Bad Request - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Create an application key for current user returns "Created" response Given new "CreateCurrentUserApplicationKey" request And body with value {"data": {"type": "application_keys", "attributes": {"name": "{{ unique }}"}}} @@ -53,7 +53,7 @@ Feature: Key Management And the response "data.type" is equal to "application_keys" And the response "data.attributes.name" is equal to "{{ unique }}" - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Delete an API key returns "No Content" response Given there is a valid "api_key" in the system And new "DeleteAPIKey" request @@ -61,14 +61,14 @@ Feature: Key Management When the request is sent Then the response status is 204 No Content - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Delete an API key returns "Not Found" response Given new "DeleteAPIKey" request And request contains "api_key_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 404 Not Found - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Delete an application key owned by current user returns "No Content" response Given there is a valid "application_key" in the system And new "DeleteCurrentUserApplicationKey" request @@ -76,14 +76,14 @@ Feature: Key Management When the request is sent Then the response status is 204 No Content - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Delete an application key owned by current user returns "Not Found" response Given new "DeleteCurrentUserApplicationKey" request And request contains "app_key_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 404 Not Found - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Delete an application key returns "No Content" response Given there is a valid "application_key" in the system And new "DeleteApplicationKey" request @@ -91,14 +91,14 @@ Feature: Key Management When the request is sent Then the response status is 204 No Content - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Delete an application key returns "Not Found" response Given new "DeleteApplicationKey" request And request contains "app_key_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 404 Not Found - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Edit an API key returns "Bad Request" response Given new "UpdateAPIKey" request And request contains "api_key_id" parameter from "REPLACE.ME" @@ -106,7 +106,7 @@ Feature: Key Management When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Edit an API key returns "Not Found" response Given new "UpdateAPIKey" request And request contains "api_key_id" parameter from "REPLACE.ME" @@ -114,7 +114,7 @@ Feature: Key Management When the request is sent Then the response status is 404 Not Found - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Edit an API key returns "OK" response Given there is a valid "api_key" in the system And new "UpdateAPIKey" request @@ -126,7 +126,7 @@ Feature: Key Management And the response "data.id" is equal to "{{ api_key.data.id }}" And the response "data.attributes.name" is equal to "{{ unique }}" - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Edit an application key owned by current user returns "Bad Request" response Given new "UpdateCurrentUserApplicationKey" request And request contains "app_key_id" parameter from "REPLACE.ME" @@ -134,7 +134,7 @@ Feature: Key Management When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Edit an application key owned by current user returns "Not Found" response Given new "UpdateCurrentUserApplicationKey" request And request contains "app_key_id" parameter from "REPLACE.ME" @@ -142,7 +142,7 @@ Feature: Key Management When the request is sent Then the response status is 404 Not Found - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Edit an application key owned by current user returns "OK" response Given there is a valid "application_key" in the system And new "UpdateCurrentUserApplicationKey" request @@ -154,7 +154,7 @@ Feature: Key Management And the response "data.id" is equal to "{{ application_key.data.id }}" And the response "data.attributes.name" is equal to "{{ application_key.data.attributes.name }}-updated" - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Edit an application key returns "Bad Request" response Given new "UpdateApplicationKey" request And request contains "app_key_id" parameter from "REPLACE.ME" @@ -162,7 +162,7 @@ Feature: Key Management When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Edit an application key returns "Not Found" response Given new "UpdateApplicationKey" request And request contains "app_key_id" parameter from "REPLACE.ME" @@ -170,7 +170,7 @@ Feature: Key Management When the request is sent Then the response status is 404 Not Found - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Edit an application key returns "OK" response Given there is a valid "application_key" in the system And new "UpdateApplicationKey" request @@ -182,14 +182,14 @@ Feature: Key Management And the response "data.id" is equal to "{{ application_key.data.id }}" And the response "data.attributes.name" is equal to "{{ application_key.data.attributes.name }}-updated" - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Get API key returns "Not Found" response Given new "GetAPIKey" request And request contains "api_key_id" parameter with value "invalidId" When the request is sent Then the response status is 404 Not Found - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Get API key returns "OK" response Given there is a valid "api_key" in the system And new "GetAPIKey" request @@ -200,13 +200,13 @@ Feature: Key Management And the response "data.id" is equal to "{{ api_key.data.id }}" And the response "data.attributes" has field "date_last_used" - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Get all API keys returns "Bad Request" response Given new "ListAPIKeys" request When the request is sent Then the response status is 400 Bad Request - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Get all API keys returns "OK" response Given there is a valid "api_key" in the system And new "ListAPIKeys" request @@ -216,19 +216,19 @@ Feature: Key Management And the response "data[0].type" is equal to "api_keys" And the response "data[0].attributes" has field "date_last_used" - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Get all application keys owned by current user returns "Bad Request" response Given new "ListCurrentUserApplicationKeys" request When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Get all application keys owned by current user returns "Not Found" response Given new "ListCurrentUserApplicationKeys" request When the request is sent Then the response status is 404 Not Found - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Get all application keys owned by current user returns "OK" response Given new "ListCurrentUserApplicationKeys" request When the request is sent @@ -236,19 +236,19 @@ Feature: Key Management And the response "data[0].type" is equal to "application_keys" And the response "data[0].attributes" has field "last_used_at" - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Get all application keys returns "Bad Request" response Given new "ListApplicationKeys" request When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Get all application keys returns "Not Found" response Given new "ListApplicationKeys" request When the request is sent Then the response status is 404 Not Found - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Get all application keys returns "OK" response Given there is a valid "application_key" in the system And new "ListApplicationKeys" request @@ -257,21 +257,21 @@ Feature: Key Management And the response "data[0].type" is equal to "application_keys" And the response "data[0].attributes" has field "last_used_at" - @generated @skip @team:DataDog/credentials-management + @generated @skip @team:DataDog/credential-management Scenario: Get an application key returns "Bad Request" response Given new "GetApplicationKey" request And request contains "app_key_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Get an application key returns "Not Found" response Given new "GetApplicationKey" request And request contains "app_key_id" parameter with value "invalidId" When the request is sent Then the response status is 404 Not Found - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Get an application key returns "OK" response Given there is a valid "application_key" in the system And new "GetApplicationKey" request @@ -282,14 +282,14 @@ Feature: Key Management And the response "data.id" has the same value as "application_key.data.id" And the response "data.attributes" has field "last_used_at" - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Get one application key owned by current user returns "Not Found" response Given new "GetCurrentUserApplicationKey" request And request contains "app_key_id" parameter with value "incorrectId" When the request is sent Then the response status is 404 Not Found - @team:DataDog/credentials-management + @team:DataDog/credential-management Scenario: Get one application key owned by current user returns "OK" response Given there is a valid "application_key" in the system And new "GetCurrentUserApplicationKey" request diff --git a/features/v2/service_accounts.feature b/features/v2/service_accounts.feature index 6e25db1e8f20..cad1c9e13425 100644 --- a/features/v2/service_accounts.feature +++ b/features/v2/service_accounts.feature @@ -9,14 +9,14 @@ Feature: Service Accounts And a valid "appKeyAuth" key in the system And an instance of "ServiceAccounts" API - @generated @skip @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @generated @skip @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: Create a service account returns "Bad Request" response Given new "CreateServiceAccount" request And body with value {"data": {"attributes": {"email": "jane.doe@example.com", "service_account": true}, "relationships": {"roles": {"data": [{"id": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", "type": "roles"}]}}, "type": "users"}} When the request is sent Then the response status is 400 Bad Request - @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: Create a service account returns "OK" response Given there is a valid "role" in the system And new "CreateServiceAccount" request @@ -29,7 +29,7 @@ Feature: Service Accounts And the response "data.attributes.service_account" is equal to true And the response "data.relationships.roles.data[0].id" is equal to "{{ role.data.id }}" - @generated @skip @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @generated @skip @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: Create an application key for this service account returns "Bad Request" response Given new "CreateServiceAccountApplicationKey" request And request contains "service_account_id" parameter from "REPLACE.ME" @@ -37,7 +37,7 @@ Feature: Service Accounts When the request is sent Then the response status is 400 Bad Request - @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: Create an application key for this service account returns "Created" response Given there is a valid "service_account_user" in the system And new "CreateServiceAccountApplicationKey" request @@ -48,7 +48,7 @@ Feature: Service Accounts And the response "data.attributes.name" is equal to "{{ unique }}" And the response "data.relationships.owned_by.data.id" has the same value as "service_account_user.data.id" - @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: Create an application key with scopes for this service account returns "Created" response Given there is a valid "service_account_user" in the system And new "CreateServiceAccountApplicationKey" request @@ -60,7 +60,7 @@ Feature: Service Accounts And the response "data.attributes.scopes" is equal to ["dashboards_read", "dashboards_write", "dashboards_public_share"] And the response "data.relationships.owned_by.data.id" has the same value as "service_account_user.data.id" - @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: Delete an application key for this service account returns "No Content" response Given there is a valid "service_account_user" in the system And there is a valid "service_account_application_key" for "service_account_user" @@ -70,7 +70,7 @@ Feature: Service Accounts When the request is sent Then the response status is 204 No Content - @generated @skip @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @generated @skip @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: Delete an application key for this service account returns "Not Found" response Given new "DeleteServiceAccountApplicationKey" request And request contains "service_account_id" parameter from "REPLACE.ME" @@ -78,7 +78,7 @@ Feature: Service Accounts When the request is sent Then the response status is 404 Not Found - @generated @skip @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @generated @skip @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: Edit an application key for this service account returns "Bad Request" response Given new "UpdateServiceAccountApplicationKey" request And request contains "service_account_id" parameter from "REPLACE.ME" @@ -87,7 +87,7 @@ Feature: Service Accounts When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @generated @skip @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: Edit an application key for this service account returns "Not Found" response Given new "UpdateServiceAccountApplicationKey" request And request contains "service_account_id" parameter from "REPLACE.ME" @@ -96,7 +96,7 @@ Feature: Service Accounts When the request is sent Then the response status is 404 Not Found - @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: Edit an application key for this service account returns "OK" response Given there is a valid "service_account_user" in the system And there is a valid "service_account_application_key" for "service_account_user" @@ -110,7 +110,7 @@ Feature: Service Accounts And the response "data.type" is equal to "application_keys" And the response "data.id" is equal to "{{ service_account_application_key.data.id }}" - @generated @skip @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @generated @skip @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: Get one application key for this service account returns "Not Found" response Given new "GetServiceAccountApplicationKey" request And request contains "service_account_id" parameter from "REPLACE.ME" @@ -118,7 +118,7 @@ Feature: Service Accounts When the request is sent Then the response status is 404 Not Found - @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: Get one application key for this service account returns "OK" response Given there is a valid "service_account_user" in the system And there is a valid "service_account_application_key" for "service_account_user" @@ -131,21 +131,21 @@ Feature: Service Accounts And the response "data.type" is equal to "application_keys" And the response "data.id" is equal to "{{ service_account_application_key.data.id }}" - @generated @skip @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @generated @skip @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: List application keys for this service account returns "Bad Request" response Given new "ListServiceAccountApplicationKeys" request And request contains "service_account_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @generated @skip @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: List application keys for this service account returns "Not Found" response Given new "ListServiceAccountApplicationKeys" request And request contains "service_account_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 404 Not Found - @team:DataDog/credentials-management @team:DataDog/team-aaa-identity + @team:DataDog/credential-management @team:DataDog/team-aaa-identity Scenario: List application keys for this service account returns "OK" response Given there is a valid "service_account_user" in the system And new "ListServiceAccountApplicationKeys" request diff --git a/features/v2/undo.json b/features/v2/undo.json index 67596e3589cb..c19cdf5452a0 100644 --- a/features/v2/undo.json +++ b/features/v2/undo.json @@ -6356,6 +6356,47 @@ "type": "safe" } }, + "SearchWidgets": { + "tag": "Widgets", + "undo": { + "type": "safe" + } + }, + "CreateWidget": { + "tag": "Widgets", + "undo": { + "operationId": "DeleteWidget", + "parameters": [ + { + "name": "experience_type", + "source": "experience_type" + }, + { + "name": "uuid", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "DeleteWidget": { + "tag": "Widgets", + "undo": { + "type": "idempotent" + } + }, + "GetWidget": { + "tag": "Widgets", + "undo": { + "type": "safe" + } + }, + "UpdateWidget": { + "tag": "Widgets", + "undo": { + "type": "safe" + } + }, "CreateWorkflow": { "tag": "Workflow Automation", "undo": { diff --git a/features/v2/widgets.feature b/features/v2/widgets.feature new file mode 100644 index 000000000000..54b015711565 --- /dev/null +++ b/features/v2/widgets.feature @@ -0,0 +1,115 @@ +@endpoint(widgets) @endpoint(widgets-v2) +Feature: Widgets + Create, read, update, and delete saved widgets. Widgets are reusable + visualization components stored independently from any dashboard or + notebook, partitioned by experience type and identified by a UUID. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "Widgets" API + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Create a widget returns "Bad Request" response + Given new "CreateWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"definition": {"title": "My Widget", "type": "bar_chart"}, "tags": []}, "type": "widgets"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Create a widget returns "OK" response + Given new "CreateWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"definition": {"title": "My Widget", "type": "bar_chart"}, "tags": []}, "type": "widgets"}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Delete a widget returns "Bad Request" response + Given new "DeleteWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Delete a widget returns "No Content" response + Given new "DeleteWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 No Content + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Delete a widget returns "Not Found" response + Given new "DeleteWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Get a widget returns "Bad Request" response + Given new "GetWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Get a widget returns "Not Found" response + Given new "GetWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Get a widget returns "OK" response + Given new "GetWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Search widgets returns "Bad Request" response + Given new "SearchWidgets" request + And request contains "experience_type" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Search widgets returns "OK" response + Given new "SearchWidgets" request + And request contains "experience_type" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Update a widget returns "Bad Request" response + Given new "UpdateWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"definition": {"title": "My Widget", "type": "bar_chart"}, "tags": []}, "type": "widgets"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Update a widget returns "Not Found" response + Given new "UpdateWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"definition": {"title": "My Widget", "type": "bar_chart"}, "tags": []}, "type": "widgets"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Update a widget returns "OK" response + Given new "UpdateWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"definition": {"title": "My Widget", "type": "bar_chart"}, "tags": []}, "type": "widgets"}} + When the request is sent + Then the response status is 200 OK diff --git a/lib/datadog_api_client/inflector.rb b/lib/datadog_api_client/inflector.rb index ab346bc663c0..843319dad420 100644 --- a/lib/datadog_api_client/inflector.rb +++ b/lib/datadog_api_client/inflector.rb @@ -1948,6 +1948,9 @@ def overrides "v2.create_open_api_response" => "CreateOpenAPIResponse", "v2.create_open_api_response_attributes" => "CreateOpenAPIResponseAttributes", "v2.create_open_api_response_data" => "CreateOpenAPIResponseData", + "v2.create_or_update_widget_request" => "CreateOrUpdateWidgetRequest", + "v2.create_or_update_widget_request_attributes" => "CreateOrUpdateWidgetRequestAttributes", + "v2.create_or_update_widget_request_data" => "CreateOrUpdateWidgetRequestData", "v2.create_page_request" => "CreatePageRequest", "v2.create_page_request_data" => "CreatePageRequestData", "v2.create_page_request_data_attributes" => "CreatePageRequestDataAttributes", @@ -5665,7 +5668,20 @@ def overrides "v2.watcher_data_attributes" => "WatcherDataAttributes", "v2.watcher_data_type" => "WatcherDataType", "v2.weekday" => "Weekday", + "v2.widget_attributes" => "WidgetAttributes", + "v2.widget_data" => "WidgetData", + "v2.widget_definition" => "WidgetDefinition", + "v2.widget_experience_type" => "WidgetExperienceType", + "v2.widget_included_user" => "WidgetIncludedUser", + "v2.widget_included_user_attributes" => "WidgetIncludedUserAttributes", + "v2.widget_list_response" => "WidgetListResponse", "v2.widget_live_span" => "WidgetLiveSpan", + "v2.widget_relationship_data" => "WidgetRelationshipData", + "v2.widget_relationship_item" => "WidgetRelationshipItem", + "v2.widget_relationships" => "WidgetRelationships", + "v2.widget_response" => "WidgetResponse", + "v2.widget_search_meta" => "WidgetSearchMeta", + "v2.widget_type" => "WidgetType", "v2.workflow_data" => "WorkflowData", "v2.workflow_data_attributes" => "WorkflowDataAttributes", "v2.workflow_data_relationships" => "WorkflowDataRelationships", @@ -5829,6 +5845,7 @@ def overrides "v2.test_optimization_api" => "TestOptimizationAPI", "v2.usage_metering_api" => "UsageMeteringAPI", "v2.users_api" => "UsersAPI", + "v2.widgets_api" => "WidgetsAPI", "v2.workflow_automation_api" => "WorkflowAutomationAPI" } end diff --git a/lib/datadog_api_client/v2/api/widgets_api.rb b/lib/datadog_api_client/v2/api/widgets_api.rb new file mode 100644 index 000000000000..14c104504fa5 --- /dev/null +++ b/lib/datadog_api_client/v2/api/widgets_api.rb @@ -0,0 +1,431 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'cgi' + +module DatadogAPIClient::V2 + class WidgetsAPI + attr_accessor :api_client + + def initialize(api_client = DatadogAPIClient::APIClient.default) + @api_client = api_client + end + + # Create a widget. + # + # @see #create_widget_with_http_info + def create_widget(experience_type, body, opts = {}) + data, _status_code, _headers = create_widget_with_http_info(experience_type, body, opts) + data + end + + # Create a widget. + # + # Create a new widget for a given experience type. + # + # @param experience_type [WidgetExperienceType] The experience type for the widget. + # @param body [CreateOrUpdateWidgetRequest] Widget request body. + # @param opts [Hash] the optional parameters + # @return [Array<(WidgetResponse, Integer, Hash)>] WidgetResponse data, response status code and response headers + def create_widget_with_http_info(experience_type, body, opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: WidgetsAPI.create_widget ...' + end + # verify the required parameter 'experience_type' is set + if @api_client.config.client_side_validation && experience_type.nil? + fail ArgumentError, "Missing the required parameter 'experience_type' when calling WidgetsAPI.create_widget" + end + # verify enum value + allowable_values = ['ccm_reports', 'logs_reports', 'csv_reports', 'product_analytics'] + if @api_client.config.client_side_validation && !allowable_values.include?(experience_type) + fail ArgumentError, "invalid value for \"experience_type\", must be one of #{allowable_values}" + end + # verify the required parameter 'body' is set + if @api_client.config.client_side_validation && body.nil? + fail ArgumentError, "Missing the required parameter 'body' when calling WidgetsAPI.create_widget" + end + # resource path + local_var_path = '/api/v2/widgets/{experience_type}'.sub('{experience_type}', CGI.escape(experience_type.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + # HTTP header 'Content-Type' + header_params['Content-Type'] = @api_client.select_header_content_type(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] || @api_client.object_to_http_body(body) + + # return_type + return_type = opts[:debug_return_type] || 'WidgetResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :create_widget, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Post, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: WidgetsAPI#create_widget\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Delete a widget. + # + # @see #delete_widget_with_http_info + def delete_widget(experience_type, uuid, opts = {}) + delete_widget_with_http_info(experience_type, uuid, opts) + nil + end + + # Delete a widget. + # + # Soft-delete a widget by its UUID for a given experience type. + # + # @param experience_type [WidgetExperienceType] The experience type for the widget. + # @param uuid [UUID] The UUID of the widget. + # @param opts [Hash] the optional parameters + # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers + def delete_widget_with_http_info(experience_type, uuid, opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: WidgetsAPI.delete_widget ...' + end + # verify the required parameter 'experience_type' is set + if @api_client.config.client_side_validation && experience_type.nil? + fail ArgumentError, "Missing the required parameter 'experience_type' when calling WidgetsAPI.delete_widget" + end + # verify enum value + allowable_values = ['ccm_reports', 'logs_reports', 'csv_reports', 'product_analytics'] + if @api_client.config.client_side_validation && !allowable_values.include?(experience_type) + fail ArgumentError, "invalid value for \"experience_type\", must be one of #{allowable_values}" + end + # verify the required parameter 'uuid' is set + if @api_client.config.client_side_validation && uuid.nil? + fail ArgumentError, "Missing the required parameter 'uuid' when calling WidgetsAPI.delete_widget" + end + # resource path + local_var_path = '/api/v2/widgets/{experience_type}/{uuid}'.sub('{experience_type}', CGI.escape(experience_type.to_s).gsub('%2F', '/')).sub('{uuid}', CGI.escape(uuid.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['*/*']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :delete_widget, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Delete, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: WidgetsAPI#delete_widget\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Get a widget. + # + # @see #get_widget_with_http_info + def get_widget(experience_type, uuid, opts = {}) + data, _status_code, _headers = get_widget_with_http_info(experience_type, uuid, opts) + data + end + + # Get a widget. + # + # Retrieve a widget by its UUID for a given experience type. + # + # @param experience_type [WidgetExperienceType] The experience type for the widget. + # @param uuid [UUID] The UUID of the widget. + # @param opts [Hash] the optional parameters + # @return [Array<(WidgetResponse, Integer, Hash)>] WidgetResponse data, response status code and response headers + def get_widget_with_http_info(experience_type, uuid, opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: WidgetsAPI.get_widget ...' + end + # verify the required parameter 'experience_type' is set + if @api_client.config.client_side_validation && experience_type.nil? + fail ArgumentError, "Missing the required parameter 'experience_type' when calling WidgetsAPI.get_widget" + end + # verify enum value + allowable_values = ['ccm_reports', 'logs_reports', 'csv_reports', 'product_analytics'] + if @api_client.config.client_side_validation && !allowable_values.include?(experience_type) + fail ArgumentError, "invalid value for \"experience_type\", must be one of #{allowable_values}" + end + # verify the required parameter 'uuid' is set + if @api_client.config.client_side_validation && uuid.nil? + fail ArgumentError, "Missing the required parameter 'uuid' when calling WidgetsAPI.get_widget" + end + # resource path + local_var_path = '/api/v2/widgets/{experience_type}/{uuid}'.sub('{experience_type}', CGI.escape(experience_type.to_s).gsub('%2F', '/')).sub('{uuid}', CGI.escape(uuid.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'WidgetResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :get_widget, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: WidgetsAPI#get_widget\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Search widgets. + # + # @see #search_widgets_with_http_info + def search_widgets(experience_type, opts = {}) + data, _status_code, _headers = search_widgets_with_http_info(experience_type, opts) + data + end + + # Search widgets. + # + # Search and list widgets for a given experience type. Supports filtering by widget type, creator, title, and tags, as well as sorting and pagination. + # + # @param experience_type [WidgetExperienceType] The experience type for the widget. + # @param opts [Hash] the optional parameters + # @option opts [WidgetType] :filter_widget_type Filter widgets by widget type. + # @option opts [String] :filter_creator_handle Filter widgets by the email handle of the creator. + # @option opts [Boolean] :filter_is_favorited Filter to only widgets favorited by the current user. + # @option opts [String] :filter_title Filter widgets by title (substring match). + # @option opts [String] :filter_tags Filter widgets by tags. Format as bracket-delimited CSV, e.g. `[tag1,tag2]`. + # @option opts [String] :sort Sort field for the results. Prefix with `-` for descending order. Allowed values: `title`, `created_at`, `modified_at`. + # @option opts [Integer] :page_number Page number for pagination (0-indexed). + # @option opts [Integer] :page_size Number of widgets per page. + # @return [Array<(WidgetListResponse, Integer, Hash)>] WidgetListResponse data, response status code and response headers + def search_widgets_with_http_info(experience_type, opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: WidgetsAPI.search_widgets ...' + end + # verify the required parameter 'experience_type' is set + if @api_client.config.client_side_validation && experience_type.nil? + fail ArgumentError, "Missing the required parameter 'experience_type' when calling WidgetsAPI.search_widgets" + end + # verify enum value + allowable_values = ['ccm_reports', 'logs_reports', 'csv_reports', 'product_analytics'] + if @api_client.config.client_side_validation && !allowable_values.include?(experience_type) + fail ArgumentError, "invalid value for \"experience_type\", must be one of #{allowable_values}" + end + allowable_values = ['bar_chart', 'change', 'cloud_cost_summary', 'cohort', 'funnel', 'geomap', 'list_stream', 'query_table', 'query_value', 'retention_curve', 'sankey', 'sunburst', 'timeseries', 'toplist', 'treemap'] + if @api_client.config.client_side_validation && opts[:'filter_widget_type'] && !allowable_values.include?(opts[:'filter_widget_type']) + fail ArgumentError, "invalid value for \"filter_widget_type\", must be one of #{allowable_values}" + end + if @api_client.config.client_side_validation && !opts[:'page_number'].nil? && opts[:'page_number'] < 0 + fail ArgumentError, 'invalid value for "opts[:"page_number"]" when calling WidgetsAPI.search_widgets, must be greater than or equal to 0.' + end + if @api_client.config.client_side_validation && !opts[:'page_size'].nil? && opts[:'page_size'] > 100 + fail ArgumentError, 'invalid value for "opts[:"page_size"]" when calling WidgetsAPI.search_widgets, must be smaller than or equal to 100.' + end + # resource path + local_var_path = '/api/v2/widgets/{experience_type}'.sub('{experience_type}', CGI.escape(experience_type.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + query_params[:'filter[widgetType]'] = opts[:'filter_widget_type'] if !opts[:'filter_widget_type'].nil? + query_params[:'filter[creatorHandle]'] = opts[:'filter_creator_handle'] if !opts[:'filter_creator_handle'].nil? + query_params[:'filter[isFavorited]'] = opts[:'filter_is_favorited'] if !opts[:'filter_is_favorited'].nil? + query_params[:'filter[title]'] = opts[:'filter_title'] if !opts[:'filter_title'].nil? + query_params[:'filter[tags]'] = opts[:'filter_tags'] if !opts[:'filter_tags'].nil? + query_params[:'sort'] = opts[:'sort'] if !opts[:'sort'].nil? + query_params[:'page[number]'] = opts[:'page_number'] if !opts[:'page_number'].nil? + query_params[:'page[size]'] = opts[:'page_size'] if !opts[:'page_size'].nil? + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'WidgetListResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :search_widgets, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: WidgetsAPI#search_widgets\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Update a widget. + # + # @see #update_widget_with_http_info + def update_widget(experience_type, uuid, body, opts = {}) + data, _status_code, _headers = update_widget_with_http_info(experience_type, uuid, body, opts) + data + end + + # Update a widget. + # + # Update a widget by its UUID for a given experience type. This performs a full replacement of the widget definition. + # + # @param experience_type [WidgetExperienceType] The experience type for the widget. + # @param uuid [UUID] The UUID of the widget. + # @param body [CreateOrUpdateWidgetRequest] Widget request body. + # @param opts [Hash] the optional parameters + # @return [Array<(WidgetResponse, Integer, Hash)>] WidgetResponse data, response status code and response headers + def update_widget_with_http_info(experience_type, uuid, body, opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: WidgetsAPI.update_widget ...' + end + # verify the required parameter 'experience_type' is set + if @api_client.config.client_side_validation && experience_type.nil? + fail ArgumentError, "Missing the required parameter 'experience_type' when calling WidgetsAPI.update_widget" + end + # verify enum value + allowable_values = ['ccm_reports', 'logs_reports', 'csv_reports', 'product_analytics'] + if @api_client.config.client_side_validation && !allowable_values.include?(experience_type) + fail ArgumentError, "invalid value for \"experience_type\", must be one of #{allowable_values}" + end + # verify the required parameter 'uuid' is set + if @api_client.config.client_side_validation && uuid.nil? + fail ArgumentError, "Missing the required parameter 'uuid' when calling WidgetsAPI.update_widget" + end + # verify the required parameter 'body' is set + if @api_client.config.client_side_validation && body.nil? + fail ArgumentError, "Missing the required parameter 'body' when calling WidgetsAPI.update_widget" + end + # resource path + local_var_path = '/api/v2/widgets/{experience_type}/{uuid}'.sub('{experience_type}', CGI.escape(experience_type.to_s).gsub('%2F', '/')).sub('{uuid}', CGI.escape(uuid.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + # HTTP header 'Content-Type' + header_params['Content-Type'] = @api_client.select_header_content_type(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] || @api_client.object_to_http_body(body) + + # return_type + return_type = opts[:debug_return_type] || 'WidgetResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :update_widget, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Put, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: WidgetsAPI#update_widget\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + end +end diff --git a/lib/datadog_api_client/v2/models/create_or_update_widget_request.rb b/lib/datadog_api_client/v2/models/create_or_update_widget_request.rb new file mode 100644 index 000000000000..e390a9414085 --- /dev/null +++ b/lib/datadog_api_client/v2/models/create_or_update_widget_request.rb @@ -0,0 +1,123 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Request body for creating or updating a widget. + class CreateOrUpdateWidgetRequest + include BaseGenericModel + + # Data for creating or updating a widget. + attr_reader :data + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'CreateOrUpdateWidgetRequestData' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::CreateOrUpdateWidgetRequest` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'data') + self.data = attributes[:'data'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @data.nil? + true + end + + # Custom attribute writer method with validation + # @param data [Object] Object to be assigned + # @!visibility private + def data=(data) + if data.nil? + fail ArgumentError, 'invalid value for "data", data cannot be nil.' + end + @data = data + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + data == o.data && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/create_or_update_widget_request_attributes.rb b/lib/datadog_api_client/v2/models/create_or_update_widget_request_attributes.rb new file mode 100644 index 000000000000..610a72966563 --- /dev/null +++ b/lib/datadog_api_client/v2/models/create_or_update_widget_request_attributes.rb @@ -0,0 +1,143 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Attributes for creating or updating a widget. + class CreateOrUpdateWidgetRequestAttributes + include BaseGenericModel + + # The definition of a widget, including its type and configuration. + attr_reader :definition + + # User-defined tags for organizing the widget. + attr_accessor :tags + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'definition' => :'definition', + :'tags' => :'tags' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'definition' => :'WidgetDefinition', + :'tags' => :'Array' + } + end + + # List of attributes with nullable: true + # @!visibility private + def self.openapi_nullable + Set.new([ + :'tags', + ]) + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::CreateOrUpdateWidgetRequestAttributes` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'definition') + self.definition = attributes[:'definition'] + end + + if attributes.key?(:'tags') + if (value = attributes[:'tags']).is_a?(Array) + self.tags = value + end + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @definition.nil? + true + end + + # Custom attribute writer method with validation + # @param definition [Object] Object to be assigned + # @!visibility private + def definition=(definition) + if definition.nil? + fail ArgumentError, 'invalid value for "definition", definition cannot be nil.' + end + @definition = definition + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + definition == o.definition && + tags == o.tags && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [definition, tags, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/create_or_update_widget_request_data.rb b/lib/datadog_api_client/v2/models/create_or_update_widget_request_data.rb new file mode 100644 index 000000000000..99303dfd64e9 --- /dev/null +++ b/lib/datadog_api_client/v2/models/create_or_update_widget_request_data.rb @@ -0,0 +1,144 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Data for creating or updating a widget. + class CreateOrUpdateWidgetRequestData + include BaseGenericModel + + # Attributes for creating or updating a widget. + attr_reader :attributes + + # Widgets resource type. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'attributes' => :'attributes', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'attributes' => :'CreateOrUpdateWidgetRequestAttributes', + :'type' => :'String' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::CreateOrUpdateWidgetRequestData` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'attributes') + self.attributes = attributes[:'attributes'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @attributes.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param attributes [Object] Object to be assigned + # @!visibility private + def attributes=(attributes) + if attributes.nil? + fail ArgumentError, 'invalid value for "attributes", attributes cannot be nil.' + end + @attributes = attributes + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + attributes == o.attributes && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [attributes, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/widget_attributes.rb b/lib/datadog_api_client/v2/models/widget_attributes.rb new file mode 100644 index 000000000000..af559edf326d --- /dev/null +++ b/lib/datadog_api_client/v2/models/widget_attributes.rb @@ -0,0 +1,206 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Attributes of a widget resource. + class WidgetAttributes + include BaseGenericModel + + # ISO 8601 timestamp of when the widget was created. + attr_reader :created_at + + # The definition of a widget, including its type and configuration. + attr_reader :definition + + # Will be implemented soon. Currently always returns false. + attr_reader :is_favorited + + # ISO 8601 timestamp of when the widget was last modified. + attr_reader :modified_at + + # User-defined tags for organizing widgets. + attr_accessor :tags + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'created_at' => :'created_at', + :'definition' => :'definition', + :'is_favorited' => :'is_favorited', + :'modified_at' => :'modified_at', + :'tags' => :'tags' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'created_at' => :'String', + :'definition' => :'WidgetDefinition', + :'is_favorited' => :'Boolean', + :'modified_at' => :'String', + :'tags' => :'Array' + } + end + + # List of attributes with nullable: true + # @!visibility private + def self.openapi_nullable + Set.new([ + :'tags', + ]) + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::WidgetAttributes` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'created_at') + self.created_at = attributes[:'created_at'] + end + + if attributes.key?(:'definition') + self.definition = attributes[:'definition'] + end + + if attributes.key?(:'is_favorited') + self.is_favorited = attributes[:'is_favorited'] + end + + if attributes.key?(:'modified_at') + self.modified_at = attributes[:'modified_at'] + end + + if attributes.key?(:'tags') + if (value = attributes[:'tags']).is_a?(Array) + self.tags = value + end + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @created_at.nil? + return false if @definition.nil? + return false if @is_favorited.nil? + return false if @modified_at.nil? + true + end + + # Custom attribute writer method with validation + # @param created_at [Object] Object to be assigned + # @!visibility private + def created_at=(created_at) + if created_at.nil? + fail ArgumentError, 'invalid value for "created_at", created_at cannot be nil.' + end + @created_at = created_at + end + + # Custom attribute writer method with validation + # @param definition [Object] Object to be assigned + # @!visibility private + def definition=(definition) + if definition.nil? + fail ArgumentError, 'invalid value for "definition", definition cannot be nil.' + end + @definition = definition + end + + # Custom attribute writer method with validation + # @param is_favorited [Object] Object to be assigned + # @!visibility private + def is_favorited=(is_favorited) + if is_favorited.nil? + fail ArgumentError, 'invalid value for "is_favorited", is_favorited cannot be nil.' + end + @is_favorited = is_favorited + end + + # Custom attribute writer method with validation + # @param modified_at [Object] Object to be assigned + # @!visibility private + def modified_at=(modified_at) + if modified_at.nil? + fail ArgumentError, 'invalid value for "modified_at", modified_at cannot be nil.' + end + @modified_at = modified_at + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + created_at == o.created_at && + definition == o.definition && + is_favorited == o.is_favorited && + modified_at == o.modified_at && + tags == o.tags && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [created_at, definition, is_favorited, modified_at, tags, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/widget_data.rb b/lib/datadog_api_client/v2/models/widget_data.rb new file mode 100644 index 000000000000..a8f8444d27df --- /dev/null +++ b/lib/datadog_api_client/v2/models/widget_data.rb @@ -0,0 +1,175 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # A widget resource object. + class WidgetData + include BaseGenericModel + + # Attributes of a widget resource. + attr_reader :attributes + + # The unique identifier of the widget. + attr_reader :id + + # Relationships of the widget resource. + attr_accessor :relationships + + # Widgets resource type. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'attributes' => :'attributes', + :'id' => :'id', + :'relationships' => :'relationships', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'attributes' => :'WidgetAttributes', + :'id' => :'String', + :'relationships' => :'WidgetRelationships', + :'type' => :'String' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::WidgetData` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'attributes') + self.attributes = attributes[:'attributes'] + end + + if attributes.key?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'relationships') + self.relationships = attributes[:'relationships'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @attributes.nil? + return false if @id.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param attributes [Object] Object to be assigned + # @!visibility private + def attributes=(attributes) + if attributes.nil? + fail ArgumentError, 'invalid value for "attributes", attributes cannot be nil.' + end + @attributes = attributes + end + + # Custom attribute writer method with validation + # @param id [Object] Object to be assigned + # @!visibility private + def id=(id) + if id.nil? + fail ArgumentError, 'invalid value for "id", id cannot be nil.' + end + @id = id + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + attributes == o.attributes && + id == o.id && + relationships == o.relationships && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [attributes, id, relationships, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/widget_definition.rb b/lib/datadog_api_client/v2/models/widget_definition.rb new file mode 100644 index 000000000000..052cd1967e93 --- /dev/null +++ b/lib/datadog_api_client/v2/models/widget_definition.rb @@ -0,0 +1,153 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The definition of a widget, including its type and configuration. + class WidgetDefinition + include BaseGenericModel + + # The display title of the widget. + attr_reader :title + + # Widget types that are allowed to be stored as individual records. + # This is not a complete list of dashboard and notebook widget types. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'title' => :'title', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'title' => :'String', + :'type' => :'WidgetType' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::WidgetDefinition` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'title') + self.title = attributes[:'title'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @title.nil? + return false if @title.to_s.length > 100 + return false if @title.to_s.length < 1 + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param title [Object] Object to be assigned + # @!visibility private + def title=(title) + if title.nil? + fail ArgumentError, 'invalid value for "title", title cannot be nil.' + end + if title.to_s.length > 100 + fail ArgumentError, 'invalid value for "title", the character length must be smaller than or equal to 100.' + end + if title.to_s.length < 1 + fail ArgumentError, 'invalid value for "title", the character length must be great than or equal to 1.' + end + @title = title + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + title == o.title && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [title, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/widget_experience_type.rb b/lib/datadog_api_client/v2/models/widget_experience_type.rb new file mode 100644 index 000000000000..486817d6d94f --- /dev/null +++ b/lib/datadog_api_client/v2/models/widget_experience_type.rb @@ -0,0 +1,29 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Widget experience types that differentiate between the products using the specific widget. + class WidgetExperienceType + include BaseEnumModel + + CCM_REPORTS = "ccm_reports".freeze + LOGS_REPORTS = "logs_reports".freeze + CSV_REPORTS = "csv_reports".freeze + PRODUCT_ANALYTICS = "product_analytics".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/widget_included_user.rb b/lib/datadog_api_client/v2/models/widget_included_user.rb new file mode 100644 index 000000000000..8bebb2f96f21 --- /dev/null +++ b/lib/datadog_api_client/v2/models/widget_included_user.rb @@ -0,0 +1,154 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # A user resource included in the response. + class WidgetIncludedUser + include BaseGenericModel + + # Attributes of an included user resource. + attr_accessor :attributes + + # The unique identifier of the user. + attr_reader :id + + # Users resource type. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'attributes' => :'attributes', + :'id' => :'id', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'attributes' => :'WidgetIncludedUserAttributes', + :'id' => :'String', + :'type' => :'String' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::WidgetIncludedUser` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'attributes') + self.attributes = attributes[:'attributes'] + end + + if attributes.key?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @id.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param id [Object] Object to be assigned + # @!visibility private + def id=(id) + if id.nil? + fail ArgumentError, 'invalid value for "id", id cannot be nil.' + end + @id = id + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + attributes == o.attributes && + id == o.id && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [attributes, id, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/widget_included_user_attributes.rb b/lib/datadog_api_client/v2/models/widget_included_user_attributes.rb new file mode 100644 index 000000000000..ef59859ff741 --- /dev/null +++ b/lib/datadog_api_client/v2/models/widget_included_user_attributes.rb @@ -0,0 +1,123 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Attributes of an included user resource. + class WidgetIncludedUserAttributes + include BaseGenericModel + + # The email handle of the user. + attr_accessor :handle + + # The display name of the user. + attr_accessor :name + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'handle' => :'handle', + :'name' => :'name' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'handle' => :'String', + :'name' => :'String' + } + end + + # List of attributes with nullable: true + # @!visibility private + def self.openapi_nullable + Set.new([ + :'name', + ]) + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::WidgetIncludedUserAttributes` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'handle') + self.handle = attributes[:'handle'] + end + + if attributes.key?(:'name') + self.name = attributes[:'name'] + end + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + handle == o.handle && + name == o.name && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [handle, name, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/widget_list_response.rb b/lib/datadog_api_client/v2/models/widget_list_response.rb new file mode 100644 index 000000000000..f3e74f8790d4 --- /dev/null +++ b/lib/datadog_api_client/v2/models/widget_list_response.rb @@ -0,0 +1,147 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Response containing a list of widgets. + class WidgetListResponse + include BaseGenericModel + + # List of widget resources. + attr_reader :data + + # Array of user resources related to the widgets. + attr_accessor :included + + # Metadata about the search results. + attr_accessor :meta + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data', + :'included' => :'included', + :'meta' => :'meta' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'Array', + :'included' => :'Array', + :'meta' => :'WidgetSearchMeta' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::WidgetListResponse` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'data') + if (value = attributes[:'data']).is_a?(Array) + self.data = value + end + end + + if attributes.key?(:'included') + if (value = attributes[:'included']).is_a?(Array) + self.included = value + end + end + + if attributes.key?(:'meta') + self.meta = attributes[:'meta'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @data.nil? + true + end + + # Custom attribute writer method with validation + # @param data [Object] Object to be assigned + # @!visibility private + def data=(data) + if data.nil? + fail ArgumentError, 'invalid value for "data", data cannot be nil.' + end + @data = data + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + data == o.data && + included == o.included && + meta == o.meta && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, included, meta, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/widget_relationship_data.rb b/lib/datadog_api_client/v2/models/widget_relationship_data.rb new file mode 100644 index 000000000000..040e428d16ce --- /dev/null +++ b/lib/datadog_api_client/v2/models/widget_relationship_data.rb @@ -0,0 +1,144 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Relationship data referencing a user resource. + class WidgetRelationshipData + include BaseGenericModel + + # The unique identifier of the user. + attr_reader :id + + # Users resource type. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'id' => :'id', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'id' => :'String', + :'type' => :'String' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::WidgetRelationshipData` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @id.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param id [Object] Object to be assigned + # @!visibility private + def id=(id) + if id.nil? + fail ArgumentError, 'invalid value for "id", id cannot be nil.' + end + @id = id + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + id == o.id && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [id, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/widget_relationship_item.rb b/lib/datadog_api_client/v2/models/widget_relationship_item.rb new file mode 100644 index 000000000000..e5a0b260d15a --- /dev/null +++ b/lib/datadog_api_client/v2/models/widget_relationship_item.rb @@ -0,0 +1,105 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # A JSON:API relationship to a user. + class WidgetRelationshipItem + include BaseGenericModel + + # Relationship data referencing a user resource. + attr_accessor :data + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'WidgetRelationshipData' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::WidgetRelationshipItem` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'data') + self.data = attributes[:'data'] + end + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + data == o.data && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/widget_relationships.rb b/lib/datadog_api_client/v2/models/widget_relationships.rb new file mode 100644 index 000000000000..8322ed087639 --- /dev/null +++ b/lib/datadog_api_client/v2/models/widget_relationships.rb @@ -0,0 +1,115 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Relationships of the widget resource. + class WidgetRelationships + include BaseGenericModel + + # A JSON:API relationship to a user. + attr_accessor :created_by + + # A JSON:API relationship to a user. + attr_accessor :modified_by + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'created_by' => :'created_by', + :'modified_by' => :'modified_by' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'created_by' => :'WidgetRelationshipItem', + :'modified_by' => :'WidgetRelationshipItem' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::WidgetRelationships` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'created_by') + self.created_by = attributes[:'created_by'] + end + + if attributes.key?(:'modified_by') + self.modified_by = attributes[:'modified_by'] + end + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + created_by == o.created_by && + modified_by == o.modified_by && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [created_by, modified_by, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/widget_response.rb b/lib/datadog_api_client/v2/models/widget_response.rb new file mode 100644 index 000000000000..498546b4623b --- /dev/null +++ b/lib/datadog_api_client/v2/models/widget_response.rb @@ -0,0 +1,135 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Response containing a single widget. + class WidgetResponse + include BaseGenericModel + + # A widget resource object. + attr_reader :data + + # Array of user resources related to the widget. + attr_accessor :included + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data', + :'included' => :'included' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'WidgetData', + :'included' => :'Array' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::WidgetResponse` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'data') + self.data = attributes[:'data'] + end + + if attributes.key?(:'included') + if (value = attributes[:'included']).is_a?(Array) + self.included = value + end + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @data.nil? + true + end + + # Custom attribute writer method with validation + # @param data [Object] Object to be assigned + # @!visibility private + def data=(data) + if data.nil? + fail ArgumentError, 'invalid value for "data", data cannot be nil.' + end + @data = data + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + data == o.data && + included == o.included && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, included, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/widget_search_meta.rb b/lib/datadog_api_client/v2/models/widget_search_meta.rb new file mode 100644 index 000000000000..111877dca9c6 --- /dev/null +++ b/lib/datadog_api_client/v2/models/widget_search_meta.rb @@ -0,0 +1,135 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Metadata about the search results. + class WidgetSearchMeta + include BaseGenericModel + + # Total number of widgets created by anyone. + attr_accessor :created_by_anyone_total + + # Total number of widgets created by the current user. + attr_accessor :created_by_you_total + + # Total number of widgets favorited by the current user. + attr_accessor :favorited_by_you_total + + # Total number of widgets matching the current filter criteria. + attr_accessor :filtered_total + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'created_by_anyone_total' => :'created_by_anyone_total', + :'created_by_you_total' => :'created_by_you_total', + :'favorited_by_you_total' => :'favorited_by_you_total', + :'filtered_total' => :'filtered_total' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'created_by_anyone_total' => :'Integer', + :'created_by_you_total' => :'Integer', + :'favorited_by_you_total' => :'Integer', + :'filtered_total' => :'Integer' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::WidgetSearchMeta` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'created_by_anyone_total') + self.created_by_anyone_total = attributes[:'created_by_anyone_total'] + end + + if attributes.key?(:'created_by_you_total') + self.created_by_you_total = attributes[:'created_by_you_total'] + end + + if attributes.key?(:'favorited_by_you_total') + self.favorited_by_you_total = attributes[:'favorited_by_you_total'] + end + + if attributes.key?(:'filtered_total') + self.filtered_total = attributes[:'filtered_total'] + end + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + created_by_anyone_total == o.created_by_anyone_total && + created_by_you_total == o.created_by_you_total && + favorited_by_you_total == o.favorited_by_you_total && + filtered_total == o.filtered_total && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [created_by_anyone_total, created_by_you_total, favorited_by_you_total, filtered_total, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/widget_type.rb b/lib/datadog_api_client/v2/models/widget_type.rb new file mode 100644 index 000000000000..30c827eac988 --- /dev/null +++ b/lib/datadog_api_client/v2/models/widget_type.rb @@ -0,0 +1,41 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Widget types that are allowed to be stored as individual records. + # This is not a complete list of dashboard and notebook widget types. + class WidgetType + include BaseEnumModel + + BAR_CHART = "bar_chart".freeze + CHANGE = "change".freeze + CLOUD_COST_SUMMARY = "cloud_cost_summary".freeze + COHORT = "cohort".freeze + FUNNEL = "funnel".freeze + GEOMAP = "geomap".freeze + LIST_STREAM = "list_stream".freeze + QUERY_TABLE = "query_table".freeze + QUERY_VALUE = "query_value".freeze + RETENTION_CURVE = "retention_curve".freeze + SANKEY = "sankey".freeze + SUNBURST = "sunburst".freeze + TIMESERIES = "timeseries".freeze + TOPLIST = "toplist".freeze + TREEMAP = "treemap".freeze + end +end