{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "#/components/schemas/AssignRoleDto", "title": "AssignRoleDto", "allOf": [ { "type": "object", "properties": { "role_slug": { "type": "string", "description": "The slug of the role to assign.", "example": "editor" } }, "required": [ "role_slug" ] }, { "oneOf": [ { "type": "object", "properties": { "resource_id": { "type": "string", "description": "The ID of the resource. Mutually exclusive with `resource_external_id` and `resource_type_slug`.", "example": "authz_resource_01HXYZ123456789ABCDEFGH" } }, "required": [ "resource_id" ], "not": { "anyOf": [ { "properties": { "resource_external_id": { "x-exclude-from-lint": true } }, "required": [ "resource_external_id" ] }, { "properties": { "resource_type_slug": { "x-exclude-from-lint": true } }, "required": [ "resource_type_slug" ] } ] } }, { "type": "object", "properties": { "resource_external_id": { "type": "string", "description": "The external ID of the resource. Required with `resource_type_slug`. Mutually exclusive with `resource_id`.", "example": "project-ext-456" }, "resource_type_slug": { "type": "string", "description": "The resource type slug. Required with `resource_external_id`. Mutually exclusive with `resource_id`.", "example": "project" } }, "required": [ "resource_external_id", "resource_type_slug" ], "not": { "anyOf": [ { "properties": { "resource_id": { "x-exclude-from-lint": true } }, "required": [ "resource_id" ] } ] } } ] } ], "x-mutually-exclusive-body-groups": { "resource_target": { "optional": false, "variants": { "by_id": [ "resource_id" ], "by_external_id": [ "resource_external_id", "resource_type_slug" ] } } } }