Skip to content

Commit eb0dde9

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Document /api/v2/roles/templates (#2864)
Co-authored-by: ci.datadog-api-spec <[email protected]>
1 parent 77bc4f4 commit eb0dde9

File tree

11 files changed

+379
-0
lines changed

11 files changed

+379
-0
lines changed

.generator/schemas/v2/openapi.yaml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38435,6 +38435,49 @@ components:
3843538435
permissions:
3843638436
$ref: '#/components/schemas/RelationshipToPermissions'
3843738437
type: object
38438+
RoleTemplateArray:
38439+
description: The definition of `RoleTemplateArray` object.
38440+
properties:
38441+
data:
38442+
description: The `RoleTemplateArray` `data`.
38443+
items:
38444+
$ref: '#/components/schemas/RoleTemplateData'
38445+
type: array
38446+
required:
38447+
- data
38448+
type: object
38449+
RoleTemplateData:
38450+
description: The definition of `RoleTemplateData` object.
38451+
properties:
38452+
attributes:
38453+
$ref: '#/components/schemas/RoleTemplateDataAttributes'
38454+
id:
38455+
description: The `RoleTemplateData` `id`.
38456+
type: string
38457+
type:
38458+
$ref: '#/components/schemas/RoleTemplateDataType'
38459+
required:
38460+
- type
38461+
type: object
38462+
RoleTemplateDataAttributes:
38463+
description: The definition of `RoleTemplateDataAttributes` object.
38464+
properties:
38465+
description:
38466+
description: The `attributes` `description`.
38467+
type: string
38468+
name:
38469+
description: The `attributes` `name`.
38470+
type: string
38471+
type: object
38472+
RoleTemplateDataType:
38473+
default: roles
38474+
description: Roles resource type.
38475+
enum:
38476+
- roles
38477+
example: roles
38478+
type: string
38479+
x-enum-varnames:
38480+
- ROLES
3843838481
RoleUpdateAttributes:
3843938482
description: Attributes of the role.
3844038483
properties:
@@ -67658,6 +67701,28 @@ paths:
6765867701
operator: OR
6765967702
permissions:
6766067703
- user_access_manage
67704+
/api/v2/roles/templates:
67705+
get:
67706+
description: List all role templates
67707+
operationId: ListRoleTemplates
67708+
responses:
67709+
'200':
67710+
content:
67711+
application/json:
67712+
schema:
67713+
$ref: '#/components/schemas/RoleTemplateArray'
67714+
description: OK
67715+
'429':
67716+
$ref: '#/components/responses/TooManyRequestsResponse'
67717+
security:
67718+
- apiKeyAuth: []
67719+
appKeyAuth: []
67720+
- AuthZ:
67721+
- user_access_read
67722+
summary: List role templates
67723+
tags:
67724+
- Roles
67725+
x-unstable: '**Note**: This endpoint may be subject to changes.'
6766167726
/api/v2/roles/{role_id}:
6766267727
delete:
6766367728
description: Disables a role.

features/v2/roles.feature

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,13 @@ Feature: Roles
216216
And the response "data" has item with field "attributes.restricted" with value false
217217
And the response "data" has item with field "attributes.name" with value "admin"
218218

219+
@generated @skip @team:DataDog/aaa-core-access
220+
Scenario: List role templates returns "OK" response
221+
Given operation "ListRoleTemplates" enabled
222+
And new "ListRoleTemplates" request
223+
When the request is sent
224+
Then the response status is 200 OK
225+
219226
@team:DataDog/aaa-core-access
220227
Scenario: List roles returns "OK" response
221228
Given there is a valid "role" in the system

features/v2/undo.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2869,6 +2869,12 @@
28692869
"type": "unsafe"
28702870
}
28712871
},
2872+
"ListRoleTemplates": {
2873+
"tag": "Roles",
2874+
"undo": {
2875+
"type": "safe"
2876+
}
2877+
},
28722878
"DeleteRole": {
28732879
"tag": "Roles",
28742880
"undo": {

private/bdd_runner/src/support/scenarios_model_mapping.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7054,6 +7054,9 @@ export const ScenariosModelMappings: { [key: string]: OperationMapping } = {
70547054
},
70557055
operationResponseType: "RoleCreateResponse",
70567056
},
7057+
"RolesApi.V2.ListRoleTemplates": {
7058+
operationResponseType: "RoleTemplateArray",
7059+
},
70577060
"RolesApi.V2.GetRole": {
70587061
roleId: {
70597062
type: "string",

services/roles/src/v2/RolesApi.ts

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import { RoleCreateResponse } from "./models/RoleCreateResponse";
3232
import { RoleResponse } from "./models/RoleResponse";
3333
import { RolesResponse } from "./models/RolesResponse";
3434
import { RolesSort } from "./models/RolesSort";
35+
import { RoleTemplateArray } from "./models/RoleTemplateArray";
3536
import { RoleUpdateRequest } from "./models/RoleUpdateRequest";
3637
import { RoleUpdateResponse } from "./models/RoleUpdateResponse";
3738
import { UsersResponse } from "./models/UsersResponse";
@@ -526,6 +527,48 @@ export class RolesApiRequestFactory extends BaseAPIRequestFactory {
526527
return requestContext;
527528
}
528529

530+
public async listRoleTemplates(
531+
_options?: Configuration,
532+
): Promise<RequestContext> {
533+
const _config = _options || this.configuration;
534+
535+
if (!_config.unstableOperations["RolesApi.v2.listRoleTemplates"]) {
536+
throw new Error(
537+
"Unstable operation 'listRoleTemplates' is disabled. Enable it by setting `configuration.unstableOperations['RolesApi.v2.listRoleTemplates'] = true`",
538+
);
539+
}
540+
541+
// Path Params
542+
const localVarPath = "/api/v2/roles/templates";
543+
544+
// Make Request Context
545+
const { server, overrides } = _config.getServerAndOverrides(
546+
"RolesApi.v2.listRoleTemplates",
547+
RolesApi.operationServers,
548+
);
549+
const requestContext = server.makeRequestContext(
550+
localVarPath,
551+
HttpMethod.GET,
552+
overrides,
553+
);
554+
requestContext.setHeaderParam("Accept", "application/json");
555+
requestContext.setHttpConfig(_config.httpConfig);
556+
557+
// Set User-Agent
558+
if (this.userAgent) {
559+
requestContext.setHeaderParam("User-Agent", this.userAgent);
560+
}
561+
562+
// Apply auth methods
563+
applySecurityAuthentication(_config, requestContext, [
564+
"apiKeyAuth",
565+
"appKeyAuth",
566+
"AuthZ",
567+
]);
568+
569+
return requestContext;
570+
}
571+
529572
public async listRoleUsers(
530573
roleId: string,
531574
pageSize?: number,
@@ -1308,6 +1351,62 @@ export class RolesApiResponseProcessor {
13081351
);
13091352
}
13101353

1354+
/**
1355+
* Unwraps the actual response sent by the server from the response context and deserializes the response content
1356+
* to the expected objects
1357+
*
1358+
* @params response Response returned by the server for a request to listRoleTemplates
1359+
* @throws ApiException if the response code was not in [200, 299]
1360+
*/
1361+
public async listRoleTemplates(
1362+
response: ResponseContext,
1363+
): Promise<RoleTemplateArray> {
1364+
const contentType = normalizeMediaType(response.headers["content-type"]);
1365+
if (response.httpStatusCode === 200) {
1366+
const body: RoleTemplateArray = deserialize(
1367+
parse(await response.body.text(), contentType),
1368+
TypingInfo,
1369+
"RoleTemplateArray",
1370+
) as RoleTemplateArray;
1371+
return body;
1372+
}
1373+
if (response.httpStatusCode === 429) {
1374+
const bodyText = parse(await response.body.text(), contentType);
1375+
let body: APIErrorResponse;
1376+
try {
1377+
body = deserialize(
1378+
bodyText,
1379+
TypingInfo,
1380+
"APIErrorResponse",
1381+
) as APIErrorResponse;
1382+
} catch (error) {
1383+
logger.debug(`Got error deserializing error: ${error}`);
1384+
throw new ApiException<APIErrorResponse>(
1385+
response.httpStatusCode,
1386+
bodyText,
1387+
);
1388+
}
1389+
throw new ApiException<APIErrorResponse>(response.httpStatusCode, body);
1390+
}
1391+
1392+
// Work around for missing responses in specification, e.g. for petstore.yaml
1393+
if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) {
1394+
const body: RoleTemplateArray = deserialize(
1395+
parse(await response.body.text(), contentType),
1396+
TypingInfo,
1397+
"RoleTemplateArray",
1398+
"",
1399+
) as RoleTemplateArray;
1400+
return body;
1401+
}
1402+
1403+
const body = (await response.body.text()) || "";
1404+
throw new ApiException<string>(
1405+
response.httpStatusCode,
1406+
'Unknown API Status Code!\nBody: "' + body + '"',
1407+
);
1408+
}
1409+
13111410
/**
13121411
* Unwraps the actual response sent by the server from the response context and deserializes the response content
13131412
* to the expected objects
@@ -1927,6 +2026,24 @@ export class RolesApi {
19272026
});
19282027
}
19292028

2029+
/**
2030+
* List all role templates
2031+
* @param param The request object
2032+
*/
2033+
public listRoleTemplates(
2034+
options?: Configuration,
2035+
): Promise<RoleTemplateArray> {
2036+
const requestContextPromise =
2037+
this.requestFactory.listRoleTemplates(options);
2038+
return requestContextPromise.then((requestContext) => {
2039+
return this.configuration.httpApi
2040+
.send(requestContext)
2041+
.then((responseContext) => {
2042+
return this.responseProcessor.listRoleTemplates(responseContext);
2043+
});
2044+
});
2045+
}
2046+
19302047
/**
19312048
* Gets all users of a role.
19322049
* @param param The request object

services/roles/src/v2/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ export { RoleResponseRelationships } from "./models/RoleResponseRelationships";
5151
export { RolesResponse } from "./models/RolesResponse";
5252
export { RolesSort } from "./models/RolesSort";
5353
export { RolesType } from "./models/RolesType";
54+
export { RoleTemplateArray } from "./models/RoleTemplateArray";
55+
export { RoleTemplateData } from "./models/RoleTemplateData";
56+
export { RoleTemplateDataAttributes } from "./models/RoleTemplateDataAttributes";
57+
export { RoleTemplateDataType } from "./models/RoleTemplateDataType";
5458
export { RoleUpdateAttributes } from "./models/RoleUpdateAttributes";
5559
export { RoleUpdateData } from "./models/RoleUpdateData";
5660
export { RoleUpdateRequest } from "./models/RoleUpdateRequest";
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { AttributeTypeMap } from "@datadog/datadog-api-client";
2+
3+
import { RoleTemplateData } from "./RoleTemplateData";
4+
5+
/**
6+
* The definition of `RoleTemplateArray` object.
7+
*/
8+
export class RoleTemplateArray {
9+
/**
10+
* The `RoleTemplateArray` `data`.
11+
*/
12+
"data": Array<RoleTemplateData>;
13+
/**
14+
* A container for additional, undeclared properties.
15+
* This is a holder for any undeclared properties as specified with
16+
* the 'additionalProperties' keyword in the OAS document.
17+
*/
18+
"additionalProperties"?: { [key: string]: any };
19+
/**
20+
* @ignore
21+
*/
22+
"_unparsed"?: boolean;
23+
24+
/**
25+
* @ignore
26+
*/
27+
static readonly attributeTypeMap: AttributeTypeMap = {
28+
data: {
29+
baseName: "data",
30+
type: "Array<RoleTemplateData>",
31+
required: true,
32+
},
33+
additionalProperties: {
34+
baseName: "additionalProperties",
35+
type: "{ [key: string]: any; }",
36+
},
37+
};
38+
39+
/**
40+
* @ignore
41+
*/
42+
static getAttributeTypeMap(): AttributeTypeMap {
43+
return RoleTemplateArray.attributeTypeMap;
44+
}
45+
46+
public constructor() {}
47+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import { AttributeTypeMap } from "@datadog/datadog-api-client";
2+
3+
import { RoleTemplateDataAttributes } from "./RoleTemplateDataAttributes";
4+
import { RoleTemplateDataType } from "./RoleTemplateDataType";
5+
6+
/**
7+
* The definition of `RoleTemplateData` object.
8+
*/
9+
export class RoleTemplateData {
10+
/**
11+
* The definition of `RoleTemplateDataAttributes` object.
12+
*/
13+
"attributes"?: RoleTemplateDataAttributes;
14+
/**
15+
* The `RoleTemplateData` `id`.
16+
*/
17+
"id"?: string;
18+
/**
19+
* Roles resource type.
20+
*/
21+
"type": RoleTemplateDataType;
22+
/**
23+
* A container for additional, undeclared properties.
24+
* This is a holder for any undeclared properties as specified with
25+
* the 'additionalProperties' keyword in the OAS document.
26+
*/
27+
"additionalProperties"?: { [key: string]: any };
28+
/**
29+
* @ignore
30+
*/
31+
"_unparsed"?: boolean;
32+
33+
/**
34+
* @ignore
35+
*/
36+
static readonly attributeTypeMap: AttributeTypeMap = {
37+
attributes: {
38+
baseName: "attributes",
39+
type: "RoleTemplateDataAttributes",
40+
},
41+
id: {
42+
baseName: "id",
43+
type: "string",
44+
},
45+
type: {
46+
baseName: "type",
47+
type: "RoleTemplateDataType",
48+
required: true,
49+
},
50+
additionalProperties: {
51+
baseName: "additionalProperties",
52+
type: "{ [key: string]: any; }",
53+
},
54+
};
55+
56+
/**
57+
* @ignore
58+
*/
59+
static getAttributeTypeMap(): AttributeTypeMap {
60+
return RoleTemplateData.attributeTypeMap;
61+
}
62+
63+
public constructor() {}
64+
}

0 commit comments

Comments
 (0)