diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index c554255f1343..7e7379e197bf 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -4657,6 +4657,15 @@ components: - OPENURL - DOWNLOADFILE - SETSTATEVARIABLEVALUE + AppBuilderListTagsResponse: + description: The response for listing tags associated with apps. + properties: + data: + description: An array of tags. + items: + $ref: "#/components/schemas/TagData" + type: array + type: object AppDefinitionType: default: appDefinitions description: The app definition type. @@ -8891,6 +8900,161 @@ components: data: $ref: "#/components/schemas/BillingDimensionsMappingBody" type: object + BlueprintAttributes: + description: The attributes of a blueprint resource. + properties: + created_at: + description: The timestamp when the blueprint was created. + example: "" + format: date-time + type: string + definition: + $ref: "#/components/schemas/AppDefinitionType" + description: + description: A description of what the blueprint does. + example: "" + type: string + embedded_datastore_blueprints: + additionalProperties: {} + description: Embedded datastore blueprints. + type: object + embedded_native_actions: + description: Embedded native actions. + items: + $ref: "#/components/schemas/BlueprintNativeAction" + type: array + embedded_workflow_blueprints: + additionalProperties: {} + description: Embedded workflow blueprints. + type: object + integration_id: + description: The integration ID associated with the blueprint. + type: string + mocked_outputs: + additionalProperties: {} + description: Mocked outputs for testing the blueprint. + type: object + name: + description: The human-readable name of the blueprint. + example: AWS Service Manager + type: string + slug: + description: The unique slug identifier of the blueprint. + example: aws-service-manager + type: string + tags: + description: Tags associated with the blueprint. + items: + type: string + type: array + tile_background: + description: The background style of the blueprint tile. + type: string + tile_icon_action_fqn: + description: The fully qualified name of the action used as the tile icon. + type: string + updated_at: + description: The timestamp when the blueprint was last updated. + example: "" + format: date-time + type: string + required: + - slug + - name + - description + - definition + - created_at + - updated_at + type: object + BlueprintData: + description: A blueprint resource. + properties: + attributes: + $ref: "#/components/schemas/BlueprintAttributes" + id: + description: The ID of the blueprint. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + type: + $ref: "#/components/schemas/BlueprintDataType" + required: + - id + - type + - attributes + type: object + BlueprintDataType: + description: The resource type for a blueprint. + enum: + - blueprint + example: blueprint + type: string + x-enum-varnames: + - BLUEPRINT + BlueprintMetadataAttributes: + description: The attributes of a blueprint metadata resource. + properties: + created_at: + description: The timestamp when the blueprint was created. + example: "" + format: date-time + type: string + description: + description: A description of what the blueprint does. + example: "" + type: string + name: + description: The human-readable name of the blueprint. + example: AWS Service Manager + type: string + slug: + description: The unique slug identifier of the blueprint. + example: aws-service-manager + type: string + tags: + description: Tags associated with the blueprint. + items: + type: string + type: array + tile_background: + description: The background style of the blueprint tile. + type: string + tile_icon_action_fqn: + description: The fully qualified name of the action used as the tile icon. + type: string + updated_at: + description: The timestamp when the blueprint was last updated. + example: "" + format: date-time + type: string + required: + - slug + - name + - description + - created_at + - updated_at + type: object + BlueprintMetadataData: + description: A blueprint metadata resource. + properties: + attributes: + $ref: "#/components/schemas/BlueprintMetadataAttributes" + id: + description: The ID of the blueprint. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + type: + $ref: "#/components/schemas/BlueprintDataType" + required: + - id + - type + - attributes + type: object + BlueprintNativeAction: + additionalProperties: {} + description: An embedded native action in a blueprint. + type: object BranchCoverageSummaryRequest: description: Request object for getting code coverage summary for a branch. properties: @@ -32597,6 +32761,21 @@ components: type: string type: array type: object + GetBlueprintResponse: + description: The response for retrieving a single blueprint. + properties: + data: + $ref: "#/components/schemas/BlueprintData" + type: object + GetBlueprintsResponse: + description: The response for retrieving multiple blueprints. + properties: + data: + description: An array of blueprints. + items: + $ref: "#/components/schemas/BlueprintData" + type: array + type: object GetCustomFrameworkResponse: description: Response object to get a custom framework. properties: @@ -42966,6 +43145,15 @@ components: required: - data type: object + ListBlueprintsResponse: + description: The response for listing available blueprints. + properties: + data: + description: An array of blueprint metadata. + items: + $ref: "#/components/schemas/BlueprintMetadataData" + type: array + type: object ListCampaignsResponse: description: Response containing a list of campaigns. properties: @@ -78991,6 +79179,27 @@ components: - type - id type: object + TagData: + description: A tag resource associated with an app. + properties: + id: + description: The name of the tag. + example: production + type: string + type: + $ref: "#/components/schemas/TagDataType" + required: + - id + - type + type: object + TagDataType: + description: The resource type for a tag. + enum: + - tag + example: tag + type: string + x-enum-varnames: + - TAG TagsEventAttribute: description: Array of tags associated with your event. example: ["team:A"] @@ -92149,6 +92358,252 @@ paths: permissions: - apps_run - connections_read + "/api/v2/app-builder/blueprint/{blueprint_id}": + get: + description: Retrieve an app blueprint by its ID. + operationId: GetBlueprint + parameters: + - description: The ID of the blueprint to retrieve. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + in: path + name: blueprint_id + required: true + schema: + format: uuid + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2024-01-01T00:00:00Z" + definition: {} + description: Manage your AWS services from Datadog. + name: AWS Service Manager + slug: aws-service-manager + updated_at: "2024-01-01T00:00:00Z" + id: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + type: blueprint + schema: + $ref: "#/components/schemas/GetBlueprintResponse" + description: OK + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get Blueprint + tags: + - App Builder + "x-permission": + operator: OR + permissions: + - apps_run + - apps_write + - connections_read + - connections_write + /api/v2/app-builder/blueprints: + get: + description: List available app blueprints. + operationId: ListBlueprints + parameters: + - description: The number of blueprints to return per page. Defaults to 10. Maximum is 100. + in: query + name: limit + required: false + schema: + format: int64 + type: integer + - description: The page of results to return. Starts at 0. + in: query + name: page + required: false + schema: + format: int64 + type: integer + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + created_at: "2024-01-01T00:00:00Z" + description: Manage your AWS services from Datadog. + name: AWS Service Manager + slug: aws-service-manager + updated_at: "2024-01-01T00:00:00Z" + id: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + type: blueprint + schema: + $ref: "#/components/schemas/ListBlueprintsResponse" + description: OK + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List Blueprints + tags: + - App Builder + "x-permission": + operator: OR + permissions: + - apps_run + - apps_write + - connections_read + - connections_write + "/api/v2/app-builder/blueprints/integration-id/{integration_id}": + get: + description: List app blueprints associated with a specific integration ID. + operationId: GetBlueprintsByIntegrationId + parameters: + - description: The integration ID to filter blueprints by. + example: aws + in: path + name: integration_id + required: true + schema: + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + created_at: "2024-01-01T00:00:00Z" + definition: {} + description: Manage your AWS services from Datadog. + integration_id: aws + name: AWS Service Manager + slug: aws-service-manager + updated_at: "2024-01-01T00:00:00Z" + id: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + type: blueprint + schema: + $ref: "#/components/schemas/GetBlueprintsResponse" + description: OK + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get Blueprints by Integration ID + tags: + - App Builder + "x-permission": + operator: OR + permissions: + - apps_run + - apps_write + - connections_read + - connections_write + "/api/v2/app-builder/blueprints/slugs/{slugs}": + get: + description: Retrieve app blueprints by their slugs. + operationId: GetBlueprintsBySlugs + parameters: + - description: A comma-separated list of blueprint slugs. + example: aws-service-manager + in: path + name: slugs + required: true + schema: + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + created_at: "2024-01-01T00:00:00Z" + definition: {} + description: Manage your AWS services from Datadog. + name: AWS Service Manager + slug: aws-service-manager + updated_at: "2024-01-01T00:00:00Z" + id: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + type: blueprint + schema: + $ref: "#/components/schemas/GetBlueprintsResponse" + description: OK + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get Blueprints by Slugs + tags: + - App Builder + "x-permission": + operator: OR + permissions: + - apps_run + - apps_write + - connections_read + - connections_write + /api/v2/app-builder/tags: + get: + description: List all tags associated with the authenticated user's apps. + operationId: ListTags + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - id: production + type: tag + schema: + $ref: "#/components/schemas/AppBuilderListTagsResponse" + description: OK + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List Tags + tags: + - App Builder + "x-permission": + operator: OR + permissions: + - apps_run /api/v2/application_keys: get: description: List all application keys available for your org diff --git a/cassettes/features/v2/app_builder/Get-Blueprint-returns-Not-Found-response.frozen b/cassettes/features/v2/app_builder/Get-Blueprint-returns-Not-Found-response.frozen new file mode 100644 index 000000000000..d0257e0632b5 --- /dev/null +++ b/cassettes/features/v2/app_builder/Get-Blueprint-returns-Not-Found-response.frozen @@ -0,0 +1 @@ +2026-05-18T17:39:16.852Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Get-Blueprint-returns-Not-Found-response.yml b/cassettes/features/v2/app_builder/Get-Blueprint-returns-Not-Found-response.yml new file mode 100644 index 000000000000..9fc5e096b153 --- /dev/null +++ b/cassettes/features/v2/app_builder/Get-Blueprint-returns-Not-Found-response.yml @@ -0,0 +1,22 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 17:39:16 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/app-builder/blueprint/00000000-0000-0000-0000-000000000001 + response: + body: + encoding: UTF-8 + string: '{"errors":[{"status":"404","id":"75010b80-a44e-47bd-b903-e38f79efce20","title":"blueprint + not found","detail":"blueprint with id 00000000-0000-0000-0000-000000000001 + not found"}]}' + headers: + Content-Type: + - application/vnd.api+json + status: + code: 404 + message: Not Found +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/app_builder/Get-Blueprints-by-Integration-ID-returns-OK-response.frozen b/cassettes/features/v2/app_builder/Get-Blueprints-by-Integration-ID-returns-OK-response.frozen new file mode 100644 index 000000000000..0f3a3af5e16e --- /dev/null +++ b/cassettes/features/v2/app_builder/Get-Blueprints-by-Integration-ID-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T17:39:17.553Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Get-Blueprints-by-Integration-ID-returns-OK-response.yml b/cassettes/features/v2/app_builder/Get-Blueprints-by-Integration-ID-returns-OK-response.yml new file mode 100644 index 000000000000..afafa8dc0883 --- /dev/null +++ b/cassettes/features/v2/app_builder/Get-Blueprints-by-Integration-ID-returns-OK-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 17:39:17 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/app-builder/blueprints/integration-id/aws + response: + body: + encoding: UTF-8 + string: '{"data":[]}' + headers: + Content-Type: + - application/vnd.api+json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/app_builder/Get-Blueprints-by-Slugs-returns-OK-response.frozen b/cassettes/features/v2/app_builder/Get-Blueprints-by-Slugs-returns-OK-response.frozen new file mode 100644 index 000000000000..4d6bba7034fb --- /dev/null +++ b/cassettes/features/v2/app_builder/Get-Blueprints-by-Slugs-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T17:39:18.076Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Get-Blueprints-by-Slugs-returns-OK-response.yml b/cassettes/features/v2/app_builder/Get-Blueprints-by-Slugs-returns-OK-response.yml new file mode 100644 index 000000000000..4311fb0d6544 --- /dev/null +++ b/cassettes/features/v2/app_builder/Get-Blueprints-by-Slugs-returns-OK-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 17:39:18 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/app-builder/blueprints/slugs/aws-service-manager + response: + body: + encoding: UTF-8 + string: '{"data":[]}' + headers: + Content-Type: + - application/vnd.api+json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/app_builder/List-Blueprints-returns-OK-response.frozen b/cassettes/features/v2/app_builder/List-Blueprints-returns-OK-response.frozen new file mode 100644 index 000000000000..bf22ce4bbc0b --- /dev/null +++ b/cassettes/features/v2/app_builder/List-Blueprints-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T17:39:19.135Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/List-Blueprints-returns-OK-response.yml b/cassettes/features/v2/app_builder/List-Blueprints-returns-OK-response.yml new file mode 100644 index 000000000000..2bf87696c540 --- /dev/null +++ b/cassettes/features/v2/app_builder/List-Blueprints-returns-OK-response.yml @@ -0,0 +1,330 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 17:39:19 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/app-builder/blueprints + response: + body: + encoding: UTF-8 + string: "{\"data\":[{\"id\":\"faeef8bc-d9eb-43a1-b829-71782380279d\",\"type\"\ + :\"blueprint\",\"attributes\":{\"created_at\":\"2025-08-18T16:20:42.182618Z\"\ + ,\"description\":\"Manage AWS Services from a single unified interface.\"\ + ,\"name\":\"AWS Service Management Console\",\"slug\":\"aws_service_management_console\"\ + ,\"tags\":[\"aws\"],\"tile_background\":\"one-callout-table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.aws.organizations.listAccounts\",\"updated_at\":\"2026-05-18T17:02:03.016145Z\"\ + }},{\"id\":\"b2ba39de-d111-4940-b600-df6bb52661dc\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-08-15T00:00:19.017104Z\",\"description\"\ + :\"Manage projects, merge requests, commits, pipelines, jobs, branches, and\ + \ deployments all from a unified interface within Datadog.\",\"name\":\"GitLab\ + \ Manager\",\"slug\":\"gitlab_manager\",\"tags\":[\"software_delivery\"],\"\ + tile_background\":\"search-callout-table\",\"tile_icon_action_fqn\":\"com.datadoghq.gitlab.projects.listProjects\"\ + ,\"updated_at\":\"2026-05-18T17:01:20.81581Z\"}},{\"id\":\"398529ec-6c34-4e6d-bccf-5a34be7e6e1c\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-10-15T19:11:36.098607Z\"\ + ,\"description\":\"Unifying Jira, Confluence, GitHub, and Datadog Incidents\ + \ to highlight team and developer contribution with AI summaries.\",\"name\"\ + :\"Development Insights\",\"slug\":\"development-insights\",\"tags\":[\"datadog\"\ + ,\"uses_ai\"],\"tile_background\":\"search-callout-table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.dd.apps_datastore.getDatastoreItem\",\"updated_at\":\"2026-05-18T17:02:03.557012Z\"\ + }},{\"id\":\"1a9239ca-1d11-48c0-ad23-0f8ca00cd321\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-10-08T17:07:54.77105Z\",\"description\"\ + :\"Unified device visibility. Smarter investigations\",\"name\":\"Asset Investigation\ + \ App\",\"slug\":\"asset-intel-app\",\"tags\":[\"datadog\",\"uses_ai\"],\"\ + tile_background\":\"one-callout-table\",\"tile_icon_action_fqn\":\"com.datadoghq.dd.apps_datastore.listDatastoreItems\"\ + ,\"updated_at\":\"2026-05-18T17:02:03.371529Z\"}},{\"id\":\"d190e5cd-412c-4857-9993-6e98a478a64e\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-06-30T18:02:02.519433Z\"\ + ,\"description\":\"Manage Okta users, groups, and roles directly from Datadog\ + \ in a secure, unified interface.\",\"name\":\"Manage Okta Users, Groups,\ + \ and Roles\",\"slug\":\"manage-okta-user-groups-roles\",\"tags\":[\"security\"\ + ],\"tile_background\":\"one-callout-table\",\"tile_icon_action_fqn\":\"com.datadoghq.okta.add_user_to_group\"\ + ,\"updated_at\":\"2026-05-18T17:02:15.156458Z\"}},{\"id\":\"11feb11b-85d9-4e89-9f5c-0c96c04da5bc\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-06-30T18:02:02.176559Z\"\ + ,\"description\":\"Scaffolder app can be used for creating new software components\ + \ from template repositories. It takes inputs from developers and generates\ + \ a new repository or a PR based on the provided data and the template.\"\ + ,\"name\":\"Scaffold New Project in GitHub\",\"slug\":\"scaffold-new-project-in-github\"\ + ,\"tags\":[\"software_delivery\"],\"tile_background\":\"table-with-modal\"\ + ,\"tile_icon_action_fqn\":\"com.datadoghq.github.searchRepositories\",\"updated_at\"\ + :\"2026-05-18T17:02:09.340524Z\"}},{\"id\":\"6c5b24ef-c303-42ec-a305-351f5a1026cf\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-05-02T20:27:43.381741Z\"\ + ,\"description\":\"Monitor Kubernetes resources, restart deployments, delete\ + \ pods, and create tickets or incidents\",\"name\":\"Manage Kubernetes Deployments\"\ + ,\"slug\":\"manage-kubernetes-deployments\",\"tags\":[\"kubernetes\",\"private_action\"\ + ],\"tile_background\":\"table\",\"tile_icon_action_fqn\":\"com.datadoghq.kubernetes.apps.listDeployment\"\ + ,\"updated_at\":\"2026-05-18T17:01:26.003985Z\"}},{\"id\":\"dd0adb73-dd5f-4cb5-a22d-41946755958e\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-29T18:37:39.261927Z\"\ + ,\"description\":\"Stop RDS clusters \\u0026 instances and reduce your cost\"\ + ,\"name\":\"Manage RDS Clusters \\u0026 Instances\",\"slug\":\"rds_console\"\ + ,\"tags\":[\"aws\"],\"tile_background\":\"table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.aws.rds.list_db_instances\",\"updated_at\":\"2026-05-18T17:02:04.353815Z\"\ + }},{\"id\":\"8750a7cb-f076-474f-9f66-8d3f7c02ad3f\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-04-08T15:16:02.674864Z\",\"description\"\ + :\"Analyze your metrics in Datadog and create threshold alert monitors\",\"\ + name\":\"Explore Metrics \\u0026 Create Monitors\",\"slug\":\"datadog_metrics_and_monitors\"\ + ,\"tags\":[\"datadog\"],\"tile_background\":\"bento-box-table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.dd.metrics.listMetrics\",\"updated_at\":\"2026-05-18T17:02:03.452603Z\"\ + }},{\"id\":\"17127e2b-ea85-4c3a-ba3e-0f1dfa0c941a\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-04-30T21:11:28.731422Z\",\"description\"\ + :\"Fill out the form to generate the terraform for a new S3 bucket in Github\"\ + ,\"name\":\"Create S3 Bucket with a Terraform PR\",\"slug\":\"create-new-s3-bucket-terraform-pr\"\ + ,\"tags\":[\"software_delivery\"],\"tile_background\":\"table-with-modal\"\ + ,\"tile_icon_action_fqn\":\"com.datadoghq.github.searchRepositories\",\"updated_at\"\ + :\"2026-05-18T17:02:09.266218Z\"}},{\"id\":\"dc4075af-5e50-402f-abb2-6041db59d378\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-30T21:11:28.759103Z\"\ + ,\"description\":\"View open pull requests from your team in a table with\ + \ an AI-generated summary of the progress.\",\"name\":\"GitHub PR Summarizer\"\ + ,\"slug\":\"github-pr-summarizer\",\"tags\":[\"uses_ai\"],\"tile_background\"\ + :\"table\",\"tile_icon_action_fqn\":\"com.datadoghq.github.searchRepositories\"\ + ,\"updated_at\":\"2026-05-18T17:02:09.306954Z\"}},{\"id\":\"dc1bcad2-1eb7-456f-a32b-60e8ad7adf71\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-28T21:17:42.010916Z\"\ + ,\"description\":\"Start, stop or reboot your AWS EC2 instances\",\"name\"\ + :\"Manage EC2 Instances\",\"slug\":\"ec2_instance_manager\",\"tags\":[\"aws\"\ + ],\"tile_background\":\"one-callout-table\",\"tile_icon_action_fqn\":\"com.datadoghq.aws.ec2.describe_ec2_instances\"\ + ,\"updated_at\":\"2026-05-18T17:02:03.602628Z\"}},{\"id\":\"8d6b6284-10ba-42d0-829c-800e7c396a3b\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-30T08:38:29.623958Z\"\ + ,\"description\":\"Peek, purge or redrive SQS queues\",\"name\":\"Manage SQS\ + \ Queues\",\"slug\":\"sqs-queue-manager\",\"tags\":[\"aws\"],\"tile_background\"\ + :\"bento-box-table\",\"tile_icon_action_fqn\":\"com.datadoghq.aws.sqs.list_queues_with_attributes\"\ + ,\"updated_at\":\"2026-05-18T17:02:02.47498Z\"}},{\"id\":\"be6d5e27-a5a8-406a-9b0c-b779f6a94728\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-05-02T20:27:46.237126Z\"\ + ,\"description\":\"Create, view, or toggle on or off LaunchDarkly feature\ + \ flags\",\"name\":\"LaunchDarkly Feature Flag Manager\",\"slug\":\"launchdarkly_feature_flag_manager\"\ + ,\"tags\":[\"software_delivery\"],\"tile_background\":\"bento-box-table\"\ + ,\"tile_icon_action_fqn\":\"com.datadoghq.launchdarkly.listProjects\",\"updated_at\"\ + :\"2026-05-18T17:01:49.464175Z\"}},{\"id\":\"7566d028-b111-47a8-8ee2-b42efbd95edb\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-05-02T20:27:43.058949Z\"\ + ,\"description\":\"View, retry, or cancel deployments in Gitlab\",\"name\"\ + :\"Manage Gitlab Deployments\",\"slug\":\"gitlab-deployment-manager\",\"tags\"\ + :[\"software_delivery\"],\"tile_background\":\"table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.gitlab.getProjectDeployments\",\"updated_at\":\"2026-05-18T17:01:20.761242Z\"\ + }},{\"id\":\"dddf3b1a-47a4-400a-8485-321ad58f2779\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-04-30T08:38:30.229357Z\",\"description\"\ + :\"Create, view, and manage incidents in ServiceNow\",\"name\":\"Manage ServiceNow\ + \ Incidents\",\"slug\":\"servicenow_incident_manager\",\"tags\":[\"paging\"\ + ],\"tile_background\":\"table\",\"tile_icon_action_fqn\":\"com.datadoghq.servicenow.listIncidents\"\ + ,\"updated_at\":\"2026-05-18T17:02:17.797196Z\"}},{\"id\":\"df97f5ff-0ce8-4def-b1fb-151b427fc82d\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-09T16:50:07.302357Z\"\ + ,\"description\":\"Personalized developer homepage to prioritize tasks across\ + \ tools\",\"name\":\"Developer Homepage\",\"slug\":\"developer-homepage\"\ + ,\"tags\":[\"datadog\",\"uses_ai\"],\"tile_background\":\"one-callout-table\"\ + ,\"tile_icon_action_fqn\":\"com.datadoghq.dd.service_catalog.getServicePagerdutyOncall\"\ + ,\"updated_at\":\"2026-05-18T17:02:03.484343Z\"}},{\"id\":\"f290ac0f-ded8-4143-bb94-3dbe20f883d5\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-05-05T19:50:19.410003Z\"\ + ,\"description\":\"Explore mobile user sessions, using Luciq's observability\ + \ tools\",\"name\":\"Explore Luciq Sessions\",\"slug\":\"instabug-sessions-explorer\"\ + ,\"tags\":[\"observability\"],\"tile_background\":\"table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.http.request\",\"updated_at\":\"2026-05-18T17:01:48.606352Z\"\ + }},{\"id\":\"a7041749-fb41-451b-880f-10eddcdbbe1c\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-05-02T20:27:48.306432Z\",\"description\"\ + :\"View incidents across pages, update them, follow past updates, and create\ + \ new incidents on Statuspage \u2014 all directly from Datadog.\",\"name\"\ + :\"Manage Statuspage Incidents\",\"slug\":\"manage-statuspage-incidents\"\ + ,\"tags\":[\"software_delivery\"],\"tile_background\":\"search-callout-table\"\ + ,\"tile_icon_action_fqn\":\"com.datadoghq.statuspage.updateComponentStatus\"\ + ,\"updated_at\":\"2026-05-18T17:02:18.402711Z\"}},{\"id\":\"8839570e-1711-43e8-86f2-679f5ae0f8f9\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-30T21:11:28.769943Z\"\ + ,\"description\":\"Complete the form to provision a new EKS Cluster using\ + \ Terraform\",\"name\":\"Provision EKS Cluster\",\"slug\":\"provision-eks-cluster\"\ + ,\"tags\":[\"software_delivery\"],\"tile_background\":\"table-with-modal\"\ + ,\"tile_icon_action_fqn\":\"com.datadoghq.github.createOrUpdateFile\",\"updated_at\"\ + :\"2026-05-18T17:02:09.329157Z\"}},{\"id\":\"7f3fb131-0ff5-48d9-a997-87f99ef8b364\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-30T21:11:28.764126Z\"\ + ,\"description\":\"Select a service and trigger a restart in Github Workflows\"\ + ,\"name\":\"Restart Service With Github Actions\",\"slug\":\"github_actions_restart_service\"\ + ,\"tags\":[\"software_delivery\"],\"tile_background\":\"table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.github.actions.triggerWorkflowRun\",\"updated_at\":\"2026-05-18T17:02:09.318622Z\"\ + }},{\"id\":\"39ff9db2-aeed-4552-8080-d6a13fbfad74\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-04-29T18:37:39.278756Z\",\"description\"\ + :\"Create a new RDS DB instance from a form\",\"name\":\"Provision RDS Instance\"\ + ,\"slug\":\"rds_provision_instance\",\"tags\":[\"aws\"],\"tile_background\"\ + :\"table\",\"tile_icon_action_fqn\":\"com.datadoghq.aws.rds.createRdsDbInstance\"\ + ,\"updated_at\":\"2026-05-18T17:02:04.37742Z\"}},{\"id\":\"0b110831-0834-4898-84dc-292153807df1\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-29T18:37:39.21136Z\"\ + ,\"description\":\"View and manage Jira tickets by board, status, or sprint\"\ + ,\"name\":\"Manage Jira Tickets\",\"slug\":\"jira-ticket-manager\",\"tags\"\ + :[\"software_delivery\"],\"tile_background\":\"table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.jira.create_issue\",\"updated_at\":\"2026-05-18T17:02:04.247226Z\"\ + }},{\"id\":\"111cc4d5-1fdf-47aa-8bb1-25cc8ac7dff2\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-04-29T18:37:39.286928Z\",\"description\"\ + :\"Explore S3 files and view their content\",\"name\":\"Explore S3 Files\"\ + ,\"slug\":\"s3_file_explorer\",\"tags\":[\"aws\"],\"tile_background\":\"bento-box-table\"\ + ,\"tile_icon_action_fqn\":\"com.datadoghq.aws.s3.list_s3_buckets\",\"updated_at\"\ + :\"2026-05-18T17:02:02.170177Z\"}},{\"id\":\"773fce74-eec7-4170-a222-53e24261f812\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-29T18:37:39.307523Z\"\ + ,\"description\":\"Fill out the form to generate the terraform for new monitors\ + \ for a service.\",\"name\":\"Create Monitors for New Service\",\"slug\":\"\ + service-monitor-creation\",\"tags\":[\"datadog\"],\"tile_background\":\"table-with-modal\"\ + ,\"tile_icon_action_fqn\":\"com.datadoghq.dd.service_catalog.listServiceDefinitions\"\ + ,\"updated_at\":\"2026-05-18T17:02:04.388154Z\"}},{\"id\":\"b899cebf-0b56-4e6e-89c8-01afdb19e781\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-30T21:11:28.742329Z\"\ + ,\"description\":\"View opened, closed, and assigned pull requests to a specific\ + \ user\",\"name\":\"Github PR Pipeline\",\"slug\":\"github-pr-dashboard\"\ + ,\"tags\":[\"software_delivery\"],\"tile_background\":\"two-input-table\"\ + ,\"tile_icon_action_fqn\":\"com.datadoghq.github.searchRepositories\",\"updated_at\"\ + :\"2026-05-18T17:02:09.287376Z\"}},{\"id\":\"635fc8c5-0330-40e6-a859-b8fc3d76e331\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-05-02T20:27:46.466284Z\"\ + ,\"description\":\"Monitor the status of PagerDuty services and trigger incidents\ + \ when needed\",\"name\":\"Manage PagerDuty Services\",\"slug\":\"pagerduty_service_manager\"\ + ,\"tags\":[\"paging\"],\"tile_background\":\"table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.pagerduty.listServices\",\"updated_at\":\"2026-05-18T17:02:15.911013Z\"\ + }},{\"id\":\"8ada5164-b533-462e-80db-47e7d0fbed0d\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-04-28T21:17:42.02843Z\",\"description\"\ + :\"Select from your clusters and services, and easily scale tasks up or down\"\ + ,\"name\":\"Manage ECS Tasks\",\"slug\":\"ecs_task_manager\",\"tags\":[\"\ + aws\"],\"tile_background\":\"three-callout-prompt\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.aws.ecs.listEcsClusters\",\"updated_at\":\"2026-05-18T17:02:00.300159Z\"\ + }},{\"id\":\"e2f2ff93-709c-4eae-95ab-cbc0f2bc87f0\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-06-23T19:08:48.624684Z\",\"description\"\ + :\"List, explore details and re-run lambda functions\",\"name\":\"Manage Lambda\ + \ Functions\",\"slug\":\"lambda-function-manager\",\"tags\":[\"aws\"],\"tile_background\"\ + :\"table-with-modal\",\"tile_icon_action_fqn\":\"com.datadoghq.aws.lambda.listAWSLambdaFunction\"\ + ,\"updated_at\":\"2026-05-18T17:02:01.047167Z\"}},{\"id\":\"07f8536d-6342-4f30-8254-0c7b019707f0\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-30T08:38:30.332498Z\"\ + ,\"description\":\"Manage and update Statuspage components across pages.\"\ + ,\"name\":\"Manage Statuspage Components\",\"slug\":\"statuspage-component-manager\"\ + ,\"tags\":[\"software_delivery\"],\"tile_background\":\"one-callout-table\"\ + ,\"tile_icon_action_fqn\":\"com.datadoghq.statuspage.listIncidents\",\"updated_at\"\ + :\"2026-05-18T17:02:18.425899Z\"}},{\"id\":\"53d32e20-034c-4d46-ad54-f71f83ae7850\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-05-02T20:27:47.563531Z\"\ + ,\"description\":\"Manage, update or delete your AWS EKS clusters\",\"name\"\ + :\"Manage AWS EKS\",\"slug\":\"manage-aws-eks\",\"tags\":[\"aws\"],\"tile_background\"\ + :\"one-callout-table\",\"tile_icon_action_fqn\":\"com.datadoghq.aws.eks.updateClusterConfig\"\ + ,\"updated_at\":\"2026-05-18T17:02:04.264646Z\"}},{\"id\":\"8b8aa818-4ed3-40f5-b6ca-dd891c75f317\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-05-02T20:27:46.449263Z\"\ + ,\"description\":\"Trigger, acknowledge and resolve incidents from PagerDuty.\"\ + ,\"name\":\"Manage PagerDuty Incidents\",\"slug\":\"pagerduty_incident_manager\"\ + ,\"tags\":[\"paging\"],\"tile_background\":\"one-callout-table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.pagerduty.resolve_incident\",\"updated_at\":\"2026-05-18T17:02:15.703635Z\"\ + }},{\"id\":\"d4eac482-3518-412b-8424-31935f6fc1b6\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-04-29T18:37:39.247502Z\",\"description\"\ + :\"Enter a prompt to find the most likely causes of your regression\",\"name\"\ + :\"Find PR Regressions\",\"slug\":\"pr_regression_finder\",\"tags\":[\"uses_ai\"\ + ],\"tile_background\":\"search-callout-table\",\"tile_icon_action_fqn\":\"\ + com.datadoghq.openai.generateText\",\"updated_at\":\"2026-05-18T17:02:04.329232Z\"\ + }},{\"id\":\"5a617cdf-6d0c-4fc5-a26f-e123e37e1438\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-05-02T20:27:47.572068Z\",\"description\"\ + :\"List a Datastore in your app and manage its CRUD (Create, Read, Update,\ + \ Delete) operations directly from App Builder.\",\"name\":\"Manage Datastore\"\ + ,\"slug\":\"manage-datastore\",\"tags\":[\"datadog\"],\"tile_background\"\ + :\"search-callout-table\",\"tile_icon_action_fqn\":\"com.datadoghq.dd.apps_datastore.bulkPutDatastoreItem\"\ + ,\"updated_at\":\"2026-05-18T17:02:04.277122Z\"}},{\"id\":\"8caf15ac-f175-4b46-b867-dfbd73f5d1ba\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-29T18:37:39.237759Z\"\ + ,\"description\":\"Track on-call engineers across different teams and services,\ + \ and create incidents in OpsGenie\",\"name\":\"Manage OpsGenie On-call\"\ + ,\"slug\":\"manage-ops-genie-on-call\",\"tags\":[\"paging\"],\"tile_background\"\ + :\"one-callout-table\",\"tile_icon_action_fqn\":\"com.datadoghq.opsgenie.createIncident\"\ + ,\"updated_at\":\"2026-05-18T17:02:04.302057Z\"}},{\"id\":\"88a2c35b-31f4-4420-b6a0-f3da6a1fd740\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-14T02:00:39.687547Z\"\ + ,\"description\":\"Create new S3 buckets directly in AWS.\",\"name\":\"Create\ + \ S3 Bucket\",\"slug\":\"create-new-s3-bucket\",\"tags\":[\"aws\"],\"tile_background\"\ + :\"table\",\"tile_icon_action_fqn\":\"com.datadoghq.aws.s3.create_s3_bucket\"\ + ,\"updated_at\":\"2026-05-18T17:02:02.159767Z\"}},{\"id\":\"eef5812e-45ef-47a4-9570-4c6b7a11bc4f\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-05-02T20:27:43.692089Z\"\ + ,\"description\":\"Prompt OpenAI and get responses from a text inputs\",\"\ + name\":\"Prompt OpenAI\",\"slug\":\"openai-prompter\",\"tags\":[\"uses_ai\"\ + ],\"tile_background\":\"table\",\"tile_icon_action_fqn\":\"com.datadoghq.openai.generateText\"\ + ,\"updated_at\":\"2026-05-18T17:01:29.850296Z\"}},{\"id\":\"f333c674-1010-4bf6-9b7b-215f6c88f878\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-05-02T20:27:46.458292Z\"\ + ,\"description\":\"Track on-call engineers across different teams and services\"\ + ,\"name\":\"Manage PagerDuty On-call\",\"slug\":\"pagerduty_oncall_manager\"\ + ,\"tags\":[\"paging\"],\"tile_background\":\"people-modal\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.pagerduty.listServices\",\"updated_at\":\"2026-05-18T17:02:15.724318Z\"\ + }},{\"id\":\"5761abf4-771d-42e6-9898-5eae6465e94c\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-04-29T18:37:39.317021Z\",\"description\"\ + :\"Manage, start, restart, and stop your Azure Web Apps\",\"name\":\"Manage\ + \ Azure Web Apps\",\"slug\":\"manage-azure-web-apps\",\"tags\":[\"azure\"\ + ],\"tile_background\":\"one-callout-table\",\"tile_icon_action_fqn\":\"com.datadoghq.azure.apps.restartWebApp\"\ + ,\"updated_at\":\"2026-05-18T17:02:04.40436Z\"}},{\"id\":\"858a49c0-7781-46ef-b4e0-7fc7c96a311b\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-06-23T19:08:48.677682Z\"\ + ,\"description\":\"View state machines and stop, start or pause their associated\ + \ executions\",\"name\":\"Manage Step Functions\",\"slug\":\"step-functions-console\"\ + ,\"tags\":[\"aws\"],\"tile_background\":\"table-with-modal\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.aws.stepfunctions.listStateMachines\",\"updated_at\":\"2026-05-18T17:02:02.699196Z\"\ + }},{\"id\":\"4c19fab0-3269-46e4-a2dd-365ba5bb2619\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-04-28T21:17:42.057615Z\",\"description\"\ + :\"List, start, restart, power off and deallocate your VMs\",\"name\":\"Manage\ + \ Azure Virtual Machines\",\"slug\":\"azure_vms_management_console\",\"tags\"\ + :[\"azure\"],\"tile_background\":\"one-callout-table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.azure.vm.listSubscriptionVirtualMachines\",\"updated_at\"\ + :\"2026-05-18T17:02:06.221711Z\"}},{\"id\":\"a276b5f5-c6c0-4329-af64-d630d25593dc\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-28T21:17:42.000627Z\"\ + ,\"description\":\"View DynamoDB table status and perform CRUD operations\"\ + ,\"name\":\"Manage DynamoDB\",\"slug\":\"dynamodb_console\",\"tags\":[\"aws\"\ + ],\"tile_background\":\"bento-box-table\",\"tile_icon_action_fqn\":\"com.datadoghq.aws.dynamodb.describe_table\"\ + ,\"updated_at\":\"2026-05-18T17:02:00.038636Z\"}},{\"id\":\"cc9872f6-9a15-454e-8f02-beec66ce1bde\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-28T21:17:42.039633Z\"\ + ,\"description\":\"Rebuild or restart Elastic Beanstalk applications\",\"\ + name\":\"Manage Elastic Beanstalk Apps\",\"slug\":\"elastic_beanstalk_console\"\ + ,\"tags\":[\"aws\"],\"tile_background\":\"search-callout-table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.aws.elasticbeanstalk.listApplications\",\"updated_at\":\"\ + 2026-05-18T17:02:03.613799Z\"}},{\"id\":\"84c7ba6f-d69b-4e7c-aa0b-56ba9022ff50\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-05-05T19:50:21.700674Z\"\ + ,\"description\":\"List, start or stop your Compute Engine instances\",\"\ + name\":\"Manage Google Cloud Compute\",\"slug\":\"gcp-cloud-compute-management-console\"\ + ,\"tags\":[\"gcp\"],\"tile_background\":\"one-callout-table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.gcp.compute.listInstances\",\"updated_at\":\"2026-05-18T17:02:11.166133Z\"\ + }},{\"id\":\"e426403a-5d30-49d2-abed-d2372e8c7744\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-05-02T20:27:46.472898Z\",\"description\"\ + :\"Select a service \\u0026 trigger an incident\",\"name\":\"Trigger Incident\ + \ in Pagerduty\",\"slug\":\"pagerduty_trigger_incident\",\"tags\":[\"paging\"\ + ,\"datadog\"],\"tile_background\":\"table\",\"tile_icon_action_fqn\":\"com.datadoghq.pagerduty.trigger_incident\"\ + ,\"updated_at\":\"2026-05-18T17:02:15.92158Z\"}},{\"id\":\"e6b74e1f-7f36-49b4-abfe-7c9ebf067ff2\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-04-08T20:09:58.363312Z\"\ + ,\"description\":\"View autoscaling group capacity and trigger a change\"\ + ,\"name\":\"Manage AWS Autoscaling Groups\",\"slug\":\"aws_autoscaling_groups\"\ + ,\"tags\":[\"aws\"],\"tile_background\":\"three-callout-prompt\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.aws.autoscaling.describe_auto_scaling_group\",\"updated_at\"\ + :\"2026-05-18T17:02:03.420659Z\"}},{\"id\":\"9913dec9-e949-45e6-908a-587ffb823a0c\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-05-02T20:27:47.592154Z\"\ + ,\"description\":\"Renew, describe, delete and request private and public\ + \ certificates\",\"name\":\"Manage AWS Certificates\",\"slug\":\"manage-aws-certificates\"\ + ,\"tags\":[\"aws\"],\"tile_background\":\"one-callout-table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.aws.acm.requestPublicCertificate\",\"updated_at\":\"2026-05-18T17:02:04.316282Z\"\ + }},{\"id\":\"d837c301-edcd-48fb-8250-a4e9fb9add11\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-04-29T18:37:39.200777Z\",\"description\"\ + :\"Create new tickets in Jira\",\"name\":\"Create Jira Ticket\",\"slug\":\"\ + jira-ticket-creator\",\"tags\":[\"software_delivery\"],\"tile_background\"\ + :\"table\",\"tile_icon_action_fqn\":\"com.datadoghq.jira.create_issue\",\"\ + updated_at\":\"2026-05-18T17:02:04.229225Z\"}},{\"id\":\"25bc3ad1-724c-4750-9bc2-112a59e76b6a\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-08-22T01:16:30.733428Z\"\ + ,\"description\":\"Use this form to create a new entity definition YAML in\ + \ Github.\",\"name\":\"Create Catalog Entity Definition\",\"slug\":\"create_catalog_entity_definition\"\ + ,\"tags\":[\"datadog\",\"software_delivery\"],\"tile_background\":\"people-modal\"\ + ,\"tile_icon_action_fqn\":\"com.datadoghq.github.createOrUpdateFile\",\"updated_at\"\ + :\"2026-05-18T17:02:03.431113Z\"}},{\"id\":\"7d2e21d5-1e1f-4abc-aebb-880ef86882f5\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-07-21T00:43:24.42963Z\"\ + ,\"description\":\"How to add bar charts to apps\",\"name\":\"How To: Bar\ + \ Charts\",\"slug\":\"how_to__bar_charts\",\"tags\":[\"datadog\",\"howTo\"\ + ],\"tile_background\":\"table\",\"tile_icon_action_fqn\":\"com.datadoghq.dd.teams.listTeams\"\ + ,\"updated_at\":\"2026-05-18T17:02:03.801347Z\"}},{\"id\":\"6bf5671b-3195-4ea5-b3fe-eba97d25b26a\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-07-02T16:43:02.148346Z\"\ + ,\"description\":\"Scaffolder app is used to create new software components\ + \ from template repositories. It takes inputs from developers and generates\ + \ a new repository or a PR based on the provided data and the template.\"\ + ,\"name\":\"Scaffold New Project in GitLab\",\"slug\":\"scaffold-new-project-in-gitlab\"\ + ,\"tags\":[\"software_delivery\"],\"tile_background\":\"table-with-modal\"\ + ,\"tile_icon_action_fqn\":\"com.datadoghq.gitlab.getProjectDeployments\",\"\ + updated_at\":\"2026-05-18T17:01:20.860684Z\"}},{\"id\":\"f5998cda-c054-48d9-9e88-ae37ab1990cb\"\ + ,\"type\":\"blueprint\",\"attributes\":{\"created_at\":\"2025-07-18T16:51:32.667124Z\"\ + ,\"description\":\"See how to make form fields dynamic and dependent on other\ + \ fields.\",\"name\":\"How to: Form With Dynamic Fields\",\"slug\":\"how_to__form_with_dynamic_fields\"\ + ,\"tags\":[\"howTo\"],\"tile_background\":\"people-modal\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.github.createOrUpdateFile\",\"updated_at\":\"2026-05-18T17:02:03.923635Z\"\ + }},{\"id\":\"6e27f913-7170-4977-b2b1-243015b9fafd\",\"type\":\"blueprint\"\ + ,\"attributes\":{\"created_at\":\"2025-07-17T23:29:17.423877Z\",\"description\"\ + :\"How to persist your app in a datastore using CRUD (Create, Read, Update,\ + \ Delete) operations\",\"name\":\"How To: Persist Data in Datastore\",\"slug\"\ + :\"how_to__persist_data_in_datastore_using_crud\",\"tags\":[\"datadog\",\"\ + howTo\"],\"tile_background\":\"search-callout-table\",\"tile_icon_action_fqn\"\ + :\"com.datadoghq.dd.apps_datastore.listDatastoreItems\",\"updated_at\":\"\ + 2026-05-18T17:02:04.018585Z\"}}]}" + headers: + Content-Type: + - application/vnd.api+json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/app_builder/List-Tags-returns-OK-response.frozen b/cassettes/features/v2/app_builder/List-Tags-returns-OK-response.frozen new file mode 100644 index 000000000000..0b99c48bf67f --- /dev/null +++ b/cassettes/features/v2/app_builder/List-Tags-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T17:39:19.668Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/List-Tags-returns-OK-response.yml b/cassettes/features/v2/app_builder/List-Tags-returns-OK-response.yml new file mode 100644 index 000000000000..208d5a8dfd5e --- /dev/null +++ b/cassettes/features/v2/app_builder/List-Tags-returns-OK-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 17:39:19 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/app-builder/tags + response: + body: + encoding: UTF-8 + string: '{"data":[]}' + headers: + Content-Type: + - application/vnd.api+json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/examples/v2/app-builder/GetBlueprint.rb b/examples/v2/app-builder/GetBlueprint.rb new file mode 100644 index 000000000000..be7e7623680b --- /dev/null +++ b/examples/v2/app-builder/GetBlueprint.rb @@ -0,0 +1,5 @@ +# Get Blueprint returns "OK" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::AppBuilderAPI.new +p api_instance.get_blueprint("9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d") diff --git a/examples/v2/app-builder/GetBlueprintsByIntegrationId.rb b/examples/v2/app-builder/GetBlueprintsByIntegrationId.rb new file mode 100644 index 000000000000..f16883964236 --- /dev/null +++ b/examples/v2/app-builder/GetBlueprintsByIntegrationId.rb @@ -0,0 +1,5 @@ +# Get Blueprints by Integration ID returns "OK" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::AppBuilderAPI.new +p api_instance.get_blueprints_by_integration_id("aws") diff --git a/examples/v2/app-builder/GetBlueprintsBySlugs.rb b/examples/v2/app-builder/GetBlueprintsBySlugs.rb new file mode 100644 index 000000000000..570ffc972670 --- /dev/null +++ b/examples/v2/app-builder/GetBlueprintsBySlugs.rb @@ -0,0 +1,5 @@ +# Get Blueprints by Slugs returns "OK" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::AppBuilderAPI.new +p api_instance.get_blueprints_by_slugs("aws-service-manager") diff --git a/examples/v2/app-builder/ListBlueprints.rb b/examples/v2/app-builder/ListBlueprints.rb new file mode 100644 index 000000000000..d5dd18a258ee --- /dev/null +++ b/examples/v2/app-builder/ListBlueprints.rb @@ -0,0 +1,5 @@ +# List Blueprints returns "OK" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::AppBuilderAPI.new +p api_instance.list_blueprints() diff --git a/examples/v2/app-builder/ListTags.rb b/examples/v2/app-builder/ListTags.rb new file mode 100644 index 000000000000..295663cbb6ab --- /dev/null +++ b/examples/v2/app-builder/ListTags.rb @@ -0,0 +1,5 @@ +# List Tags returns "OK" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::AppBuilderAPI.new +p api_instance.list_tags() diff --git a/features/scenarios_model_mapping.rb b/features/scenarios_model_mapping.rb index 6e10b197f4fe..3d1ace32a7d2 100644 --- a/features/scenarios_model_mapping.rb +++ b/features/scenarios_model_mapping.rb @@ -1389,6 +1389,19 @@ "limit" => "Integer", "page" => "Integer", }, + "v2.GetBlueprint" => { + "blueprint_id" => "UUID", + }, + "v2.ListBlueprints" => { + "limit" => "Integer", + "page" => "Integer", + }, + "v2.GetBlueprintsByIntegrationId" => { + "integration_id" => "String", + }, + "v2.GetBlueprintsBySlugs" => { + "slugs" => "String", + }, "v2.ListAuditLogs" => { "filter_query" => "String", "filter_from" => "Time", diff --git a/features/v2/app_builder.feature b/features/v2/app_builder.feature index bbc0caf196fd..4272ad208f86 100644 --- a/features/v2/app_builder.feature +++ b/features/v2/app_builder.feature @@ -113,7 +113,7 @@ Feature: App Builder When the request is sent Then the response status is 400 Bad Request - @skip-typescript @team:DataDog/app-builder-backend + @skip @team:DataDog/app-builder-backend Scenario: Get App returns "Gone" response Given new "GetApp" request And there is a valid "app" in the system @@ -139,6 +139,34 @@ Feature: App Builder And the response "data.id" has the same value as "app.data.id" And the response "data.type" is equal to "appDefinitions" + @team:DataDog/app-builder-backend + Scenario: Get Blueprint returns "Not Found" response + Given new "GetBlueprint" request + And request contains "blueprint_id" parameter with value "00000000-0000-0000-0000-000000000001" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/app-builder-backend + Scenario: Get Blueprint returns "OK" response + Given new "GetBlueprint" request + And request contains "blueprint_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @team:DataDog/app-builder-backend + Scenario: Get Blueprints by Integration ID returns "OK" response + Given new "GetBlueprintsByIntegrationId" request + And request contains "integration_id" parameter with value "aws" + When the request is sent + Then the response status is 200 OK + + @team:DataDog/app-builder-backend + Scenario: Get Blueprints by Slugs returns "OK" response + Given new "GetBlueprintsBySlugs" request + And request contains "slugs" parameter with value "aws-service-manager" + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/app-builder-backend Scenario: List App Versions returns "Bad Request" response Given new "ListAppVersions" request @@ -172,6 +200,18 @@ Feature: App Builder When the request is sent Then the response status is 200 OK + @team:DataDog/app-builder-backend + Scenario: List Blueprints returns "OK" response + Given new "ListBlueprints" request + When the request is sent + Then the response status is 200 OK + + @team:DataDog/app-builder-backend + Scenario: List Tags returns "OK" response + Given new "ListTags" request + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/app-builder-backend Scenario: Name App Version returns "Bad Request" response Given new "UpdateAppVersionName" request diff --git a/features/v2/undo.json b/features/v2/undo.json index faa660d7de0b..f4a69312965b 100644 --- a/features/v2/undo.json +++ b/features/v2/undo.json @@ -687,6 +687,36 @@ "type": "safe" } }, + "GetBlueprint": { + "tag": "App Builder", + "undo": { + "type": "safe" + } + }, + "ListBlueprints": { + "tag": "App Builder", + "undo": { + "type": "safe" + } + }, + "GetBlueprintsByIntegrationId": { + "tag": "App Builder", + "undo": { + "type": "safe" + } + }, + "GetBlueprintsBySlugs": { + "tag": "App Builder", + "undo": { + "type": "safe" + } + }, + "ListTags": { + "tag": "App Builder", + "undo": { + "type": "safe" + } + }, "ListApplicationKeys": { "tag": "Key Management", "undo": { diff --git a/lib/datadog_api_client/inflector.rb b/lib/datadog_api_client/inflector.rb index 45d174b12c04..f0617a2084f6 100644 --- a/lib/datadog_api_client/inflector.rb +++ b/lib/datadog_api_client/inflector.rb @@ -1216,6 +1216,7 @@ def overrides "v2.app_builder_event" => "AppBuilderEvent", "v2.app_builder_event_name" => "AppBuilderEventName", "v2.app_builder_event_type" => "AppBuilderEventType", + "v2.app_builder_list_tags_response" => "AppBuilderListTagsResponse", "v2.app_definition_type" => "AppDefinitionType", "v2.app_deployment_type" => "AppDeploymentType", "v2.app_favorite_type" => "AppFavoriteType", @@ -1566,6 +1567,11 @@ def overrides "v2.billing_dimensions_mapping_body_item_attributes_endpoints_items" => "BillingDimensionsMappingBodyItemAttributesEndpointsItems", "v2.billing_dimensions_mapping_body_item_attributes_endpoints_items_status" => "BillingDimensionsMappingBodyItemAttributesEndpointsItemsStatus", "v2.billing_dimensions_mapping_response" => "BillingDimensionsMappingResponse", + "v2.blueprint_attributes" => "BlueprintAttributes", + "v2.blueprint_data" => "BlueprintData", + "v2.blueprint_data_type" => "BlueprintDataType", + "v2.blueprint_metadata_attributes" => "BlueprintMetadataAttributes", + "v2.blueprint_metadata_data" => "BlueprintMetadataData", "v2.branch_coverage_summary_request" => "BranchCoverageSummaryRequest", "v2.branch_coverage_summary_request_attributes" => "BranchCoverageSummaryRequestAttributes", "v2.branch_coverage_summary_request_data" => "BranchCoverageSummaryRequestData", @@ -3003,6 +3009,8 @@ def overrides "v2.get_app_response" => "GetAppResponse", "v2.get_app_response_data" => "GetAppResponseData", "v2.get_app_response_data_attributes" => "GetAppResponseDataAttributes", + "v2.get_blueprint_response" => "GetBlueprintResponse", + "v2.get_blueprints_response" => "GetBlueprintsResponse", "v2.get_custom_framework_response" => "GetCustomFrameworkResponse", "v2.get_data_deletions_response_body" => "GetDataDeletionsResponseBody", "v2.get_device_attributes" => "GetDeviceAttributes", @@ -3535,6 +3543,7 @@ def overrides "v2.list_apps_response_meta_page" => "ListAppsResponseMetaPage", "v2.list_app_versions_response" => "ListAppVersionsResponse", "v2.list_assets_sbo_ms_response" => "ListAssetsSBOMsResponse", + "v2.list_blueprints_response" => "ListBlueprintsResponse", "v2.list_campaigns_response" => "ListCampaignsResponse", "v2.list_connections_response" => "ListConnectionsResponse", "v2.list_connections_response_data" => "ListConnectionsResponseData", @@ -6000,6 +6009,8 @@ def overrides "v2.table_row_resource_data_attributes" => "TableRowResourceDataAttributes", "v2.table_row_resource_data_type" => "TableRowResourceDataType", "v2.table_row_resource_identifier" => "TableRowResourceIdentifier", + "v2.tag_data" => "TagData", + "v2.tag_data_type" => "TagDataType", "v2.targeting_rule" => "TargetingRule", "v2.targeting_rule_request" => "TargetingRuleRequest", "v2.team" => "Team", diff --git a/lib/datadog_api_client/v2/api/app_builder_api.rb b/lib/datadog_api_client/v2/api/app_builder_api.rb index 00b73ec0b2cb..20826e05435f 100644 --- a/lib/datadog_api_client/v2/api/app_builder_api.rb +++ b/lib/datadog_api_client/v2/api/app_builder_api.rb @@ -361,6 +361,201 @@ def get_app_with_http_info(app_id, opts = {}) return data, status_code, headers end + # Get Blueprint. + # + # @see #get_blueprint_with_http_info + def get_blueprint(blueprint_id, opts = {}) + data, _status_code, _headers = get_blueprint_with_http_info(blueprint_id, opts) + data + end + + # Get Blueprint. + # + # Retrieve an app blueprint by its ID. + # + # @param blueprint_id [UUID] The ID of the blueprint to retrieve. + # @param opts [Hash] the optional parameters + # @return [Array<(GetBlueprintResponse, Integer, Hash)>] GetBlueprintResponse data, response status code and response headers + def get_blueprint_with_http_info(blueprint_id, opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: AppBuilderAPI.get_blueprint ...' + end + # verify the required parameter 'blueprint_id' is set + if @api_client.config.client_side_validation && blueprint_id.nil? + fail ArgumentError, "Missing the required parameter 'blueprint_id' when calling AppBuilderAPI.get_blueprint" + end + # resource path + local_var_path = '/api/v2/app-builder/blueprint/{blueprint_id}'.sub('{blueprint_id}', CGI.escape(blueprint_id.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] || 'GetBlueprintResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :get_blueprint, + :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: AppBuilderAPI#get_blueprint\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Get Blueprints by Integration ID. + # + # @see #get_blueprints_by_integration_id_with_http_info + def get_blueprints_by_integration_id(integration_id, opts = {}) + data, _status_code, _headers = get_blueprints_by_integration_id_with_http_info(integration_id, opts) + data + end + + # Get Blueprints by Integration ID. + # + # List app blueprints associated with a specific integration ID. + # + # @param integration_id [String] The integration ID to filter blueprints by. + # @param opts [Hash] the optional parameters + # @return [Array<(GetBlueprintsResponse, Integer, Hash)>] GetBlueprintsResponse data, response status code and response headers + def get_blueprints_by_integration_id_with_http_info(integration_id, opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: AppBuilderAPI.get_blueprints_by_integration_id ...' + end + # verify the required parameter 'integration_id' is set + if @api_client.config.client_side_validation && integration_id.nil? + fail ArgumentError, "Missing the required parameter 'integration_id' when calling AppBuilderAPI.get_blueprints_by_integration_id" + end + # resource path + local_var_path = '/api/v2/app-builder/blueprints/integration-id/{integration_id}'.sub('{integration_id}', CGI.escape(integration_id.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] || 'GetBlueprintsResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :get_blueprints_by_integration_id, + :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: AppBuilderAPI#get_blueprints_by_integration_id\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Get Blueprints by Slugs. + # + # @see #get_blueprints_by_slugs_with_http_info + def get_blueprints_by_slugs(slugs, opts = {}) + data, _status_code, _headers = get_blueprints_by_slugs_with_http_info(slugs, opts) + data + end + + # Get Blueprints by Slugs. + # + # Retrieve app blueprints by their slugs. + # + # @param slugs [String] A comma-separated list of blueprint slugs. + # @param opts [Hash] the optional parameters + # @return [Array<(GetBlueprintsResponse, Integer, Hash)>] GetBlueprintsResponse data, response status code and response headers + def get_blueprints_by_slugs_with_http_info(slugs, opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: AppBuilderAPI.get_blueprints_by_slugs ...' + end + # verify the required parameter 'slugs' is set + if @api_client.config.client_side_validation && slugs.nil? + fail ArgumentError, "Missing the required parameter 'slugs' when calling AppBuilderAPI.get_blueprints_by_slugs" + end + # resource path + local_var_path = '/api/v2/app-builder/blueprints/slugs/{slugs}'.sub('{slugs}', CGI.escape(slugs.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] || 'GetBlueprintsResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :get_blueprints_by_slugs, + :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: AppBuilderAPI#get_blueprints_by_slugs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + # List Apps. # # @see #list_apps_with_http_info @@ -512,6 +707,130 @@ def list_app_versions_with_http_info(app_id, opts = {}) return data, status_code, headers end + # List Blueprints. + # + # @see #list_blueprints_with_http_info + def list_blueprints(opts = {}) + data, _status_code, _headers = list_blueprints_with_http_info(opts) + data + end + + # List Blueprints. + # + # List available app blueprints. + # + # @param opts [Hash] the optional parameters + # @option opts [Integer] :limit The number of blueprints to return per page. Defaults to 10. Maximum is 100. + # @option opts [Integer] :page The page of results to return. Starts at 0. + # @return [Array<(ListBlueprintsResponse, Integer, Hash)>] ListBlueprintsResponse data, response status code and response headers + def list_blueprints_with_http_info(opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: AppBuilderAPI.list_blueprints ...' + end + # resource path + local_var_path = '/api/v2/app-builder/blueprints' + + # query parameters + query_params = opts[:query_params] || {} + query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil? + query_params[:'page'] = opts[:'page'] if !opts[:'page'].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] || 'ListBlueprintsResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :list_blueprints, + :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: AppBuilderAPI#list_blueprints\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # List Tags. + # + # @see #list_tags_with_http_info + def list_tags(opts = {}) + data, _status_code, _headers = list_tags_with_http_info(opts) + data + end + + # List Tags. + # + # List all tags associated with the authenticated user's apps. + # + # @param opts [Hash] the optional parameters + # @return [Array<(AppBuilderListTagsResponse, Integer, Hash)>] AppBuilderListTagsResponse data, response status code and response headers + def list_tags_with_http_info(opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: AppBuilderAPI.list_tags ...' + end + # resource path + local_var_path = '/api/v2/app-builder/tags' + + # 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] || 'AppBuilderListTagsResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :list_tags, + :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: AppBuilderAPI#list_tags\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + # Publish App. # # @see #publish_app_with_http_info diff --git a/lib/datadog_api_client/v2/models/app_builder_list_tags_response.rb b/lib/datadog_api_client/v2/models/app_builder_list_tags_response.rb new file mode 100644 index 000000000000..e26a860ad3ba --- /dev/null +++ b/lib/datadog_api_client/v2/models/app_builder_list_tags_response.rb @@ -0,0 +1,107 @@ +=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 response for listing tags associated with apps. + class AppBuilderListTagsResponse + include BaseGenericModel + + # An array of tags. + 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' => :'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::AppBuilderListTagsResponse` 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 + 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/blueprint_attributes.rb b/lib/datadog_api_client/v2/models/blueprint_attributes.rb new file mode 100644 index 000000000000..3dd576998d3d --- /dev/null +++ b/lib/datadog_api_client/v2/models/blueprint_attributes.rb @@ -0,0 +1,312 @@ +=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 attributes of a blueprint resource. + class BlueprintAttributes + include BaseGenericModel + + # The timestamp when the blueprint was created. + attr_reader :created_at + + # The app definition type. + attr_reader :definition + + # A description of what the blueprint does. + attr_reader :description + + # Embedded datastore blueprints. + attr_accessor :embedded_datastore_blueprints + + # Embedded native actions. + attr_accessor :embedded_native_actions + + # Embedded workflow blueprints. + attr_accessor :embedded_workflow_blueprints + + # The integration ID associated with the blueprint. + attr_accessor :integration_id + + # Mocked outputs for testing the blueprint. + attr_accessor :mocked_outputs + + # The human-readable name of the blueprint. + attr_reader :name + + # The unique slug identifier of the blueprint. + attr_reader :slug + + # Tags associated with the blueprint. + attr_accessor :tags + + # The background style of the blueprint tile. + attr_accessor :tile_background + + # The fully qualified name of the action used as the tile icon. + attr_accessor :tile_icon_action_fqn + + # The timestamp when the blueprint was last updated. + attr_reader :updated_at + + 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', + :'description' => :'description', + :'embedded_datastore_blueprints' => :'embedded_datastore_blueprints', + :'embedded_native_actions' => :'embedded_native_actions', + :'embedded_workflow_blueprints' => :'embedded_workflow_blueprints', + :'integration_id' => :'integration_id', + :'mocked_outputs' => :'mocked_outputs', + :'name' => :'name', + :'slug' => :'slug', + :'tags' => :'tags', + :'tile_background' => :'tile_background', + :'tile_icon_action_fqn' => :'tile_icon_action_fqn', + :'updated_at' => :'updated_at' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'created_at' => :'Time', + :'definition' => :'AppDefinitionType', + :'description' => :'String', + :'embedded_datastore_blueprints' => :'Hash', + :'embedded_native_actions' => :'Array>', + :'embedded_workflow_blueprints' => :'Hash', + :'integration_id' => :'String', + :'mocked_outputs' => :'Hash', + :'name' => :'String', + :'slug' => :'String', + :'tags' => :'Array', + :'tile_background' => :'String', + :'tile_icon_action_fqn' => :'String', + :'updated_at' => :'Time' + } + 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::BlueprintAttributes` 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?(:'description') + self.description = attributes[:'description'] + end + + if attributes.key?(:'embedded_datastore_blueprints') + self.embedded_datastore_blueprints = attributes[:'embedded_datastore_blueprints'] + end + + if attributes.key?(:'embedded_native_actions') + if (value = attributes[:'embedded_native_actions']).is_a?(Array) + self.embedded_native_actions = value + end + end + + if attributes.key?(:'embedded_workflow_blueprints') + self.embedded_workflow_blueprints = attributes[:'embedded_workflow_blueprints'] + end + + if attributes.key?(:'integration_id') + self.integration_id = attributes[:'integration_id'] + end + + if attributes.key?(:'mocked_outputs') + self.mocked_outputs = attributes[:'mocked_outputs'] + end + + if attributes.key?(:'name') + self.name = attributes[:'name'] + end + + if attributes.key?(:'slug') + self.slug = attributes[:'slug'] + end + + if attributes.key?(:'tags') + if (value = attributes[:'tags']).is_a?(Array) + self.tags = value + end + end + + if attributes.key?(:'tile_background') + self.tile_background = attributes[:'tile_background'] + end + + if attributes.key?(:'tile_icon_action_fqn') + self.tile_icon_action_fqn = attributes[:'tile_icon_action_fqn'] + end + + if attributes.key?(:'updated_at') + self.updated_at = attributes[:'updated_at'] + 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 @description.nil? + return false if @name.nil? + return false if @slug.nil? + return false if @updated_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 description [Object] Object to be assigned + # @!visibility private + def description=(description) + if description.nil? + fail ArgumentError, 'invalid value for "description", description cannot be nil.' + end + @description = description + end + + # Custom attribute writer method with validation + # @param name [Object] Object to be assigned + # @!visibility private + def name=(name) + if name.nil? + fail ArgumentError, 'invalid value for "name", name cannot be nil.' + end + @name = name + end + + # Custom attribute writer method with validation + # @param slug [Object] Object to be assigned + # @!visibility private + def slug=(slug) + if slug.nil? + fail ArgumentError, 'invalid value for "slug", slug cannot be nil.' + end + @slug = slug + end + + # Custom attribute writer method with validation + # @param updated_at [Object] Object to be assigned + # @!visibility private + def updated_at=(updated_at) + if updated_at.nil? + fail ArgumentError, 'invalid value for "updated_at", updated_at cannot be nil.' + end + @updated_at = updated_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 && + description == o.description && + embedded_datastore_blueprints == o.embedded_datastore_blueprints && + embedded_native_actions == o.embedded_native_actions && + embedded_workflow_blueprints == o.embedded_workflow_blueprints && + integration_id == o.integration_id && + mocked_outputs == o.mocked_outputs && + name == o.name && + slug == o.slug && + tags == o.tags && + tile_background == o.tile_background && + tile_icon_action_fqn == o.tile_icon_action_fqn && + updated_at == o.updated_at && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [created_at, definition, description, embedded_datastore_blueprints, embedded_native_actions, embedded_workflow_blueprints, integration_id, mocked_outputs, name, slug, tags, tile_background, tile_icon_action_fqn, updated_at, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/blueprint_data.rb b/lib/datadog_api_client/v2/models/blueprint_data.rb new file mode 100644 index 000000000000..7d13ca627125 --- /dev/null +++ b/lib/datadog_api_client/v2/models/blueprint_data.rb @@ -0,0 +1,165 @@ +=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 blueprint resource. + class BlueprintData + include BaseGenericModel + + # The attributes of a blueprint resource. + attr_reader :attributes + + # The ID of the blueprint. + attr_reader :id + + # The resource type for a blueprint. + 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' => :'BlueprintAttributes', + :'id' => :'UUID', + :'type' => :'BlueprintDataType' + } + 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::BlueprintData` 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 @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 && + 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/blueprint_data_type.rb b/lib/datadog_api_client/v2/models/blueprint_data_type.rb new file mode 100644 index 000000000000..9f43bfa16762 --- /dev/null +++ b/lib/datadog_api_client/v2/models/blueprint_data_type.rb @@ -0,0 +1,26 @@ +=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 resource type for a blueprint. + class BlueprintDataType + include BaseEnumModel + + BLUEPRINT = "blueprint".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/blueprint_metadata_attributes.rb b/lib/datadog_api_client/v2/models/blueprint_metadata_attributes.rb new file mode 100644 index 000000000000..1f499a832f44 --- /dev/null +++ b/lib/datadog_api_client/v2/models/blueprint_metadata_attributes.rb @@ -0,0 +1,239 @@ +=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 attributes of a blueprint metadata resource. + class BlueprintMetadataAttributes + include BaseGenericModel + + # The timestamp when the blueprint was created. + attr_reader :created_at + + # A description of what the blueprint does. + attr_reader :description + + # The human-readable name of the blueprint. + attr_reader :name + + # The unique slug identifier of the blueprint. + attr_reader :slug + + # Tags associated with the blueprint. + attr_accessor :tags + + # The background style of the blueprint tile. + attr_accessor :tile_background + + # The fully qualified name of the action used as the tile icon. + attr_accessor :tile_icon_action_fqn + + # The timestamp when the blueprint was last updated. + attr_reader :updated_at + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'created_at' => :'created_at', + :'description' => :'description', + :'name' => :'name', + :'slug' => :'slug', + :'tags' => :'tags', + :'tile_background' => :'tile_background', + :'tile_icon_action_fqn' => :'tile_icon_action_fqn', + :'updated_at' => :'updated_at' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'created_at' => :'Time', + :'description' => :'String', + :'name' => :'String', + :'slug' => :'String', + :'tags' => :'Array', + :'tile_background' => :'String', + :'tile_icon_action_fqn' => :'String', + :'updated_at' => :'Time' + } + 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::BlueprintMetadataAttributes` 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?(:'description') + self.description = attributes[:'description'] + end + + if attributes.key?(:'name') + self.name = attributes[:'name'] + end + + if attributes.key?(:'slug') + self.slug = attributes[:'slug'] + end + + if attributes.key?(:'tags') + if (value = attributes[:'tags']).is_a?(Array) + self.tags = value + end + end + + if attributes.key?(:'tile_background') + self.tile_background = attributes[:'tile_background'] + end + + if attributes.key?(:'tile_icon_action_fqn') + self.tile_icon_action_fqn = attributes[:'tile_icon_action_fqn'] + end + + if attributes.key?(:'updated_at') + self.updated_at = attributes[:'updated_at'] + 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 @description.nil? + return false if @name.nil? + return false if @slug.nil? + return false if @updated_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 description [Object] Object to be assigned + # @!visibility private + def description=(description) + if description.nil? + fail ArgumentError, 'invalid value for "description", description cannot be nil.' + end + @description = description + end + + # Custom attribute writer method with validation + # @param name [Object] Object to be assigned + # @!visibility private + def name=(name) + if name.nil? + fail ArgumentError, 'invalid value for "name", name cannot be nil.' + end + @name = name + end + + # Custom attribute writer method with validation + # @param slug [Object] Object to be assigned + # @!visibility private + def slug=(slug) + if slug.nil? + fail ArgumentError, 'invalid value for "slug", slug cannot be nil.' + end + @slug = slug + end + + # Custom attribute writer method with validation + # @param updated_at [Object] Object to be assigned + # @!visibility private + def updated_at=(updated_at) + if updated_at.nil? + fail ArgumentError, 'invalid value for "updated_at", updated_at cannot be nil.' + end + @updated_at = updated_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 && + description == o.description && + name == o.name && + slug == o.slug && + tags == o.tags && + tile_background == o.tile_background && + tile_icon_action_fqn == o.tile_icon_action_fqn && + updated_at == o.updated_at && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [created_at, description, name, slug, tags, tile_background, tile_icon_action_fqn, updated_at, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/blueprint_metadata_data.rb b/lib/datadog_api_client/v2/models/blueprint_metadata_data.rb new file mode 100644 index 000000000000..d8d7125e6826 --- /dev/null +++ b/lib/datadog_api_client/v2/models/blueprint_metadata_data.rb @@ -0,0 +1,165 @@ +=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 blueprint metadata resource. + class BlueprintMetadataData + include BaseGenericModel + + # The attributes of a blueprint metadata resource. + attr_reader :attributes + + # The ID of the blueprint. + attr_reader :id + + # The resource type for a blueprint. + 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' => :'BlueprintMetadataAttributes', + :'id' => :'UUID', + :'type' => :'BlueprintDataType' + } + 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::BlueprintMetadataData` 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 @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 && + 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/get_blueprint_response.rb b/lib/datadog_api_client/v2/models/get_blueprint_response.rb new file mode 100644 index 000000000000..7bdd2f610731 --- /dev/null +++ b/lib/datadog_api_client/v2/models/get_blueprint_response.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 + # The response for retrieving a single blueprint. + class GetBlueprintResponse + include BaseGenericModel + + # A blueprint 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' => :'BlueprintData' + } + 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::GetBlueprintResponse` 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/get_blueprints_response.rb b/lib/datadog_api_client/v2/models/get_blueprints_response.rb new file mode 100644 index 000000000000..1d131aefc908 --- /dev/null +++ b/lib/datadog_api_client/v2/models/get_blueprints_response.rb @@ -0,0 +1,107 @@ +=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 response for retrieving multiple blueprints. + class GetBlueprintsResponse + include BaseGenericModel + + # An array of blueprints. + 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' => :'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::GetBlueprintsResponse` 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 + 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/list_blueprints_response.rb b/lib/datadog_api_client/v2/models/list_blueprints_response.rb new file mode 100644 index 000000000000..abee20b9d735 --- /dev/null +++ b/lib/datadog_api_client/v2/models/list_blueprints_response.rb @@ -0,0 +1,107 @@ +=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 response for listing available blueprints. + class ListBlueprintsResponse + include BaseGenericModel + + # An array of blueprint metadata. + 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' => :'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::ListBlueprintsResponse` 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 + 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/tag_data.rb b/lib/datadog_api_client/v2/models/tag_data.rb new file mode 100644 index 000000000000..79cf054c6fdb --- /dev/null +++ b/lib/datadog_api_client/v2/models/tag_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 + # A tag resource associated with an app. + class TagData + include BaseGenericModel + + # The name of the tag. + attr_reader :id + + # The resource type for a tag. + 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' => :'TagDataType' + } + 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::TagData` 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/tag_data_type.rb b/lib/datadog_api_client/v2/models/tag_data_type.rb new file mode 100644 index 000000000000..d4128b917009 --- /dev/null +++ b/lib/datadog_api_client/v2/models/tag_data_type.rb @@ -0,0 +1,26 @@ +=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 resource type for a tag. + class TagDataType + include BaseEnumModel + + TAG = "tag".freeze + end +end