diff --git a/services/membership/v2/membership.json b/services/membership/v2/membership.json deleted file mode 100644 index e66d802..0000000 --- a/services/membership/v2/membership.json +++ /dev/null @@ -1,1312 +0,0 @@ -{ - "components": { - "schemas": { - "Consistency": { - "properties": { - "atExactSnapshot": { - "$ref": "#/components/schemas/Zookie" - }, - "atLeastAsFresh": { - "$ref": "#/components/schemas/Zookie" - }, - "fullyConsistent": { - "title": "fully_consistent indicates that all data used in the API call *must* be at the most recent snapshot found. using this method can be *slow*, so unless there is a need to do so, it is recommended to use `at_least_as_fresh` with a stored Zookie", - "type": "boolean" - }, - "minimizeLatency": { - "title": "minimize_latency indicates that the latency for the call should be minimized by having the system select the fastest snapshot available", - "type": "boolean" - } - }, - "type": "object" - }, - "CreateResourcePayload": { - "properties": { - "members": { - "items": { - "$ref": "#/components/schemas/Member" - }, - "title": "The list of members", - "type": "array" - }, - "parentId": { - "example": "029527b4-a8c0-4f0b-8a70-516a24cd23045", - "pattern": "^([a-zA-Z0-9/_|\\-=+]{1,})$", - "title": "The ID of the parent", - "type": "string" - }, - "parentType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - }, - "resourceAlias": { - "example": "schwarz-it-kg-WJACUK1-alias", - "pattern": "^([a-zA-Z0-9/_|\\-=+]{1,})$", - "title": "Resource alias (if exists)", - "type": "string" - }, - "resourceId": { - "example": "029527b4-a8c0-4f0b-8a70-516a24cd23001", - "pattern": "^([a-zA-Z0-9/_|\\-=+]{1,})$", - "title": "The ID of the resource, that should be created", - "type": "string" - } - }, - "required": [ - "resourceId", - "parentType", - "parentId" - ], - "type": "object" - }, - "CreateResourceResponse": { - "properties": { - "members": { - "items": { - "$ref": "#/components/schemas/Member" - }, - "title": "The list of members", - "type": "array" - }, - "parentId": { - "example": "029527b4-a8c0-4f0b-8a70-516a24cd23045", - "pattern": "^([a-zA-Z0-9/_|\\-=+]{1,})$", - "title": "The ID of the parent", - "type": "string" - }, - "parentType": { - "example": "organization", - "maxLength": 255, - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - }, - "resourceAlias": { - "example": "schwarz-it-kg-WJACUK1-alias", - "pattern": "^([a-zA-Z0-9/_|\\-=+]{1,})$", - "title": "Resource alias (if exists)", - "type": "string" - }, - "resourceId": { - "example": "029527b4-a8c0-4f0b-8a70-516a24cd23001", - "pattern": "^([a-zA-Z0-9/_|\\-=+]{1,})$", - "title": "The ID of the resource, that should be created", - "type": "string" - }, - "resourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - }, - "writtenAt": { - "$ref": "#/components/schemas/Zookie" - } - }, - "required": [ - "resourceType", - "resourceId", - "parentType", - "parentId" - ], - "type": "object" - }, - "DeleteResourceResponse": { - "properties": { - "writtenAt": { - "$ref": "#/components/schemas/Zookie" - } - }, - "type": "object" - }, - "DeleteSubjectResponse": { - "properties": { - "deletedAt": { - "$ref": "#/components/schemas/Zookie" - }, - "deletedFromResourceIds": { - "example": [ - "schwarz-it-kg-WJACUK1" - ], - "items": { - "type": "string" - }, - "maxLength": 255, - "minLength": 1, - "title": "The ID of the resources, where the subject was removed from.", - "type": "array" - } - }, - "required": [ - "deletedFromResourceIds" - ], - "type": "object" - }, - "ErrorResponse": { - "example": { - "error": "Bad Request", - "message": "Some information about what caused the Error", - "path": "/v1/path/which/returned/error", - "status": 400, - "timeStamp": "2019-08-24T14:15:22Z" - }, - "properties": { - "error": { - "type": "string" - }, - "message": { - "type": "string" - }, - "path": { - "type": "string" - }, - "status": { - "type": "integer" - }, - "timeStamp": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "timeStamp", - "path", - "status", - "error", - "message" - ], - "type": "object" - }, - "ExistingPermission": { - "properties": { - "description": { - "example": "Can create projects in an organization", - "maxLength": 255, - "title": "A human readable description of the permission", - "type": "string" - }, - "name": { - "example": "iam.member.read", - "maxLength": 255, - "pattern": "^[a-z](?:-?\\.?[a-z]){1,63}$", - "title": "Permission of the subject", - "type": "string" - } - }, - "required": [ - "name", - "description" - ], - "type": "object" - }, - "Member": { - "properties": { - "role": { - "example": "owner", - "pattern": "^[a-z](?:-?\\.?[a-z]){1,63}$", - "title": "A valid role defined for the resource.", - "type": "string" - }, - "subject": { - "example": "user@mail.schwarz", - "maxLength": 255, - "minLength": 1, - "title": "Identifier of user, service account or client. Usually email address or name in case of clients.", - "type": "string" - } - }, - "required": [ - "subject", - "role" - ], - "type": "object" - }, - "Permission": { - "properties": { - "description": { - "example": "Can create projects in an organization", - "maxLength": 255, - "minLength": 1, - "title": "A human readable description of the permission", - "type": "string" - }, - "name": { - "example": "iam.member.read", - "maxLength": 255, - "pattern": "^[a-z](?:-?\\.?[a-z]){1,63}$", - "title": "Permission name", - "type": "string" - } - }, - "required": [ - "name", - "description" - ], - "type": "object" - }, - "PermissionRequest": { - "properties": { - "name": { - "example": "iam.member.read", - "maxLength": 255, - "pattern": "^[a-z](?:-?\\.?[a-z]){1,63}$", - "title": "Existing permission", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "RemoveMembersPayload": { - "properties": { - "forceRemove": { - "title": "When true, removes other memberships of the subject that would stop the removal of the requested membership", - "type": "boolean" - }, - "members": { - "items": { - "$ref": "#/components/schemas/Member" - }, - "title": "The list of members", - "type": "array" - }, - "resourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - } - }, - "required": [ - "resourceType", - "members" - ], - "type": "object" - }, - "RemoveRoleRequest": { - "properties": { - "name": { - "example": "my-owner", - "pattern": "^[a-z](?:-?\\.?[a-z]){1,63}$", - "title": "Name and identifier of the role.", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "RemoveRolesPayload": { - "properties": { - "resourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - }, - "roles": { - "items": { - "$ref": "#/components/schemas/RemoveRoleRequest" - }, - "title": "The list of roles", - "type": "array" - } - }, - "required": [ - "resourceType", - "roles" - ], - "type": "object" - }, - "Resource": { - "properties": { - "resourceAlias": { - "example": "schwarz-it-kg-WJACUK1-alias", - "maxLength": 255, - "title": "Resource alias (if exists)", - "type": "string" - }, - "resourceId": { - "example": "schwarz-it-kg-WJACUK1", - "pattern": "^([a-zA-Z0-9/_|\\-=+]{1,})$", - "title": "The ID of the resource", - "type": "string" - }, - "resourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - } - }, - "required": [ - "resourceId", - "resourceType" - ], - "type": "object" - }, - "Role": { - "properties": { - "description": { - "example": "An owner of the project", - "maxLength": 255, - "title": "A human readable description of the role", - "type": "string" - }, - "name": { - "example": "my-owner", - "pattern": "^[a-z](?:-?\\.?[a-z]){1,63}$", - "title": "Name and identifier of the role.", - "type": "string" - }, - "permissions": { - "items": { - "$ref": "#/components/schemas/Permission" - }, - "title": "Permissions for the role", - "type": "array" - } - }, - "required": [ - "name", - "description", - "permissions" - ], - "type": "object" - }, - "RolesResponse": { - "properties": { - "resourceId": { - "example": "schwarz-it-kg-WJACUK1", - "pattern": "^([a-zA-Z0-9/_|\\-=+]{1,})$", - "title": "The ID of the resource, where the members should be updated", - "type": "string" - }, - "resourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - }, - "roles": { - "items": { - "$ref": "#/components/schemas/Role" - }, - "title": "Roles", - "type": "array" - } - }, - "required": [ - "resourceId", - "resourceType", - "roles" - ], - "type": "object" - }, - "Subject": { - "properties": { - "email": { - "example": "user@mail.schwarz", - "maxLength": 255, - "title": "Subject email", - "type": "string" - }, - "id": { - "example": "fea4e3d2-0710-4365-8dda-f54bfa2467e5", - "maxLength": 255, - "title": "Subject id", - "type": "string" - }, - "type": { - "enum": [ - "user", - "client", - "service-account" - ], - "example": "user", - "title": "Subject type", - "type": "string" - } - }, - "required": [ - "email", - "id", - "type" - ], - "type": "object" - }, - "UserMembership": { - "properties": { - "resourceId": { - "example": "schwarz-it-kg-WJACUK1", - "pattern": "^([a-zA-Z0-9/_|\\-=+]{1,})$", - "title": "The ID of the resource", - "type": "string" - }, - "resourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - }, - "role": { - "example": "my-owner", - "pattern": "^[a-z](?:-?\\.?[a-z]){1,63}$", - "title": "A valid role defined for the resource.", - "type": "string" - }, - "subject": { - "maxLength": 255, - "title": "Identifier of user, service account or client. Usually email address or name in case of clients.", - "type": "string" - } - }, - "required": [ - "resourceId", - "resourceType", - "subject", - "role" - ], - "type": "object" - }, - "UserPermission": { - "properties": { - "permissions": { - "items": { - "$ref": "#/components/schemas/ExistingPermission" - }, - "type": "array" - }, - "resourceId": { - "example": "schwarz-it-kg-WJACUK1", - "pattern": "^([a-zA-Z0-9/_|\\-=+]{1,})$", - "title": "The ID of the resource", - "type": "string" - }, - "resourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - } - }, - "required": [ - "resourceId", - "resourceType", - "permissions" - ], - "type": "object" - }, - "UserResourcesResponse": { - "properties": { - "cursor": { - "title": "Pagination cursor. A cursor is returned on the first call of the pagination process. If given, it will start from the end of the previous position. If not given, a new pagination is started", - "type": "string" - }, - "items": { - "items": { - "$ref": "#/components/schemas/Resource" - }, - "title": "A child resource of the requested parent where the user has any of the requested permissions", - "type": "array" - }, - "limit": { - "default": 50, - "format": "int32", - "maximum": 100, - "title": "Pagination limit. Limits the maximum size of returned elements. The item count starts from the beginning or from the given cursor. When out of bounds, limited to min and max.", - "type": "integer" - } - }, - "required": [ - "items", - "cursor", - "limit" - ], - "type": "object" - }, - "WriteSchemaResponse": { - "properties": { - "writtenAt": { - "$ref": "#/components/schemas/Zookie" - } - }, - "required": [ - "writtenAt" - ], - "type": "object" - }, - "Zookie": { - "properties": { - "zookie": { - "type": "string" - } - }, - "type": "object" - }, - "AddMembersPayload": { - "properties": { - "members": { - "items": { - "$ref": "#/components/schemas/Member" - }, - "title": "The list of members", - "type": "array" - }, - "resourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - } - }, - "required": [ - "resourceType", - "members" - ], - "type": "object" - }, - "AddRolesPayload": { - "properties": { - "resourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - }, - "roles": { - "items": { - "$ref": "#/components/schemas/AddRolesPayloadItem" - }, - "title": "The list of roles", - "type": "array" - } - }, - "required": [ - "resourceType", - "roles" - ], - "type": "object" - }, - "AddRolesPayloadItem": { - "properties": { - "description": { - "example": "An owner of the project", - "maxLength": 255, - "minLength": 1, - "title": "A human readable description of the role", - "type": "string" - }, - "name": { - "example": "my-owner", - "pattern": "^[a-z](?:-?\\.?[a-z]){1,63}$", - "title": "Name and identifier of the role.", - "type": "string" - }, - "permissions": { - "items": { - "$ref": "#/components/schemas/PermissionRequest" - }, - "title": "Permissions for the role", - "type": "array" - } - }, - "required": [ - "name", - "description", - "permissions" - ], - "type": "object" - }, - "ValidateChildMembersPayload": { - "properties": { - "childResourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - }, - "members": { - "items": { - "$ref": "#/components/schemas/Member" - }, - "title": "The list of members", - "type": "array" - }, - "resourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - } - }, - "required": [ - "resourceType", - "childResourceType", - "members" - ], - "type": "object" - }, - "MembersResponse": { - "properties": { - "members": { - "items": { - "$ref": "#/components/schemas/Member" - }, - "title": "The list of members who should be added to this resource", - "type": "array" - }, - "resourceId": { - "example": "schwarz-it-kg-WJACUK1", - "pattern": "^([a-zA-Z0-9/_|\\-=+]{1,})$", - "title": "The ID of the resource, where the members should be updated", - "type": "string" - }, - "resourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - }, - "writtenAt": { - "$ref": "#/components/schemas/Zookie" - } - }, - "required": [ - "resourceId", - "resourceType", - "members" - ], - "type": "object" - }, - "EnforcePermissionPayload": { - "properties": { - "actions": { - "example": [ - "iam.member.edit" - ], - "items": { - "type": "string" - }, - "pattern": "^[a-z](?:-?\\.?[a-z]){1,63}$", - "title": "A list of required permissions. If the subject has any of the permission on the resource, the enforcement is successful", - "type": "array" - }, - "consistency": { - "$ref": "#/components/schemas/Consistency" - }, - "resource": { - "example": "schwarz-it-kg-WJACUK1", - "title": "Unique identifier of the resource", - "type": "string" - }, - "resourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - }, - "subject": { - "example": "fea4e3d2-0710-4365-8dda-f54bfa2467e5", - "maxLength": 255, - "title": "Unique identifier of the subject. `sub` field of the token issued by the IDP or Service account service", - "type": "string" - } - }, - "required": [ - "subject", - "resource", - "resourceType", - "actions" - ], - "type": "object" - }, - "ListPermissionsResponse": { - "properties": { - "permissions": { - "items": { - "$ref": "#/components/schemas/Permission" - }, - "title": "List of permissions", - "type": "array" - } - }, - "required": [ - "permissions" - ], - "type": "object" - }, - "ListMembersResponse": { - "properties": { - "members": { - "items": { - "$ref": "#/components/schemas/Member" - }, - "title": "The list of members who should be added to this resource", - "type": "array" - }, - "resourceId": { - "example": "schwarz-it-kg-WJACUK1", - "pattern": "^([a-zA-Z0-9/_|\\-=+]{1,})$", - "title": "The ID of the resource, where the members should be updated", - "type": "string" - }, - "resourceType": { - "example": "organization", - "pattern": "^[a-z](?:-?[a-z]){1,63}$", - "title": "Resource type", - "type": "string" - } - }, - "required": [ - "resourceId", - "resourceType", - "members" - ], - "type": "object" - }, - "ListSubjectIdsResponse": { - "properties": { - "cursor": { - "title": "Pagination cursor. A cursor is returned on the first call of the pagination process. If given, it will start from the end of the previous position. If not given, a new pagination is started", - "type": "string" - }, - "items": { - "items": { - "type": "string" - }, - "type": "array" - }, - "limit": { - "format": "int32", - "title": "Pagination limit. The used limit for this request.", - "type": "integer" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "ListSubjectsResponse": { - "properties": { - "items": { - "items": { - "$ref": "#/components/schemas/Subject" - }, - "type": "array" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "TransferSubjectMembershipsPayload": { - "properties": { - "targetSubjectId": { - "example": "029527b4-a8c0-4f0b-8a70-516a24cd2300", - "maxLength": 255, - "minLength": 1, - "title": "Subject id transfer the memberships to. Must be an existing subject in the IDP.", - "type": "string" - } - }, - "required": [ - "targetSubjectId" - ], - "type": "object" - }, - "ListUserMembershipsResponse": { - "properties": { - "items": { - "items": { - "$ref": "#/components/schemas/UserMembership" - }, - "type": "array" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "ListUserPermissionsResponse": { - "properties": { - "items": { - "items": { - "$ref": "#/components/schemas/UserPermission" - }, - "type": "array" - } - }, - "required": [ - "items" - ], - "type": "object" - }, - "WriteSchemaPayload": { - "properties": { - "schema": { - "title": "Full content of the schema", - "type": "string" - } - }, - "required": [ - "schema" - ], - "type": "object" - } - } - }, - "info": { - "contact": { - "email": "SIT-STACKIT-Core-Platform-Security@mail.schwarz", - "name": "SIT-STACKIT-Core-Platform-Security", - "url": "https://developers.stackit.schwarz" - }, - "description": "The Membership API is used to manage memberships, roles and permissions of STACKIT resources, like projects, folders, organizations and other resources.", - "title": "STACKIT Membership API", - "version": "2.0" - }, - "openapi": "3.0.3", - "paths": { - "/v2/permissions": { - "get": { - "description": "Get available permissions", - "operationId": "ListPermissions", - "parameters": [ - { - "in": "query", - "name": "resourceType", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ListPermissionsResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Malformed input" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" - } - }, - "summary": "Get available permissions" - } - }, - "/v2/users/{email}/memberships": { - "get": { - "description": "List memberships of a user. An administrative access is needed to list any user's memberships, while the user can do it on his/her own email. You can use filters to scope the request to a project/folder/organization. In this case -if caller is not the subject-, owner permissions are required. Because of hierarchical role bindings, the user might have permissions on more resources.", - "operationId": "ListUserMemberships", - "parameters": [ - { - "in": "path", - "name": "email", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "resourceType", - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "resourceId", - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "parentResourceId", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ListUserMembershipsResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Malformed input" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" - } - }, - "summary": "List memberships of a user" - } - }, - "/v2/{resourceId}/members": { - "patch": { - "description": "Add members to the given resource with specified roles.", - "operationId": "AddMembers", - "parameters": [ - { - "in": "path", - "name": "resourceId", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AddMembersPayload" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MembersResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Malformed input" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" - } - }, - "summary": "Add members to a resource" - } - }, - "/v2/{resourceId}/members/remove": { - "post": { - "description": "Remove members from the given resource with specified roles.", - "operationId": "RemoveMembers", - "parameters": [ - { - "in": "path", - "name": "resourceId", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RemoveMembersPayload" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MembersResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Malformed input" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" - } - }, - "summary": "Remove members from a resource" - } - }, - "/v2/{resourceType}/{resourceId}/members": { - "get": { - "description": "List members of the given resource.", - "operationId": "ListMembers", - "parameters": [ - { - "in": "path", - "name": "resourceType", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "resourceId", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "subject", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ListMembersResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Malformed input" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" - } - }, - "summary": "Get members to a resource" - } - }, - "/v2/{resourceType}/{resourceId}/roles": { - "get": { - "description": "Get roles and permissions of a resource", - "operationId": "ListRoles", - "parameters": [ - { - "in": "path", - "name": "resourceType", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "path", - "name": "resourceId", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RolesResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Malformed input" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - }, - "description": "Forbidden" - } - }, - "summary": "Get roles and permissions of a resource" - } - } - }, - "servers": [ - { - "url": "https://authorization.api.{region}stackit.cloud", - "variables": { - "region": { - "default": "" - } - } - } - ], - "tags": [ - { - "name": "Membership" - } - ] -} \ No newline at end of file