@stackone/ai
Version:
Tools for agents to perform actions on your SaaS
1,589 lines • 97.6 kB
JavaScript
//#region src/openapi/generated/iam.ts
const iamSpec = {
openapi: "3.1.0",
paths: {
"/unified/iam/users": { get: {
operationId: "iam_list_users",
parameters: [
{
name: "x-account-id",
in: "header",
description: "The account identifier",
required: true,
schema: { type: "string" }
},
{
name: "raw",
required: false,
in: "query",
description: "Indicates that the raw request result should be returned in addition to the mapped result (default value is false)",
schema: {
nullable: true,
type: "boolean"
}
},
{
name: "proxy",
required: false,
in: "query",
description: "Query parameters that can be used to pass through parameters to the underlying provider request by surrounding them with 'proxy' key",
style: "deepObject",
explode: true,
schema: {
additionalProperties: true,
nullable: true,
type: "object"
}
},
{
name: "fields",
required: false,
in: "query",
description: "The comma separated list of fields that will be returned in the response (if empty, all fields are returned)",
schema: {
nullable: true,
example: "id,remote_id,first_name,last_name,name,primary_email_address,username,roles,groups,status,avatar,is_bot_user,last_active_at,last_login_at,created_at,updated_at,multi_factor_enabled",
type: "string"
}
},
{
name: "filter",
required: false,
in: "query",
description: "Filter parameters that allow greater customisation of the list response",
explode: true,
style: "deepObject",
schema: {
properties: { updated_after: {
description: "Use a string with a date to only select results updated after that given date",
example: "2020-01-01T00:00:00.000Z",
type: "string",
format: "date-time",
nullable: true,
additionalProperties: false
} },
nullable: true,
type: "object"
}
},
{
name: "page",
required: false,
in: "query",
description: "The page number of the results to fetch",
deprecated: true,
schema: {
nullable: true,
type: "string"
}
},
{
name: "page_size",
required: false,
in: "query",
description: "The number of results per page (default value is 25)",
schema: {
nullable: true,
type: "string"
}
},
{
name: "next",
required: false,
in: "query",
description: "The unified cursor",
schema: {
nullable: true,
type: "string"
}
},
{
name: "updated_after",
required: false,
in: "query",
description: "Use a string with a date to only select results updated after that given date",
deprecated: true,
schema: {
format: "date-time",
nullable: true,
example: "2020-01-01T00:00:00.000Z",
type: "string"
}
},
{
name: "expand",
required: false,
in: "query",
description: "The comma separated list of fields that will be expanded in the response",
schema: {
nullable: true,
example: "roles,groups",
type: "string"
}
}
],
responses: {
"200": {
description: "The list of users was retrieved.",
content: { "application/json": { schema: { $ref: "#/components/schemas/IamUsersPaginated" } } }
},
"400": {
description: "Invalid request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadRequestResponse" } } }
},
"401": {
description: "Unauthorized access.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnauthorizedResponse" } } }
},
"403": {
description: "Forbidden.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ForbiddenResponse" } } }
},
"404": {
description: "Resource not found.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotFoundResponse" } } }
},
"408": {
description: "The request has timed out.",
headers: { "Retry-After": {
description: "A time in seconds after which the request can be retried.",
schema: { type: "string" }
} },
content: { "application/json": { schema: { $ref: "#/components/schemas/RequestTimedOutResponse" } } }
},
"409": {
description: "Conflict with current state.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ConflictResponse" } } }
},
"412": {
description: "Precondition failed: linked account belongs to a disabled integration.",
content: { "application/json": { schema: { $ref: "#/components/schemas/PreconditionFailedResponse" } } }
},
"422": {
description: "Validation error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnprocessableEntityResponse" } } }
},
"429": {
description: "Too many requests.",
content: { "application/json": { schema: { $ref: "#/components/schemas/TooManyRequestsResponse" } } }
},
"500": {
description: "Server error while executing the request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/InternalServerErrorResponse" } } }
},
"501": {
description: "This functionality is not implemented.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotImplementedResponse" } } }
},
"502": {
description: "Bad gateway error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadGatewayResponse" } } }
}
},
security: [{ basic: [] }],
summary: "List Users",
tags: ["Users"],
"x-speakeasy-group": "iam",
"x-speakeasy-name-override": "list_users",
"x-speakeasy-pagination": {
type: "cursor",
inputs: [{
name: "next",
in: "parameters",
type: "cursor"
}],
outputs: { nextCursor: "$.next" }
},
"x-speakeasy-retries": {
statusCodes: [429, 408],
strategy: "backoff"
}
} },
"/unified/iam/users/{id}": {
get: {
operationId: "iam_get_user",
parameters: [
{
name: "x-account-id",
in: "header",
description: "The account identifier",
required: true,
schema: { type: "string" }
},
{
name: "id",
required: true,
in: "path",
schema: { type: "string" }
},
{
name: "raw",
required: false,
in: "query",
description: "Indicates that the raw request result should be returned in addition to the mapped result (default value is false)",
schema: {
nullable: true,
type: "boolean"
}
},
{
name: "proxy",
required: false,
in: "query",
description: "Query parameters that can be used to pass through parameters to the underlying provider request by surrounding them with 'proxy' key",
style: "deepObject",
explode: true,
schema: {
additionalProperties: true,
nullable: true,
type: "object"
}
},
{
name: "fields",
required: false,
in: "query",
description: "The comma separated list of fields that will be returned in the response (if empty, all fields are returned)",
schema: {
nullable: true,
example: "id,remote_id,first_name,last_name,name,primary_email_address,username,roles,groups,status,avatar,is_bot_user,last_active_at,last_login_at,created_at,updated_at,multi_factor_enabled",
type: "string"
}
},
{
name: "expand",
required: false,
in: "query",
description: "The comma separated list of fields that will be expanded in the response",
schema: {
nullable: true,
example: "roles,groups",
type: "string"
}
}
],
responses: {
"200": {
description: "The user with the given identifier was retrieved.",
content: { "application/json": { schema: { $ref: "#/components/schemas/IamUserResult" } } }
},
"400": {
description: "Invalid request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadRequestResponse" } } }
},
"401": {
description: "Unauthorized access.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnauthorizedResponse" } } }
},
"403": {
description: "Forbidden.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ForbiddenResponse" } } }
},
"404": {
description: "Resource not found.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotFoundResponse" } } }
},
"408": {
description: "The request has timed out.",
headers: { "Retry-After": {
description: "A time in seconds after which the request can be retried.",
schema: { type: "string" }
} },
content: { "application/json": { schema: { $ref: "#/components/schemas/RequestTimedOutResponse" } } }
},
"409": {
description: "Conflict with current state.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ConflictResponse" } } }
},
"412": {
description: "Precondition failed: linked account belongs to a disabled integration.",
content: { "application/json": { schema: { $ref: "#/components/schemas/PreconditionFailedResponse" } } }
},
"422": {
description: "Validation error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnprocessableEntityResponse" } } }
},
"429": {
description: "Too many requests.",
content: { "application/json": { schema: { $ref: "#/components/schemas/TooManyRequestsResponse" } } }
},
"500": {
description: "Server error while executing the request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/InternalServerErrorResponse" } } }
},
"501": {
description: "This functionality is not implemented.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotImplementedResponse" } } }
},
"502": {
description: "Bad gateway error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadGatewayResponse" } } }
}
},
security: [{ basic: [] }],
summary: "Get User",
tags: ["Users"],
"x-speakeasy-group": "iam",
"x-speakeasy-name-override": "get_user",
"x-speakeasy-retries": {
statusCodes: [429, 408],
strategy: "backoff"
}
},
patch: {
operationId: "iam_update_user",
parameters: [{
name: "x-account-id",
in: "header",
description: "The account identifier",
required: true,
schema: { type: "string" }
}, {
name: "id",
required: true,
in: "path",
schema: { type: "string" }
}],
requestBody: {
required: true,
content: { "application/json": { schema: { $ref: "#/components/schemas/IamUpdateUserRequestDto" } } }
},
responses: {
"200": {
description: "Record updated successfully.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UpdateResult" } } }
},
"400": {
description: "Invalid request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadRequestResponse" } } }
},
"401": {
description: "Unauthorized access.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnauthorizedResponse" } } }
},
"403": {
description: "Forbidden.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ForbiddenResponse" } } }
},
"404": {
description: "Resource not found.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotFoundResponse" } } }
},
"408": {
description: "The request has timed out.",
headers: { "Retry-After": {
description: "A time in seconds after which the request can be retried.",
schema: { type: "string" }
} },
content: { "application/json": { schema: { $ref: "#/components/schemas/RequestTimedOutResponse" } } }
},
"409": {
description: "Conflict with current state.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ConflictResponse" } } }
},
"412": {
description: "Precondition failed: linked account belongs to a disabled integration.",
content: { "application/json": { schema: { $ref: "#/components/schemas/PreconditionFailedResponse" } } }
},
"422": {
description: "Validation error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnprocessableEntityResponse" } } }
},
"429": {
description: "Too many requests.",
content: { "application/json": { schema: { $ref: "#/components/schemas/TooManyRequestsResponse" } } }
},
"500": {
description: "Server error while executing the request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/InternalServerErrorResponse" } } }
},
"501": {
description: "This functionality is not implemented.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotImplementedResponse" } } }
},
"502": {
description: "Bad gateway error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadGatewayResponse" } } }
}
},
security: [{ basic: [] }],
summary: "Update User",
tags: ["Users"],
"x-speakeasy-group": "iam",
"x-speakeasy-name-override": "update_user",
"x-speakeasy-retries": {
statusCodes: [429, 408],
strategy: "backoff"
}
},
delete: {
operationId: "iam_delete_user",
parameters: [{
name: "x-account-id",
in: "header",
description: "The account identifier",
required: true,
schema: { type: "string" }
}, {
name: "id",
required: true,
in: "path",
schema: { type: "string" }
}],
responses: {
"200": {
description: "The user was deleted successfully.",
content: { "application/json": { schema: { $ref: "#/components/schemas/DeleteResult" } } }
},
"204": { description: "The user was deleted successfully but no content was returned." },
"400": {
description: "Invalid request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadRequestResponse" } } }
},
"401": {
description: "Unauthorized access.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnauthorizedResponse" } } }
},
"403": {
description: "Forbidden.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ForbiddenResponse" } } }
},
"404": {
description: "Resource not found.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotFoundResponse" } } }
},
"408": {
description: "The request has timed out.",
headers: { "Retry-After": {
description: "A time in seconds after which the request can be retried.",
schema: { type: "string" }
} },
content: { "application/json": { schema: { $ref: "#/components/schemas/RequestTimedOutResponse" } } }
},
"409": {
description: "Conflict with current state.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ConflictResponse" } } }
},
"412": {
description: "Precondition failed: linked account belongs to a disabled integration.",
content: { "application/json": { schema: { $ref: "#/components/schemas/PreconditionFailedResponse" } } }
},
"422": {
description: "Validation error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnprocessableEntityResponse" } } }
},
"429": {
description: "Too many requests.",
content: { "application/json": { schema: { $ref: "#/components/schemas/TooManyRequestsResponse" } } }
},
"500": {
description: "Server error while executing the request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/InternalServerErrorResponse" } } }
},
"501": {
description: "This functionality is not implemented.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotImplementedResponse" } } }
},
"502": {
description: "Bad gateway error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadGatewayResponse" } } }
}
},
security: [{ basic: [] }],
summary: "Delete User",
tags: ["Users"],
"x-speakeasy-group": "iam",
"x-speakeasy-name-override": "delete_user",
"x-speakeasy-retries": {
statusCodes: [429, 408],
strategy: "backoff"
}
}
},
"/unified/iam/roles": { get: {
operationId: "iam_list_roles",
parameters: [
{
name: "x-account-id",
in: "header",
description: "The account identifier",
required: true,
schema: { type: "string" }
},
{
name: "raw",
required: false,
in: "query",
description: "Indicates that the raw request result should be returned in addition to the mapped result (default value is false)",
schema: {
nullable: true,
type: "boolean"
}
},
{
name: "proxy",
required: false,
in: "query",
description: "Query parameters that can be used to pass through parameters to the underlying provider request by surrounding them with 'proxy' key",
style: "deepObject",
explode: true,
schema: {
additionalProperties: true,
nullable: true,
type: "object"
}
},
{
name: "fields",
required: false,
in: "query",
description: "The comma separated list of fields that will be returned in the response (if empty, all fields are returned)",
schema: {
nullable: true,
example: "id,remote_id,name,type,policies,description,created_at,updated_at",
type: "string"
}
},
{
name: "filter",
required: false,
in: "query",
description: "Filter parameters that allow greater customisation of the list response",
explode: true,
style: "deepObject",
schema: {
properties: { updated_after: {
description: "Use a string with a date to only select results updated after that given date",
example: "2020-01-01T00:00:00.000Z",
type: "string",
format: "date-time",
nullable: true,
additionalProperties: false
} },
nullable: true,
type: "object"
}
},
{
name: "page",
required: false,
in: "query",
description: "The page number of the results to fetch",
deprecated: true,
schema: {
nullable: true,
type: "string"
}
},
{
name: "page_size",
required: false,
in: "query",
description: "The number of results per page (default value is 25)",
schema: {
nullable: true,
type: "string"
}
},
{
name: "next",
required: false,
in: "query",
description: "The unified cursor",
schema: {
nullable: true,
type: "string"
}
},
{
name: "updated_after",
required: false,
in: "query",
description: "Use a string with a date to only select results updated after that given date",
deprecated: true,
schema: {
format: "date-time",
nullable: true,
example: "2020-01-01T00:00:00.000Z",
type: "string"
}
},
{
name: "expand",
required: false,
in: "query",
description: "The comma separated list of fields that will be expanded in the response",
schema: {
nullable: true,
example: "policies",
type: "string"
}
}
],
responses: {
"200": {
description: "The list of roles was retrieved.",
content: { "application/json": { schema: { $ref: "#/components/schemas/IamRolesPaginated" } } }
},
"400": {
description: "Invalid request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadRequestResponse" } } }
},
"401": {
description: "Unauthorized access.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnauthorizedResponse" } } }
},
"403": {
description: "Forbidden.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ForbiddenResponse" } } }
},
"404": {
description: "Resource not found.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotFoundResponse" } } }
},
"408": {
description: "The request has timed out.",
headers: { "Retry-After": {
description: "A time in seconds after which the request can be retried.",
schema: { type: "string" }
} },
content: { "application/json": { schema: { $ref: "#/components/schemas/RequestTimedOutResponse" } } }
},
"409": {
description: "Conflict with current state.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ConflictResponse" } } }
},
"412": {
description: "Precondition failed: linked account belongs to a disabled integration.",
content: { "application/json": { schema: { $ref: "#/components/schemas/PreconditionFailedResponse" } } }
},
"422": {
description: "Validation error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnprocessableEntityResponse" } } }
},
"429": {
description: "Too many requests.",
content: { "application/json": { schema: { $ref: "#/components/schemas/TooManyRequestsResponse" } } }
},
"500": {
description: "Server error while executing the request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/InternalServerErrorResponse" } } }
},
"501": {
description: "This functionality is not implemented.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotImplementedResponse" } } }
},
"502": {
description: "Bad gateway error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadGatewayResponse" } } }
}
},
security: [{ basic: [] }],
summary: "List Roles",
tags: ["Roles"],
"x-speakeasy-group": "iam",
"x-speakeasy-name-override": "list_roles",
"x-speakeasy-pagination": {
type: "cursor",
inputs: [{
name: "next",
in: "parameters",
type: "cursor"
}],
outputs: { nextCursor: "$.next" }
},
"x-speakeasy-retries": {
statusCodes: [429, 408],
strategy: "backoff"
}
} },
"/unified/iam/roles/{id}": { get: {
operationId: "iam_get_role",
parameters: [
{
name: "x-account-id",
in: "header",
description: "The account identifier",
required: true,
schema: { type: "string" }
},
{
name: "id",
required: true,
in: "path",
schema: { type: "string" }
},
{
name: "raw",
required: false,
in: "query",
description: "Indicates that the raw request result should be returned in addition to the mapped result (default value is false)",
schema: {
nullable: true,
type: "boolean"
}
},
{
name: "proxy",
required: false,
in: "query",
description: "Query parameters that can be used to pass through parameters to the underlying provider request by surrounding them with 'proxy' key",
style: "deepObject",
explode: true,
schema: {
additionalProperties: true,
nullable: true,
type: "object"
}
},
{
name: "fields",
required: false,
in: "query",
description: "The comma separated list of fields that will be returned in the response (if empty, all fields are returned)",
schema: {
nullable: true,
example: "id,remote_id,name,type,policies,description,created_at,updated_at",
type: "string"
}
},
{
name: "expand",
required: false,
in: "query",
description: "The comma separated list of fields that will be expanded in the response",
schema: {
nullable: true,
example: "policies",
type: "string"
}
}
],
responses: {
"200": {
description: "The role with the given identifier was retrieved.",
content: { "application/json": { schema: { $ref: "#/components/schemas/IamRoleResult" } } }
},
"400": {
description: "Invalid request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadRequestResponse" } } }
},
"401": {
description: "Unauthorized access.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnauthorizedResponse" } } }
},
"403": {
description: "Forbidden.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ForbiddenResponse" } } }
},
"404": {
description: "Resource not found.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotFoundResponse" } } }
},
"408": {
description: "The request has timed out.",
headers: { "Retry-After": {
description: "A time in seconds after which the request can be retried.",
schema: { type: "string" }
} },
content: { "application/json": { schema: { $ref: "#/components/schemas/RequestTimedOutResponse" } } }
},
"409": {
description: "Conflict with current state.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ConflictResponse" } } }
},
"412": {
description: "Precondition failed: linked account belongs to a disabled integration.",
content: { "application/json": { schema: { $ref: "#/components/schemas/PreconditionFailedResponse" } } }
},
"422": {
description: "Validation error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnprocessableEntityResponse" } } }
},
"429": {
description: "Too many requests.",
content: { "application/json": { schema: { $ref: "#/components/schemas/TooManyRequestsResponse" } } }
},
"500": {
description: "Server error while executing the request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/InternalServerErrorResponse" } } }
},
"501": {
description: "This functionality is not implemented.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotImplementedResponse" } } }
},
"502": {
description: "Bad gateway error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadGatewayResponse" } } }
}
},
security: [{ basic: [] }],
summary: "Get Role",
tags: ["Roles"],
"x-speakeasy-group": "iam",
"x-speakeasy-name-override": "get_role",
"x-speakeasy-retries": {
statusCodes: [429, 408],
strategy: "backoff"
}
} },
"/unified/iam/groups": { get: {
operationId: "iam_list_groups",
parameters: [
{
name: "x-account-id",
in: "header",
description: "The account identifier",
required: true,
schema: { type: "string" }
},
{
name: "raw",
required: false,
in: "query",
description: "Indicates that the raw request result should be returned in addition to the mapped result (default value is false)",
schema: {
nullable: true,
type: "boolean"
}
},
{
name: "proxy",
required: false,
in: "query",
description: "Query parameters that can be used to pass through parameters to the underlying provider request by surrounding them with 'proxy' key",
style: "deepObject",
explode: true,
schema: {
additionalProperties: true,
nullable: true,
type: "object"
}
},
{
name: "fields",
required: false,
in: "query",
description: "The comma separated list of fields that will be returned in the response (if empty, all fields are returned)",
schema: {
nullable: true,
example: "id,remote_id,parent_id,remote_parent_id,name,description,roles,type,created_at,updated_at",
type: "string"
}
},
{
name: "filter",
required: false,
in: "query",
description: "Filter parameters that allow greater customisation of the list response",
explode: true,
style: "deepObject",
schema: {
properties: { updated_after: {
description: "Use a string with a date to only select results updated after that given date",
example: "2020-01-01T00:00:00.000Z",
type: "string",
format: "date-time",
nullable: true,
additionalProperties: false
} },
nullable: true,
type: "object"
}
},
{
name: "page",
required: false,
in: "query",
description: "The page number of the results to fetch",
deprecated: true,
schema: {
nullable: true,
type: "string"
}
},
{
name: "page_size",
required: false,
in: "query",
description: "The number of results per page (default value is 25)",
schema: {
nullable: true,
type: "string"
}
},
{
name: "next",
required: false,
in: "query",
description: "The unified cursor",
schema: {
nullable: true,
type: "string"
}
},
{
name: "updated_after",
required: false,
in: "query",
description: "Use a string with a date to only select results updated after that given date",
deprecated: true,
schema: {
format: "date-time",
nullable: true,
example: "2020-01-01T00:00:00.000Z",
type: "string"
}
},
{
name: "expand",
required: false,
in: "query",
description: "The comma separated list of fields that will be expanded in the response",
schema: {
nullable: true,
example: "roles",
type: "string"
}
}
],
responses: {
"200": {
description: "The list of groups was retrieved.",
content: { "application/json": { schema: { $ref: "#/components/schemas/IamGroupsPaginated" } } }
},
"400": {
description: "Invalid request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadRequestResponse" } } }
},
"401": {
description: "Unauthorized access.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnauthorizedResponse" } } }
},
"403": {
description: "Forbidden.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ForbiddenResponse" } } }
},
"404": {
description: "Resource not found.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotFoundResponse" } } }
},
"408": {
description: "The request has timed out.",
headers: { "Retry-After": {
description: "A time in seconds after which the request can be retried.",
schema: { type: "string" }
} },
content: { "application/json": { schema: { $ref: "#/components/schemas/RequestTimedOutResponse" } } }
},
"409": {
description: "Conflict with current state.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ConflictResponse" } } }
},
"412": {
description: "Precondition failed: linked account belongs to a disabled integration.",
content: { "application/json": { schema: { $ref: "#/components/schemas/PreconditionFailedResponse" } } }
},
"422": {
description: "Validation error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnprocessableEntityResponse" } } }
},
"429": {
description: "Too many requests.",
content: { "application/json": { schema: { $ref: "#/components/schemas/TooManyRequestsResponse" } } }
},
"500": {
description: "Server error while executing the request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/InternalServerErrorResponse" } } }
},
"501": {
description: "This functionality is not implemented.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotImplementedResponse" } } }
},
"502": {
description: "Bad gateway error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadGatewayResponse" } } }
}
},
security: [{ basic: [] }],
summary: "List Groups",
tags: ["Groups"],
"x-speakeasy-group": "iam",
"x-speakeasy-name-override": "list_groups",
"x-speakeasy-pagination": {
type: "cursor",
inputs: [{
name: "next",
in: "parameters",
type: "cursor"
}],
outputs: { nextCursor: "$.next" }
},
"x-speakeasy-retries": {
statusCodes: [429, 408],
strategy: "backoff"
}
} },
"/unified/iam/groups/{id}": { get: {
operationId: "iam_get_group",
parameters: [
{
name: "x-account-id",
in: "header",
description: "The account identifier",
required: true,
schema: { type: "string" }
},
{
name: "id",
required: true,
in: "path",
schema: { type: "string" }
},
{
name: "raw",
required: false,
in: "query",
description: "Indicates that the raw request result should be returned in addition to the mapped result (default value is false)",
schema: {
nullable: true,
type: "boolean"
}
},
{
name: "proxy",
required: false,
in: "query",
description: "Query parameters that can be used to pass through parameters to the underlying provider request by surrounding them with 'proxy' key",
style: "deepObject",
explode: true,
schema: {
additionalProperties: true,
nullable: true,
type: "object"
}
},
{
name: "fields",
required: false,
in: "query",
description: "The comma separated list of fields that will be returned in the response (if empty, all fields are returned)",
schema: {
nullable: true,
example: "id,remote_id,parent_id,remote_parent_id,name,description,roles,type,created_at,updated_at",
type: "string"
}
},
{
name: "expand",
required: false,
in: "query",
description: "The comma separated list of fields that will be expanded in the response",
schema: {
nullable: true,
example: "roles",
type: "string"
}
}
],
responses: {
"200": {
description: "The group with the given identifier was retrieved.",
content: { "application/json": { schema: { $ref: "#/components/schemas/IamGroupResult" } } }
},
"400": {
description: "Invalid request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadRequestResponse" } } }
},
"401": {
description: "Unauthorized access.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnauthorizedResponse" } } }
},
"403": {
description: "Forbidden.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ForbiddenResponse" } } }
},
"404": {
description: "Resource not found.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotFoundResponse" } } }
},
"408": {
description: "The request has timed out.",
headers: { "Retry-After": {
description: "A time in seconds after which the request can be retried.",
schema: { type: "string" }
} },
content: { "application/json": { schema: { $ref: "#/components/schemas/RequestTimedOutResponse" } } }
},
"409": {
description: "Conflict with current state.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ConflictResponse" } } }
},
"412": {
description: "Precondition failed: linked account belongs to a disabled integration.",
content: { "application/json": { schema: { $ref: "#/components/schemas/PreconditionFailedResponse" } } }
},
"422": {
description: "Validation error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnprocessableEntityResponse" } } }
},
"429": {
description: "Too many requests.",
content: { "application/json": { schema: { $ref: "#/components/schemas/TooManyRequestsResponse" } } }
},
"500": {
description: "Server error while executing the request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/InternalServerErrorResponse" } } }
},
"501": {
description: "This functionality is not implemented.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotImplementedResponse" } } }
},
"502": {
description: "Bad gateway error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadGatewayResponse" } } }
}
},
security: [{ basic: [] }],
summary: "Get Group",
tags: ["Groups"],
"x-speakeasy-group": "iam",
"x-speakeasy-name-override": "get_group",
"x-speakeasy-retries": {
statusCodes: [429, 408],
strategy: "backoff"
}
} },
"/unified/iam/policies": { get: {
operationId: "iam_list_policies",
parameters: [
{
name: "x-account-id",
in: "header",
description: "The account identifier",
required: true,
schema: { type: "string" }
},
{
name: "raw",
required: false,
in: "query",
description: "Indicates that the raw request result should be returned in addition to the mapped result (default value is false)",
schema: {
nullable: true,
type: "boolean"
}
},
{
name: "proxy",
required: false,
in: "query",
description: "Query parameters that can be used to pass through parameters to the underlying provider request by surrounding them with 'proxy' key",
style: "deepObject",
explode: true,
schema: {
additionalProperties: true,
nullable: true,
type: "object"
}
},
{
name: "fields",
required: false,
in: "query",
description: "The comma separated list of fields that will be returned in the response (if empty, all fields are returned)",
schema: {
nullable: true,
example: "id,remote_id,name,permissions,description,created_at,updated_at",
type: "string"
}
},
{
name: "filter",
required: false,
in: "query",
description: "Filter parameters that allow greater customisation of the list response",
explode: true,
style: "deepObject",
schema: {
properties: { updated_after: {
description: "Use a string with a date to only select results updated after that given date",
example: "2020-01-01T00:00:00.000Z",
type: "string",
format: "date-time",
nullable: true,
additionalProperties: false
} },
nullable: true,
type: "object"
}
},
{
name: "page",
required: false,
in: "query",
description: "The page number of the results to fetch",
deprecated: true,
schema: {
nullable: true,
type: "string"
}
},
{
name: "page_size",
required: false,
in: "query",
description: "The number of results per page (default value is 25)",
schema: {
nullable: true,
type: "string"
}
},
{
name: "next",
required: false,
in: "query",
description: "The unified cursor",
schema: {
nullable: true,
type: "string"
}
},
{
name: "updated_after",
required: false,
in: "query",
description: "Use a string with a date to only select results updated after that given date",
deprecated: true,
schema: {
format: "date-time",
nullable: true,
example: "2020-01-01T00:00:00.000Z",
type: "string"
}
},
{
name: "expand",
required: false,
in: "query",
description: "The comma separated list of fields that will be expanded in the response",
schema: {
nullable: true,
example: "permissions",
type: "string"
}
}
],
responses: {
"200": {
description: "The list of policies was retrieved.",
content: { "application/json": { schema: { $ref: "#/components/schemas/IamPoliciesPaginated" } } }
},
"400": {
description: "Invalid request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadRequestResponse" } } }
},
"401": {
description: "Unauthorized access.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnauthorizedResponse" } } }
},
"403": {
description: "Forbidden.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ForbiddenResponse" } } }
},
"404": {
description: "Resource not found.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotFoundResponse" } } }
},
"408": {
description: "The request has timed out.",
headers: { "Retry-After": {
description: "A time in seconds after which the request can be retried.",
schema: { type: "string" }
} },
content: { "application/json": { schema: { $ref: "#/components/schemas/RequestTimedOutResponse" } } }
},
"409": {
description: "Conflict with current state.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ConflictResponse" } } }
},
"412": {
description: "Precondition failed: linked account belongs to a disabled integration.",
content: { "application/json": { schema: { $ref: "#/components/schemas/PreconditionFailedResponse" } } }
},
"422": {
description: "Validation error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnprocessableEntityResponse" } } }
},
"429": {
description: "Too many requests.",
content: { "application/json": { schema: { $ref: "#/components/schemas/TooManyRequestsResponse" } } }
},
"500": {
description: "Server error while executing the request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/InternalServerErrorResponse" } } }
},
"501": {
description: "This functionality is not implemented.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotImplementedResponse" } } }
},
"502": {
description: "Bad gateway error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadGatewayResponse" } } }
}
},
security: [{ basic: [] }],
summary: "List Policies",
tags: ["Policies"],
"x-speakeasy-group": "iam",
"x-speakeasy-name-override": "list_policies",
"x-speakeasy-pagination": {
type: "cursor",
inputs: [{
name: "next",
in: "parameters",
type: "cursor"
}],
outputs: { nextCursor: "$.next" }
},
"x-speakeasy-retries": {
statusCodes: [429, 408],
strategy: "backoff"
}
} },
"/unified/iam/policies/{id}": { get: {
operationId: "iam_get_policy",
parameters: [
{
name: "x-account-id",
in: "header",
description: "The account identifier",
required: true,
schema: { type: "string" }
},
{
name: "id",
required: true,
in: "path",
schema: { type: "string" }
},
{
name: "raw",
required: false,
in: "query",
description: "Indicates that the raw request result should be returned in addition to the mapped result (default value is false)",
schema: {
nullable: true,
type: "boolean"
}
},
{
name: "proxy",
required: false,
in: "query",
description: "Query parameters that can be used to pass through parameters to the underlying provider request by surrounding them with 'proxy' key",
style: "deepObject",
explode: true,
schema: {
additionalProperties: true,
nullable: true,
type: "object"
}
},
{
name: "fields",
required: false,
in: "query",
description: "The comma separated list of fields that will be returned in the response (if empty, all fields are returned)",
schema: {
nullable: true,
example: "id,remote_id,name,permissions,description,created_at,updated_at",
type: "string"
}
},
{
name: "expand",
required: false,
in: "query",
description: "The comma separated list of fields that will be expanded in the response",
schema: {
nullable: true,
example: "permissions",
type: "string"
}
}
],
responses: {
"200": {
description: "The policy with the given identifier was retrieved.",
content: { "application/json": { schema: { $ref: "#/components/schemas/IamPolicyResult" } } }
},
"400": {
description: "Invalid request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadRequestResponse" } } }
},
"401": {
description: "Unauthorized access.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnauthorizedResponse" } } }
},
"403": {
description: "Forbidden.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ForbiddenResponse" } } }
},
"404": {
description: "Resource not found.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotFoundResponse" } } }
},
"408": {
description: "The request has timed out.",
headers: { "Retry-After": {
description: "A time in seconds after which the request can be retried.",
schema: { type: "string" }
} },
content: { "application/json": { schema: { $ref: "#/components/schemas/RequestTimedOutResponse" } } }
},
"409": {
description: "Conflict with current state.",
content: { "application/json": { schema: { $ref: "#/components/schemas/ConflictResponse" } } }
},
"412": {
description: "Precondition failed: linked account belongs to a disabled integration.",
content: { "application/json": { schema: { $ref: "#/components/schemas/PreconditionFailedResponse" } } }
},
"422": {
description: "Validation error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/UnprocessableEntityResponse" } } }
},
"429": {
description: "Too many requests.",
content: { "application/json": { schema: { $ref: "#/components/schemas/TooManyRequestsResponse" } } }
},
"500": {
description: "Server error while executing the request.",
content: { "application/json": { schema: { $ref: "#/components/schemas/InternalServerErrorResponse" } } }
},
"501": {
description: "This functionality is not implemented.",
content: { "application/json": { schema: { $ref: "#/components/schemas/NotImplementedResponse" } } }
},
"502": {
description: "Bad gateway error.",
content: { "application/json": { schema: { $ref: "#/components/schemas/BadGatewayResponse" } } }
}
},
security: [{ basic: [] }],
summary: "Get Policy",
tags: ["Policies"],
"x-speakeasy-group": "iam",
"x-speakeasy-name-override": "get_policy",
"x-speakeasy-retries": {
statusCodes: [429, 408],
strategy: "backoff"
}
} }
},
info: {
title: "IAM",
description: "The documentation for the StackOne Unified API - IAM",
version: "1.0.0",
contact: {}
},
tags: [
{
name: "Users",
description: "People or accounts with access to the system."
},
{
name: "Roles",
description: "Roles assigned to users for access control."
},
{
name: "Groups",
description: "Groups for organizing users."
},
{
name: "Policies",
description: "Security and access policies."
},
{
name: "Permissions",
description: "Specific permissions granted to users or roles."
},
{
name: "Resources",
description: "Resources that can be accessed or managed."
}
],
servers: [{ url: "https://api.stackone.com" }],
components: {
securitySchemes: { basic: {
type: "http",
scheme: "basic"
} },
schemas: {
BadGatewayResponse: {
type: "object",
properties: {
statusCode: {
type: "number",
description: "HTTP status code",
example: 502
},
message: {
type: "string",
description: "Error message",
example: "Bad Gateway"
},
timestamp: {
type: "string",
description: "Timestamp when the error occurred",
example: "2023-05-30T00:00:00.000Z",
format: "date-time"
}
},
required: [
"statusCode",
"message",
"timestamp"
]
},
BadRequestResponse: {
type: "object",
properties: {
statusCode: {
type: "number",
description: "HTTP status code",
example: 400
},
message: {
type: "string",
description: "Error message",
example: "Bad Request"
},
timestamp: {
type: "string",
description: "Timestamp when the error occurred",
example: "2023-05-30T00:00:00.000Z",
format: "date-time"
},
data: {
description: "Error details",
nullable: true,
allOf: [{ $ref: "#/components/schemas/UnifiedError" }]
},
provider_errors: {
description: "List of provider-specific errors",
nullable: true,
type: "array",
items: { $ref: "#/components/schemas/ProviderError" }
}
},
required: [
"statusCode",
"message",
"timestamp"
]
},
ConflictResponse: {
type: "object",
prope