Skip to content
Merged
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
65 changes: 65 additions & 0 deletions .generator/schemas/v2/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38435,6 +38435,49 @@ components:
permissions:
$ref: '#/components/schemas/RelationshipToPermissions'
type: object
RoleTemplateArray:
description: The definition of `RoleTemplateArray` object.
properties:
data:
description: The `RoleTemplateArray` `data`.
items:
$ref: '#/components/schemas/RoleTemplateData'
type: array
required:
- data
type: object
RoleTemplateData:
description: The definition of `RoleTemplateData` object.
properties:
attributes:
$ref: '#/components/schemas/RoleTemplateDataAttributes'
id:
description: The `RoleTemplateData` `id`.
type: string
type:
$ref: '#/components/schemas/RoleTemplateDataType'
required:
- type
type: object
RoleTemplateDataAttributes:
description: The definition of `RoleTemplateDataAttributes` object.
properties:
description:
description: The `attributes` `description`.
type: string
name:
description: The `attributes` `name`.
type: string
type: object
RoleTemplateDataType:
default: roles
description: Roles resource type.
enum:
- roles
example: roles
type: string
x-enum-varnames:
- ROLES
RoleUpdateAttributes:
description: Attributes of the role.
properties:
Expand Down Expand Up @@ -67658,6 +67701,28 @@ paths:
operator: OR
permissions:
- user_access_manage
/api/v2/roles/templates:
get:
description: List all role templates
operationId: ListRoleTemplates
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RoleTemplateArray'
description: OK
'429':
$ref: '#/components/responses/TooManyRequestsResponse'
security:
- apiKeyAuth: []
appKeyAuth: []
- AuthZ:
- user_access_read
summary: List role templates
tags:
- Roles
x-unstable: '**Note**: This endpoint may be subject to changes.'
/api/v2/roles/{role_id}:
delete:
description: Disables a role.
Expand Down
18 changes: 18 additions & 0 deletions examples/v2/roles/ListRoleTemplates.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/**
* List role templates returns "OK" response
*/

import { client, v2 } from "@datadog/datadog-api-client";

const configuration = client.createConfiguration();
configuration.unstableOperations["v2.listRoleTemplates"] = true;
const apiInstance = new v2.RolesApi(configuration);

apiInstance
.listRoleTemplates()
.then((data: v2.RoleTemplateArray) => {
console.log(
"API called successfully. Returned data: " + JSON.stringify(data)
);
})
.catch((error: any) => console.error(error));
3 changes: 3 additions & 0 deletions features/support/scenarios_model_mapping.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7044,6 +7044,9 @@ export const ScenariosModelMappings: {[key: string]: {[key: string]: any}} = {
},
"operationResponseType": "RoleCreateResponse",
},
"v2.ListRoleTemplates": {
"operationResponseType": "RoleTemplateArray",
},
"v2.GetRole": {
"roleId": {
"type": "string",
Expand Down
7 changes: 7 additions & 0 deletions features/v2/roles.feature
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,13 @@ Feature: Roles
And the response "data" has item with field "attributes.restricted" with value false
And the response "data" has item with field "attributes.name" with value "admin"

@generated @skip @team:DataDog/aaa-core-access
Scenario: List role templates returns "OK" response
Given operation "ListRoleTemplates" enabled
And new "ListRoleTemplates" request
When the request is sent
Then the response status is 200 OK

@team:DataDog/aaa-core-access
Scenario: List roles returns "OK" response
Given there is a valid "role" in the system
Expand Down
6 changes: 6 additions & 0 deletions features/v2/undo.json
Original file line number Diff line number Diff line change
Expand Up @@ -2869,6 +2869,12 @@
"type": "unsafe"
}
},
"ListRoleTemplates": {
"tag": "Roles",
"undo": {
"type": "safe"
}
},
"DeleteRole": {
"tag": "Roles",
"undo": {
Expand Down
1 change: 1 addition & 0 deletions packages/datadog-api-client-common/configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,7 @@ export function createConfiguration(
"v2.updateMonitorUserTemplate": false,
"v2.validateExistingMonitorUserTemplate": false,
"v2.validateMonitorUserTemplate": false,
"v2.listRoleTemplates": false,
"v2.createPipeline": false,
"v2.deletePipeline": false,
"v2.getPipeline": false,
Expand Down
107 changes: 107 additions & 0 deletions packages/datadog-api-client-v2/apis/RolesApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import { RoleCreateResponse } from "../models/RoleCreateResponse";
import { RoleResponse } from "../models/RoleResponse";
import { RolesResponse } from "../models/RolesResponse";
import { RolesSort } from "../models/RolesSort";
import { RoleTemplateArray } from "../models/RoleTemplateArray";
import { RoleUpdateRequest } from "../models/RoleUpdateRequest";
import { RoleUpdateResponse } from "../models/RoleUpdateResponse";
import { UsersResponse } from "../models/UsersResponse";
Expand Down Expand Up @@ -420,6 +421,36 @@ export class RolesApiRequestFactory extends BaseAPIRequestFactory {
return requestContext;
}

public async listRoleTemplates(
_options?: Configuration
): Promise<RequestContext> {
const _config = _options || this.configuration;

logger.warn("Using unstable operation 'listRoleTemplates'");
if (!_config.unstableOperations["v2.listRoleTemplates"]) {
throw new Error("Unstable operation 'listRoleTemplates' is disabled");
}

// Path Params
const localVarPath = "/api/v2/roles/templates";

// Make Request Context
const requestContext = _config
.getServer("v2.RolesApi.listRoleTemplates")
.makeRequestContext(localVarPath, HttpMethod.GET);
requestContext.setHeaderParam("Accept", "application/json");
requestContext.setHttpConfig(_config.httpConfig);

// Apply auth methods
applySecurityAuthentication(_config, requestContext, [
"apiKeyAuth",
"appKeyAuth",
"AuthZ",
]);

return requestContext;
}

public async listRoleUsers(
roleId: string,
pageSize?: number,
Expand Down Expand Up @@ -1184,6 +1215,64 @@ export class RolesApiResponseProcessor {
);
}

/**
* Unwraps the actual response sent by the server from the response context and deserializes the response content
* to the expected objects
*
* @params response Response returned by the server for a request to listRoleTemplates
* @throws ApiException if the response code was not in [200, 299]
*/
public async listRoleTemplates(
response: ResponseContext
): Promise<RoleTemplateArray> {
const contentType = ObjectSerializer.normalizeMediaType(
response.headers["content-type"]
);
if (response.httpStatusCode === 200) {
const body: RoleTemplateArray = ObjectSerializer.deserialize(
ObjectSerializer.parse(await response.body.text(), contentType),
"RoleTemplateArray"
) as RoleTemplateArray;
return body;
}
if (response.httpStatusCode === 429) {
const bodyText = ObjectSerializer.parse(
await response.body.text(),
contentType
);
let body: APIErrorResponse;
try {
body = ObjectSerializer.deserialize(
bodyText,
"APIErrorResponse"
) as APIErrorResponse;
} catch (error) {
logger.debug(`Got error deserializing error: ${error}`);
throw new ApiException<APIErrorResponse>(
response.httpStatusCode,
bodyText
);
}
throw new ApiException<APIErrorResponse>(response.httpStatusCode, body);
}

// Work around for missing responses in specification, e.g. for petstore.yaml
if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) {
const body: RoleTemplateArray = ObjectSerializer.deserialize(
ObjectSerializer.parse(await response.body.text(), contentType),
"RoleTemplateArray",
""
) as RoleTemplateArray;
return body;
}

const body = (await response.body.text()) || "";
throw new ApiException<string>(
response.httpStatusCode,
'Unknown API Status Code!\nBody: "' + body + '"'
);
}

/**
* Unwraps the actual response sent by the server from the response context and deserializes the response content
* to the expected objects
Expand Down Expand Up @@ -1809,6 +1898,24 @@ export class RolesApi {
});
}

/**
* List all role templates
* @param param The request object
*/
public listRoleTemplates(
options?: Configuration
): Promise<RoleTemplateArray> {
const requestContextPromise =
this.requestFactory.listRoleTemplates(options);
return requestContextPromise.then((requestContext) => {
return this.configuration.httpApi
.send(requestContext)
.then((responseContext) => {
return this.responseProcessor.listRoleTemplates(responseContext);
});
});
}

/**
* Gets all users of a role.
* @param param The request object
Expand Down
4 changes: 4 additions & 0 deletions packages/datadog-api-client-v2/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3201,6 +3201,10 @@ export { RoleResponseRelationships } from "./models/RoleResponseRelationships";
export { RolesResponse } from "./models/RolesResponse";
export { RolesSort } from "./models/RolesSort";
export { RolesType } from "./models/RolesType";
export { RoleTemplateArray } from "./models/RoleTemplateArray";
export { RoleTemplateData } from "./models/RoleTemplateData";
export { RoleTemplateDataAttributes } from "./models/RoleTemplateDataAttributes";
export { RoleTemplateDataType } from "./models/RoleTemplateDataType";
export { RoleUpdateAttributes } from "./models/RoleUpdateAttributes";
export { RoleUpdateData } from "./models/RoleUpdateData";
export { RoleUpdateRequest } from "./models/RoleUpdateRequest";
Expand Down
7 changes: 7 additions & 0 deletions packages/datadog-api-client-v2/models/ObjectSerializer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1777,6 +1777,9 @@ import { RoleCreateResponseData } from "./RoleCreateResponseData";
import { RoleRelationships } from "./RoleRelationships";
import { RoleResponse } from "./RoleResponse";
import { RoleResponseRelationships } from "./RoleResponseRelationships";
import { RoleTemplateArray } from "./RoleTemplateArray";
import { RoleTemplateData } from "./RoleTemplateData";
import { RoleTemplateDataAttributes } from "./RoleTemplateDataAttributes";
import { RoleUpdateAttributes } from "./RoleUpdateAttributes";
import { RoleUpdateData } from "./RoleUpdateData";
import { RoleUpdateRequest } from "./RoleUpdateRequest";
Expand Down Expand Up @@ -3440,6 +3443,7 @@ const enumsMap: { [key: string]: any[] } = {
],
RetentionFilterType: ["spans-sampling-processor"],
RetryStrategyKind: ["RETRY_STRATEGY_LINEAR"],
RoleTemplateDataType: ["roles"],
RolesSort: [
"name",
"-name",
Expand Down Expand Up @@ -5988,6 +5992,9 @@ const typeMap: { [index: string]: any } = {
RoleRelationships: RoleRelationships,
RoleResponse: RoleResponse,
RoleResponseRelationships: RoleResponseRelationships,
RoleTemplateArray: RoleTemplateArray,
RoleTemplateData: RoleTemplateData,
RoleTemplateDataAttributes: RoleTemplateDataAttributes,
RoleUpdateAttributes: RoleUpdateAttributes,
RoleUpdateData: RoleUpdateData,
RoleUpdateRequest: RoleUpdateRequest,
Expand Down
54 changes: 54 additions & 0 deletions packages/datadog-api-client-v2/models/RoleTemplateArray.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/**
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
* This product includes software developed at Datadog (https://www.datadoghq.com/).
* Copyright 2020-Present Datadog, Inc.
*/
import { RoleTemplateData } from "./RoleTemplateData";

import { AttributeTypeMap } from "../../datadog-api-client-common/util";

/**
* The definition of `RoleTemplateArray` object.
*/
export class RoleTemplateArray {
/**
* The `RoleTemplateArray` `data`.
*/
"data": Array<RoleTemplateData>;

/**
* A container for additional, undeclared properties.
* This is a holder for any undeclared properties as specified with
* the 'additionalProperties' keyword in the OAS document.
*/
"additionalProperties"?: { [key: string]: any };

/**
* @ignore
*/
"_unparsed"?: boolean;

/**
* @ignore
*/
static readonly attributeTypeMap: AttributeTypeMap = {
data: {
baseName: "data",
type: "Array<RoleTemplateData>",
required: true,
},
additionalProperties: {
baseName: "additionalProperties",
type: "{ [key: string]: any; }",
},
};

/**
* @ignore
*/
static getAttributeTypeMap(): AttributeTypeMap {
return RoleTemplateArray.attributeTypeMap;
}

public constructor() {}
}
Loading