openapi: 3.2.0 info: title: Cal.com API v2 Orgs / Roles API description: '' version: 1.0.0 contact: {} servers: [] tags: - name: Orgs / Roles paths: /v2/organizations/{orgId}/roles: post: description: 'Required membership role: `org admin`. PBAC permission: `role.create`. Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control' operationId: OrganizationsRolesController_createRole parameters: - name: Authorization in: header description: For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_ required: false schema: type: string - name: x-cal-secret-key in: header description: For platform customers - OAuth client secret key required: false schema: type: string - name: x-cal-client-id in: header description: For platform customers - OAuth client ID required: false schema: type: string - name: orgId required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateOrgRoleInput' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/CreateOrgRoleOutput' summary: Create a new organization role tags: - Orgs / Roles x-platform-plan: SCALE get: description: 'Required membership role: `org admin`. PBAC permission: `role.readOrgRoles`. Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control' operationId: OrganizationsRolesController_getAllRoles parameters: - name: Authorization in: header description: For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_ required: false schema: type: string - name: x-cal-secret-key in: header description: For platform customers - OAuth client secret key required: false schema: type: string - name: x-cal-client-id in: header description: For platform customers - OAuth client ID required: false schema: type: string - name: orgId required: true in: path schema: type: number - name: take required: false in: query description: Maximum number of items to return schema: minimum: 1 maximum: 250 default: 250 example: 25 type: number - name: skip required: false in: query description: Number of items to skip schema: minimum: 0 default: 0 example: 0 type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/GetAllOrgRolesOutput' summary: Get all organization roles tags: - Orgs / Roles x-platform-plan: SCALE /v2/organizations/{orgId}/roles/{roleId}: get: description: 'Required membership role: `org admin`. PBAC permission: `role.readOrgRoles`. Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control' operationId: OrganizationsRolesController_getRole parameters: - name: Authorization in: header description: For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_ required: false schema: type: string - name: x-cal-secret-key in: header description: For platform customers - OAuth client secret key required: false schema: type: string - name: x-cal-client-id in: header description: For platform customers - OAuth client ID required: false schema: type: string - name: orgId required: true in: path schema: type: number - name: roleId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/GetOrgRoleOutput' summary: Get a specific organization role tags: - Orgs / Roles x-platform-plan: SCALE patch: description: 'Required membership role: `org admin`. PBAC permission: `role.update`. Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control' operationId: OrganizationsRolesController_updateRole parameters: - name: Authorization in: header description: For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_ required: false schema: type: string - name: x-cal-secret-key in: header description: For platform customers - OAuth client secret key required: false schema: type: string - name: x-cal-client-id in: header description: For platform customers - OAuth client ID required: false schema: type: string - name: orgId required: true in: path schema: type: number - name: roleId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateOrgRoleInput' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/UpdateOrgRoleOutput' summary: Update an organization role tags: - Orgs / Roles x-platform-plan: SCALE delete: description: 'Required membership role: `org admin`. PBAC permission: `role.delete`. Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control' operationId: OrganizationsRolesController_deleteRole parameters: - name: Authorization in: header description: For non-platform customers - value must be `Bearer ` where `` is api key prefixed with cal_ required: false schema: type: string - name: x-cal-secret-key in: header description: For platform customers - OAuth client secret key required: false schema: type: string - name: x-cal-client-id in: header description: For platform customers - OAuth client ID required: false schema: type: string - name: orgId required: true in: path schema: type: number - name: roleId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/DeleteOrgRoleOutput' summary: Delete an organization role tags: - Orgs / Roles x-platform-plan: SCALE components: schemas: DeleteOrgRoleOutput: type: object properties: status: enum: - success - error type: string example: success data: $ref: '#/components/schemas/OrgRoleOutput' required: - status - data OrgRoleOutput: type: object properties: id: type: string description: Unique identifier for the role name: type: string description: Name of the role color: type: - string - 'null' description: Color for the role (hex code) description: type: - string - 'null' description: Description of the role organizationId: type: - number - 'null' description: Organization ID this role belongs to type: enum: - SYSTEM - CUSTOM type: string description: Type of role permissions: type: array description: Permissions assigned to this role in 'resource.action' format. example: - booking.read - eventType.create items: type: string enum: - '*.*' - role.create - role.read - role.readTeamRoles - role.readOrgRoles - role.update - role.delete - eventType.create - eventType.read - eventType.readTeamEventTypes - eventType.readOrgEventTypes - eventType.update - eventType.delete - calEvent.create - calEvent.read - calEvent.update - calEvent.delete - team.create - team.read - team.readOrgTeams - team.readTeamSettings - team.readConferencing - team.readVerifiedResources - team.readMemberships - team.update - team.delete - team.invite - team.remove - team.listMembers - team.listMembersPrivate - team.changeMemberRole - team.impersonate - organization.create - organization.read - organization.readMemberships - organization.readManagedOrganizations - organization.readDelegationCredentials - organization.listMembers - organization.listMembersPrivate - organization.readMemberAuditLogs - organization.invite - organization.remove - organization.manageBilling - organization.changeMemberRole - organization.impersonate - organization.passwordReset - organization.editUsers - organization.update - organization.delete - booking.read - booking.readOrgBookings - booking.readRecordings - booking.update - booking.updateOrgBookings - booking.reassignOrgPastBookings - booking.readOrgAuditLogs - insights.read - workflow.create - workflow.read - workflow.readTeamWorkflows - workflow.update - workflow.delete - organization.attributes.read - organization.attributes.update - organization.attributes.delete - organization.attributes.create - organization.attributes.readSyncHistory - organization.attributes.editUsers - organization.attributes.readAuditLogs - routingForm.create - routingForm.read - routingForm.readTeamRoutingForms - routingForm.readOrgRoutingForms - routingForm.update - routingForm.delete - routingForm.readOrgAuditLogs - routingForm.readResponsePii - webhook.create - webhook.read - webhook.readOrgWebhooks - webhook.update - webhook.delete - availability.readTeamAvailability - availability.readOrgAvailability - availability.updateOrgAvailability - availability.readOrgAuditLogs - ooo.readOrgOoo - watchlist.create - watchlist.read - watchlist.update - watchlist.delete - featureOptIn.read - featureOptIn.update - organization.customDomain.create - organization.customDomain.read - organization.customDomain.update - organization.customDomain.delete - tag.create - tag.update - tag.delete createdAt: type: string description: When the role was created updatedAt: type: string description: When the role was last updated required: - id - name - type - permissions - createdAt - updatedAt CreateOrgRoleOutput: type: object properties: status: enum: - success - error type: string example: success data: $ref: '#/components/schemas/OrgRoleOutput' required: - status - data CreateOrgRoleInput: type: object properties: color: type: string description: Color for the role (hex code) description: type: string description: Description of the role permissions: type: array items: type: string enum: - '*.*' - role.create - role.read - role.readTeamRoles - role.readOrgRoles - role.update - role.delete - eventType.create - eventType.read - eventType.readTeamEventTypes - eventType.readOrgEventTypes - eventType.update - eventType.delete - calEvent.create - calEvent.read - calEvent.update - calEvent.delete - team.create - team.read - team.readOrgTeams - team.readTeamSettings - team.readConferencing - team.readVerifiedResources - team.readMemberships - team.update - team.delete - team.invite - team.remove - team.listMembers - team.listMembersPrivate - team.changeMemberRole - team.impersonate - organization.create - organization.read - organization.readMemberships - organization.readManagedOrganizations - organization.readDelegationCredentials - organization.listMembers - organization.listMembersPrivate - organization.readMemberAuditLogs - organization.invite - organization.remove - organization.manageBilling - organization.changeMemberRole - organization.impersonate - organization.passwordReset - organization.editUsers - organization.update - organization.delete - booking.read - booking.readOrgBookings - booking.readRecordings - booking.update - booking.updateOrgBookings - booking.reassignOrgPastBookings - booking.readOrgAuditLogs - insights.read - workflow.create - workflow.read - workflow.readTeamWorkflows - workflow.update - workflow.delete - organization.attributes.read - organization.attributes.update - organization.attributes.delete - organization.attributes.create - organization.attributes.readSyncHistory - organization.attributes.editUsers - organization.attributes.readAuditLogs - routingForm.create - routingForm.read - routingForm.readTeamRoutingForms - routingForm.readOrgRoutingForms - routingForm.update - routingForm.delete - routingForm.readOrgAuditLogs - routingForm.readResponsePii - webhook.create - webhook.read - webhook.readOrgWebhooks - webhook.update - webhook.delete - availability.readTeamAvailability - availability.readOrgAvailability - availability.updateOrgAvailability - availability.readOrgAuditLogs - ooo.readOrgOoo - watchlist.create - watchlist.read - watchlist.update - watchlist.delete - featureOptIn.read - featureOptIn.update - organization.customDomain.create - organization.customDomain.read - organization.customDomain.update - organization.customDomain.delete - tag.create - tag.update - tag.delete description: 'Permissions for this role (format: resource.action). On update, this field replaces the entire permission set for the role (full replace). Use granular permission endpoints for one-by-one changes.' example: - eventType.read - eventType.create - booking.read name: type: string minLength: 1 description: Name of the role required: - name GetOrgRoleOutput: type: object properties: status: enum: - success - error type: string example: success data: $ref: '#/components/schemas/OrgRoleOutput' required: - status - data GetAllOrgRolesOutput: type: object properties: status: enum: - success - error type: string example: success data: type: array items: $ref: '#/components/schemas/OrgRoleOutput' required: - status - data UpdateOrgRoleOutput: type: object properties: status: enum: - success - error type: string example: success data: $ref: '#/components/schemas/OrgRoleOutput' required: - status - data UpdateOrgRoleInput: type: object properties: color: type: string description: Color for the role (hex code) description: type: string description: Description of the role permissions: type: array items: type: string enum: - '*.*' - role.create - role.read - role.readTeamRoles - role.readOrgRoles - role.update - role.delete - eventType.create - eventType.read - eventType.readTeamEventTypes - eventType.readOrgEventTypes - eventType.update - eventType.delete - calEvent.create - calEvent.read - calEvent.update - calEvent.delete - team.create - team.read - team.readOrgTeams - team.readTeamSettings - team.readConferencing - team.readVerifiedResources - team.readMemberships - team.update - team.delete - team.invite - team.remove - team.listMembers - team.listMembersPrivate - team.changeMemberRole - team.impersonate - organization.create - organization.read - organization.readMemberships - organization.readManagedOrganizations - organization.readDelegationCredentials - organization.listMembers - organization.listMembersPrivate - organization.readMemberAuditLogs - organization.invite - organization.remove - organization.manageBilling - organization.changeMemberRole - organization.impersonate - organization.passwordReset - organization.editUsers - organization.update - organization.delete - booking.read - booking.readOrgBookings - booking.readRecordings - booking.update - booking.updateOrgBookings - booking.reassignOrgPastBookings - booking.readOrgAuditLogs - insights.read - workflow.create - workflow.read - workflow.readTeamWorkflows - workflow.update - workflow.delete - organization.attributes.read - organization.attributes.update - organization.attributes.delete - organization.attributes.create - organization.attributes.readSyncHistory - organization.attributes.editUsers - organization.attributes.readAuditLogs - routingForm.create - routingForm.read - routingForm.readTeamRoutingForms - routingForm.readOrgRoutingForms - routingForm.update - routingForm.delete - routingForm.readOrgAuditLogs - routingForm.readResponsePii - webhook.create - webhook.read - webhook.readOrgWebhooks - webhook.update - webhook.delete - availability.readTeamAvailability - availability.readOrgAvailability - availability.updateOrgAvailability - availability.readOrgAuditLogs - ooo.readOrgOoo - watchlist.create - watchlist.read - watchlist.update - watchlist.delete - featureOptIn.read - featureOptIn.update - organization.customDomain.create - organization.customDomain.read - organization.customDomain.update - organization.customDomain.delete - tag.create - tag.update - tag.delete description: 'Permissions for this role (format: resource.action). On update, this field replaces the entire permission set for the role (full replace). Use granular permission endpoints for one-by-one changes.' example: - eventType.read - eventType.create - booking.read name: type: string minLength: 1 description: Name of the role x-provenance: method: harvested publisher: Cal.com source: https://cal.com/docs/api-reference/v2/openapi.json note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json); stamped by stamp-openapi-provenance.py (roadmap#793)