Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use correct app version selector in app builder API, add 410 gone response to GetApp #2231

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .apigentools-info
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
"spec_versions": {
"v1": {
"apigentools_version": "1.6.6",
"regenerated": "2025-02-04 14:10:05.819748",
"spec_repo_commit": "4fb9047a"
"regenerated": "2025-02-05 20:58:57.604084",
"spec_repo_commit": "82f3d557"
},
"v2": {
"apigentools_version": "1.6.6",
"regenerated": "2025-02-04 14:10:05.835266",
"spec_repo_commit": "4fb9047a"
"regenerated": "2025-02-05 20:58:57.624279",
"spec_repo_commit": "82f3d557"
}
}
}
26 changes: 25 additions & 1 deletion .generator/schemas/v2/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1965,6 +1965,24 @@ components:
deployment:
$ref: '#/components/schemas/DeploymentRelationship'
type: object
AppVersionSelector:
description: The version selector parameter used in endpoints such as Get App.
Version numbers start at 1 and increment with each update. 0 is a special
value that always selects the latest version.
oneOf:
- $ref: '#/components/schemas/AppVersionSelectorConstants'
- format: int64
minimum: 0
type: integer
AppVersionSelectorConstants:
description: Constants that always select a particular version of an app.
enum:
- latest
- deployed
type: string
x-enum-varnames:
- LATEST
- DEPLOYED
ApplicationKeyCreateAttributes:
description: Attributes used to create an application Key.
properties:
Expand Down Expand Up @@ -32494,7 +32512,7 @@ paths:
name: version
required: false
schema:
type: string
$ref: '#/components/schemas/AppVersionSelector'
responses:
'200':
content:
Expand All @@ -32520,6 +32538,12 @@ paths:
schema:
$ref: '#/components/schemas/JSONAPIErrorResponse'
description: Not Found
'410':
content:
application/json:
schema:
$ref: '#/components/schemas/JSONAPIErrorResponse'
description: Gone
'429':
$ref: '#/components/responses/TooManyRequestsResponse'
summary: Get App
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2025-02-05T20:55:28.999Z

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion features/scenarios_model_mapping.rb
Original file line number Diff line number Diff line change
Expand Up @@ -980,7 +980,7 @@
},
"v2.GetApp" => {
"app_id" => "UUID",
"version" => "String",
"version" => "AppVersionSelector",
},
"v2.UpdateApp" => {
"app_id" => "UUID",
Expand Down
10 changes: 10 additions & 0 deletions features/v2/app_builder.feature
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,16 @@ Feature: App Builder
When the request is sent
Then the response status is 400 Bad Request

@skip-typescript @team:DataDog/app-builder-backend
Scenario: Get App returns "Gone" response
Given operation "GetApp" enabled
And new "GetApp" request
And there is a valid "app" in the system
And request contains "app_id" parameter from "app.data.id"
And request contains "version" parameter with value 31
When the request is sent
Then the response status is 410 Gone

@skip-typescript @team:DataDog/app-builder-backend
Scenario: Get App returns "Not Found" response
Given operation "GetApp" enabled
Expand Down
2 changes: 2 additions & 0 deletions lib/datadog_api_client/inflector.rb
Original file line number Diff line number Diff line change
Expand Up @@ -958,6 +958,8 @@ def overrides
"v2.app_meta" => "AppMeta",
"v2.app_relationship" => "AppRelationship",
"v2.apps_sort_field" => "AppsSortField",
"v2.app_version_selector" => "AppVersionSelector",
"v2.app_version_selector_constants" => "AppVersionSelectorConstants",
"v2.asset" => "Asset",
"v2.asset_attributes" => "AssetAttributes",
"v2.asset_entity_type" => "AssetEntityType",
Expand Down
2 changes: 1 addition & 1 deletion lib/datadog_api_client/v2/api/app_builder_api.rb
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ def get_app(app_id, opts = {})
#
# @param app_id [UUID] The ID of the app to retrieve.
# @param opts [Hash] the optional parameters
# @option opts [String] :version The version number of the app to retrieve. If not specified, the latest version is returned. Version numbers start at 1 and increment with each update. The special values `latest` and `deployed` can be used to retrieve the latest version or the published version, respectively.
# @option opts [AppVersionSelector] :version The version number of the app to retrieve. If not specified, the latest version is returned. Version numbers start at 1 and increment with each update. The special values `latest` and `deployed` can be used to retrieve the latest version or the published version, respectively.
# @return [Array<(GetAppResponse, Integer, Hash)>] GetAppResponse data, response status code and response headers
def get_app_with_http_info(app_id, opts = {})
unstable_enabled = @api_client.config.unstable_operations["v2.get_app".to_sym]
Expand Down
63 changes: 63 additions & 0 deletions lib/datadog_api_client/v2/models/app_version_selector.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
=begin
#Datadog API V2 Collection

#Collection of all Datadog Public endpoints.

The version of the OpenAPI document: 1.0
Contact: [email protected]
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 version selector parameter used in endpoints such as Get App. Version numbers start at 1 and increment with each update. 0 is a special value that always selects the latest version.
module AppVersionSelector
class << self
include BaseOneOfModel
include BaseOneOfModelNoDiscriminator

# List of class defined in oneOf (OpenAPI v3)
def openapi_one_of
[
:'AppVersionSelectorConstants',
:'Integer'
]
end
# Builds the object
# @param data [Mixed] Data to be matched against the list of oneOf items
# @return [Object] Returns the model or the data itself
def build(data)
# Go through the list of oneOf items and attempt to identify the appropriate one.
# Note:
# - We do not attempt to check whether exactly one item matches.
# - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 })
# due to the way the deserialization is made in the base_object template (it just casts without verifying).
# - TODO: scalar values are de facto behaving as if they were nullable.
# - TODO: logging when debugging is set.
openapi_one_of.each do |klass|
begin
next if klass == :AnyType # "nullable: true"
typed_data = find_and_cast_into_type(klass, data)
next if typed_data.respond_to?(:_unparsed) && typed_data._unparsed
return typed_data if typed_data
rescue # rescue all errors so we keep iterating even if the current item lookup raises
end
end

if openapi_one_of.include?(:AnyType)
data
else
self._unparsed = true
DatadogAPIClient::UnparsedObject.new(data)
end
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
=begin
#Datadog API V2 Collection

#Collection of all Datadog Public endpoints.

The version of the OpenAPI document: 1.0
Contact: [email protected]
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
# Constants that always select a particular version of an app.
class AppVersionSelectorConstants
include BaseEnumModel

LATEST = "latest".freeze
DEPLOYED = "deployed".freeze
end
end
Loading