openapi: 3.0.3 info: title: Vinta Schedule API version: 1.0.0 description: API for vinta-schedule-api project paths: /available-times/: get: operationId: available_times_list description: ViewSet for managing available times with recurring support. parameters: - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) tags: - available-times security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedAvailableTimeList' description: '' post: operationId: available_times_create description: ViewSet for managing available times with recurring support. tags: - available-times requestBody: content: application/json: schema: $ref: '#/components/schemas/AvailableTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/AvailableTime' multipart/form-data: schema: $ref: '#/components/schemas/AvailableTime' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/AvailableTime' description: '' /available-times{format}: get: operationId: available_times_formatted_list description: ViewSet for managing available times with recurring support. parameters: - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - in: path name: format schema: type: string enum: - .json required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) tags: - available-times security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedAvailableTimeList' description: '' post: operationId: available_times_formatted_create description: ViewSet for managing available times with recurring support. parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - available-times requestBody: content: application/json: schema: $ref: '#/components/schemas/AvailableTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/AvailableTime' multipart/form-data: schema: $ref: '#/components/schemas/AvailableTime' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/AvailableTime' description: '' /available-times/{id}/: get: operationId: available_times_retrieve description: ViewSet for managing available times with recurring support. parameters: - in: path name: id schema: type: string required: true tags: - available-times security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/AvailableTime' description: '' put: operationId: available_times_update description: ViewSet for managing available times with recurring support. parameters: - in: path name: id schema: type: string required: true tags: - available-times requestBody: content: application/json: schema: $ref: '#/components/schemas/AvailableTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/AvailableTime' multipart/form-data: schema: $ref: '#/components/schemas/AvailableTime' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/AvailableTime' description: '' patch: operationId: available_times_partial_update description: ViewSet for managing available times with recurring support. parameters: - in: path name: id schema: type: string required: true tags: - available-times requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedAvailableTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedAvailableTime' multipart/form-data: schema: $ref: '#/components/schemas/PatchedAvailableTime' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/AvailableTime' description: '' delete: operationId: available_times_destroy description: ViewSet for managing available times with recurring support. parameters: - in: path name: id schema: type: string required: true tags: - available-times security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /available-times/{id}{format}: get: operationId: available_times_formatted_retrieve description: ViewSet for managing available times with recurring support. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - available-times security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/AvailableTime' description: '' put: operationId: available_times_formatted_update description: ViewSet for managing available times with recurring support. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - available-times requestBody: content: application/json: schema: $ref: '#/components/schemas/AvailableTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/AvailableTime' multipart/form-data: schema: $ref: '#/components/schemas/AvailableTime' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/AvailableTime' description: '' patch: operationId: available_times_formatted_partial_update description: ViewSet for managing available times with recurring support. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - available-times requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedAvailableTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedAvailableTime' multipart/form-data: schema: $ref: '#/components/schemas/PatchedAvailableTime' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/AvailableTime' description: '' delete: operationId: available_times_formatted_destroy description: ViewSet for managing available times with recurring support. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - available-times security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /available-times/{id}/bulk-modify/: post: operationId: available_times_bulk_modify_create description: ViewSet for managing available times with recurring support. summary: Bulk modify or cancel recurring available time from a date parameters: - in: path name: id schema: type: string required: true tags: - available-times requestBody: content: application/json: schema: $ref: '#/components/schemas/AvailableTimeBulkModification' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/AvailableTimeBulkModification' multipart/form-data: schema: $ref: '#/components/schemas/AvailableTimeBulkModification' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/AvailableTime' description: '' '204': description: No response body /available-times/{id}/bulk-modify{format}: post: operationId: available_times_bulk_modify_formatted_create description: ViewSet for managing available times with recurring support. summary: Bulk modify or cancel recurring available time from a date parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - available-times requestBody: content: application/json: schema: $ref: '#/components/schemas/AvailableTimeBulkModification' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/AvailableTimeBulkModification' multipart/form-data: schema: $ref: '#/components/schemas/AvailableTimeBulkModification' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/AvailableTime' description: '' '204': description: No response body /available-times/{id}/create-exception/: post: operationId: available_times_create_exception_create description: Create an exception for a recurring available time (either cancelled or modified). summary: Create recurring available time exception parameters: - in: path name: id schema: type: string required: true tags: - available-times requestBody: content: application/json: schema: $ref: '#/components/schemas/AvailableTimeRecurringException' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/AvailableTimeRecurringException' multipart/form-data: schema: $ref: '#/components/schemas/AvailableTimeRecurringException' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/AvailableTime' description: '' '204': description: No response body /available-times/{id}/create-exception{format}: post: operationId: available_times_create_exception_formatted_create description: Create an exception for a recurring available time (either cancelled or modified). summary: Create recurring available time exception parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - available-times requestBody: content: application/json: schema: $ref: '#/components/schemas/AvailableTimeRecurringException' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/AvailableTimeRecurringException' multipart/form-data: schema: $ref: '#/components/schemas/AvailableTimeRecurringException' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/AvailableTime' description: '' '204': description: No response body /available-times/bulk-create/: post: operationId: available_times_bulk_create_create description: Create multiple available times. summary: Create bulk available times parameters: - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) tags: - available-times requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkAvailableTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BulkAvailableTime' multipart/form-data: schema: $ref: '#/components/schemas/BulkAvailableTime' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/PaginatedAvailableTimeList' description: '' /available-times/bulk-create{format}: post: operationId: available_times_bulk_create_formatted_create description: Create multiple available times. summary: Create bulk available times parameters: - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - in: path name: format schema: type: string enum: - .json required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) tags: - available-times requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkAvailableTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BulkAvailableTime' multipart/form-data: schema: $ref: '#/components/schemas/BulkAvailableTime' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/PaginatedAvailableTimeList' description: '' /available-times/expanded/: get: operationId: available_times_expanded_list description: Get expanded available times including recurring instances. summary: Get expanded available times parameters: - in: query name: calendar_id schema: type: integer description: Calendar ID to get available times for required: true - in: query name: end_datetime schema: type: string description: End datetime for the range (ISO format) required: true - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_datetime schema: type: string description: Start datetime for the range (ISO format) required: true - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) tags: - available-times security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedAvailableTimeList' description: '' /available-times/expanded{format}: get: operationId: available_times_expanded_formatted_list description: Get expanded available times including recurring instances. summary: Get expanded available times parameters: - in: query name: calendar_id schema: type: integer description: Calendar ID to get available times for required: true - in: query name: end_datetime schema: type: string description: End datetime for the range (ISO format) required: true - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - in: path name: format schema: type: string enum: - .json required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_datetime schema: type: string description: Start datetime for the range (ISO format) required: true - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) tags: - available-times security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedAvailableTimeList' description: '' /billing-profile/create_billing_profile/: post: operationId: billing_profile_create_billing_profile_create description: Create a new billing profile for the authenticated user. summary: Create billing profile tags: - billing-profile requestBody: content: application/json: schema: $ref: '#/components/schemas/BillingProfile' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BillingProfile' multipart/form-data: schema: $ref: '#/components/schemas/BillingProfile' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/BillingProfile' description: '' /billing-profile/create_billing_profile{format}: post: operationId: billing_profile_create_billing_profile_formatted_create description: Create a new billing profile for the authenticated user. summary: Create billing profile parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - billing-profile requestBody: content: application/json: schema: $ref: '#/components/schemas/BillingProfile' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BillingProfile' multipart/form-data: schema: $ref: '#/components/schemas/BillingProfile' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/BillingProfile' description: '' /billing-profile/partial_update_billing_profile/: patch: operationId: billing_profile_partial_update_billing_profile_partial_update description: Partially update the billing profile of the authenticated user. summary: Partially update billing profile tags: - billing-profile requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBillingProfile' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBillingProfile' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBillingProfile' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BillingProfile' description: '' /billing-profile/partial_update_billing_profile{format}: patch: operationId: billing_profile_partial_update_billing_profile_formatted_partial_update description: Partially update the billing profile of the authenticated user. summary: Partially update billing profile parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - billing-profile requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBillingProfile' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBillingProfile' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBillingProfile' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BillingProfile' description: '' /billing-profile/retrieve_billing_profile/: get: operationId: billing_profile_retrieve_billing_profile_retrieve description: Retrieve the billing profile of the authenticated user. summary: Retrieve billing profile tags: - billing-profile security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BillingProfile' description: '' /billing-profile/retrieve_billing_profile{format}: get: operationId: billing_profile_retrieve_billing_profile_formatted_retrieve description: Retrieve the billing profile of the authenticated user. summary: Retrieve billing profile parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - billing-profile security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BillingProfile' description: '' /billing-profile/update_billing_profile/: put: operationId: billing_profile_update_billing_profile_update description: Update the billing profile of the authenticated user. summary: Update billing profile tags: - billing-profile requestBody: content: application/json: schema: $ref: '#/components/schemas/BillingProfile' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BillingProfile' multipart/form-data: schema: $ref: '#/components/schemas/BillingProfile' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BillingProfile' description: '' /billing-profile/update_billing_profile{format}: put: operationId: billing_profile_update_billing_profile_formatted_update description: Update the billing profile of the authenticated user. summary: Update billing profile parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - billing-profile requestBody: content: application/json: schema: $ref: '#/components/schemas/BillingProfile' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BillingProfile' multipart/form-data: schema: $ref: '#/components/schemas/BillingProfile' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BillingProfile' description: '' /blocked-times/: get: operationId: blocked_times_list description: ViewSet for managing blocked times with recurring support. parameters: - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: reason schema: type: string description: Filter by partial title match - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) tags: - blocked-times security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBlockedTimeList' description: '' post: operationId: blocked_times_create description: ViewSet for managing blocked times with recurring support. tags: - blocked-times requestBody: content: application/json: schema: $ref: '#/components/schemas/BlockedTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BlockedTime' multipart/form-data: schema: $ref: '#/components/schemas/BlockedTime' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/BlockedTime' description: '' /blocked-times{format}: get: operationId: blocked_times_formatted_list description: ViewSet for managing blocked times with recurring support. parameters: - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - in: path name: format schema: type: string enum: - .json required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: reason schema: type: string description: Filter by partial title match - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) tags: - blocked-times security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBlockedTimeList' description: '' post: operationId: blocked_times_formatted_create description: ViewSet for managing blocked times with recurring support. parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - blocked-times requestBody: content: application/json: schema: $ref: '#/components/schemas/BlockedTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BlockedTime' multipart/form-data: schema: $ref: '#/components/schemas/BlockedTime' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/BlockedTime' description: '' /blocked-times/{id}/: get: operationId: blocked_times_retrieve description: ViewSet for managing blocked times with recurring support. parameters: - in: path name: id schema: type: string required: true tags: - blocked-times security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BlockedTime' description: '' put: operationId: blocked_times_update description: ViewSet for managing blocked times with recurring support. parameters: - in: path name: id schema: type: string required: true tags: - blocked-times requestBody: content: application/json: schema: $ref: '#/components/schemas/BlockedTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BlockedTime' multipart/form-data: schema: $ref: '#/components/schemas/BlockedTime' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BlockedTime' description: '' patch: operationId: blocked_times_partial_update description: ViewSet for managing blocked times with recurring support. parameters: - in: path name: id schema: type: string required: true tags: - blocked-times requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBlockedTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBlockedTime' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBlockedTime' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BlockedTime' description: '' delete: operationId: blocked_times_destroy description: ViewSet for managing blocked times with recurring support. parameters: - in: path name: id schema: type: string required: true tags: - blocked-times security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /blocked-times/{id}{format}: get: operationId: blocked_times_formatted_retrieve description: ViewSet for managing blocked times with recurring support. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - blocked-times security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BlockedTime' description: '' put: operationId: blocked_times_formatted_update description: ViewSet for managing blocked times with recurring support. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - blocked-times requestBody: content: application/json: schema: $ref: '#/components/schemas/BlockedTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BlockedTime' multipart/form-data: schema: $ref: '#/components/schemas/BlockedTime' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BlockedTime' description: '' patch: operationId: blocked_times_formatted_partial_update description: ViewSet for managing blocked times with recurring support. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - blocked-times requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBlockedTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBlockedTime' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBlockedTime' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BlockedTime' description: '' delete: operationId: blocked_times_formatted_destroy description: ViewSet for managing blocked times with recurring support. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - blocked-times security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /blocked-times/{id}/bulk-modify/: post: operationId: blocked_times_bulk_modify_create description: ViewSet for managing blocked times with recurring support. summary: Bulk modify or cancel recurring blocked time from a date parameters: - in: path name: id schema: type: string required: true tags: - blocked-times requestBody: content: application/json: schema: $ref: '#/components/schemas/BlockedTimeBulkModification' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BlockedTimeBulkModification' multipart/form-data: schema: $ref: '#/components/schemas/BlockedTimeBulkModification' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BlockedTime' description: '' '204': description: No response body /blocked-times/{id}/bulk-modify{format}: post: operationId: blocked_times_bulk_modify_formatted_create description: ViewSet for managing blocked times with recurring support. summary: Bulk modify or cancel recurring blocked time from a date parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - blocked-times requestBody: content: application/json: schema: $ref: '#/components/schemas/BlockedTimeBulkModification' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BlockedTimeBulkModification' multipart/form-data: schema: $ref: '#/components/schemas/BlockedTimeBulkModification' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BlockedTime' description: '' '204': description: No response body /blocked-times/{id}/create-exception/: post: operationId: blocked_times_create_exception_create description: Create an exception for a recurring blocked time (either cancelled or modified). summary: Create recurring blocked time exception parameters: - in: path name: id schema: type: string required: true tags: - blocked-times requestBody: content: application/json: schema: $ref: '#/components/schemas/BlockedTimeRecurringException' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BlockedTimeRecurringException' multipart/form-data: schema: $ref: '#/components/schemas/BlockedTimeRecurringException' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/BlockedTime' description: '' '204': description: No response body /blocked-times/{id}/create-exception{format}: post: operationId: blocked_times_create_exception_formatted_create description: Create an exception for a recurring blocked time (either cancelled or modified). summary: Create recurring blocked time exception parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - blocked-times requestBody: content: application/json: schema: $ref: '#/components/schemas/BlockedTimeRecurringException' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BlockedTimeRecurringException' multipart/form-data: schema: $ref: '#/components/schemas/BlockedTimeRecurringException' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/BlockedTime' description: '' '204': description: No response body /blocked-times/bulk-create/: post: operationId: blocked_times_bulk_create_create description: Create multiple blocked times. summary: Create bulk blocked times parameters: - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: reason schema: type: string description: Filter by partial title match - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) tags: - blocked-times requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkBlockedTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BulkBlockedTime' multipart/form-data: schema: $ref: '#/components/schemas/BulkBlockedTime' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/PaginatedBlockedTimeList' description: '' /blocked-times/bulk-create{format}: post: operationId: blocked_times_bulk_create_formatted_create description: Create multiple blocked times. summary: Create bulk blocked times parameters: - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - in: path name: format schema: type: string enum: - .json required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: reason schema: type: string description: Filter by partial title match - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) tags: - blocked-times requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkBlockedTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BulkBlockedTime' multipart/form-data: schema: $ref: '#/components/schemas/BulkBlockedTime' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/PaginatedBlockedTimeList' description: '' /blocked-times/expanded/: get: operationId: blocked_times_expanded_list description: Get expanded blocked times including recurring instances. summary: Get expanded blocked times parameters: - in: query name: calendar_id schema: type: integer description: Calendar ID to get blocked times for required: true - in: query name: end_datetime schema: type: string description: End datetime for the range (ISO format) required: true - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: reason schema: type: string description: Filter by partial title match - in: query name: start_datetime schema: type: string description: Start datetime for the range (ISO format) required: true - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) tags: - blocked-times security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBlockedTimeList' description: '' /blocked-times/expanded{format}: get: operationId: blocked_times_expanded_formatted_list description: Get expanded blocked times including recurring instances. summary: Get expanded blocked times parameters: - in: query name: calendar_id schema: type: integer description: Calendar ID to get blocked times for required: true - in: query name: end_datetime schema: type: string description: End datetime for the range (ISO format) required: true - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - in: path name: format schema: type: string enum: - .json required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: reason schema: type: string description: Filter by partial title match - in: query name: start_datetime schema: type: string description: Start datetime for the range (ISO format) required: true - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) tags: - blocked-times security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBlockedTimeList' description: '' /calendar/: get: operationId: calendar_list description: ViewSet for managing calendars. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - calendar security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarList' description: '' post: operationId: calendar_create description: ViewSet for managing calendars. tags: - calendar requestBody: content: application/json: schema: $ref: '#/components/schemas/Calendar' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Calendar' multipart/form-data: schema: $ref: '#/components/schemas/Calendar' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/Calendar' description: '' /calendar{format}: get: operationId: calendar_formatted_list description: ViewSet for managing calendars. parameters: - in: path name: format schema: type: string enum: - .json required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - calendar security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarList' description: '' post: operationId: calendar_formatted_create description: ViewSet for managing calendars. parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - calendar requestBody: content: application/json: schema: $ref: '#/components/schemas/Calendar' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Calendar' multipart/form-data: schema: $ref: '#/components/schemas/Calendar' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/Calendar' description: '' /calendar-events/: get: operationId: calendar_events_list description: ViewSet for managing calendar events. parameters: - in: query name: calendar schema: type: number description: Filter by calendar ID - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - in: query name: end_time_range_after schema: type: string format: date-time description: End time range - in: query name: end_time_range_before schema: type: string format: date-time description: End time range - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) - in: query name: start_time_range_after schema: type: string format: date-time description: Start time range - in: query name: start_time_range_before schema: type: string format: date-time description: Start time range - in: query name: title schema: type: string description: Filter by partial title match tags: - calendar-events security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarEventList' description: '' post: operationId: calendar_events_create description: ViewSet for managing calendar events. tags: - calendar-events requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarEvent' multipart/form-data: schema: $ref: '#/components/schemas/CalendarEvent' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' /calendar-events{format}: get: operationId: calendar_events_formatted_list description: ViewSet for managing calendar events. parameters: - in: query name: calendar schema: type: number description: Filter by calendar ID - in: query name: end_time schema: type: string format: date-time description: End time (less than or equal to) - in: query name: end_time_range_after schema: type: string format: date-time description: End time range - in: query name: end_time_range_before schema: type: string format: date-time description: End time range - in: path name: format schema: type: string enum: - .json required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_time schema: type: string format: date-time description: Start time (greater than or equal to) - in: query name: start_time_range_after schema: type: string format: date-time description: Start time range - in: query name: start_time_range_before schema: type: string format: date-time description: Start time range - in: query name: title schema: type: string description: Filter by partial title match tags: - calendar-events security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarEventList' description: '' post: operationId: calendar_events_formatted_create description: ViewSet for managing calendar events. parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - calendar-events requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarEvent' multipart/form-data: schema: $ref: '#/components/schemas/CalendarEvent' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' /calendar-events/{id}/: get: operationId: calendar_events_retrieve description: ViewSet for managing calendar events. parameters: - in: path name: id schema: type: string required: true tags: - calendar-events security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' put: operationId: calendar_events_update description: ViewSet for managing calendar events. parameters: - in: path name: id schema: type: string required: true tags: - calendar-events requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarEvent' multipart/form-data: schema: $ref: '#/components/schemas/CalendarEvent' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' patch: operationId: calendar_events_partial_update description: ViewSet for managing calendar events. parameters: - in: path name: id schema: type: string required: true tags: - calendar-events requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCalendarEvent' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCalendarEvent' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCalendarEvent' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' delete: operationId: calendar_events_destroy description: Delete a calendar event. summary: Delete calendar event parameters: - in: path name: id schema: type: string required: true tags: - calendar-events security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /calendar-events/{id}{format}: get: operationId: calendar_events_formatted_retrieve description: ViewSet for managing calendar events. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar-events security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' put: operationId: calendar_events_formatted_update description: ViewSet for managing calendar events. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar-events requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarEvent' multipart/form-data: schema: $ref: '#/components/schemas/CalendarEvent' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' patch: operationId: calendar_events_formatted_partial_update description: ViewSet for managing calendar events. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar-events requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCalendarEvent' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCalendarEvent' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCalendarEvent' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' delete: operationId: calendar_events_formatted_destroy description: Delete a calendar event. summary: Delete calendar event parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar-events security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /calendar-events/{id}/bulk-modify/: post: operationId: calendar_events_bulk_modify_create description: ViewSet for managing calendar events. summary: Bulk modify or cancel recurring event from a date parameters: - in: path name: id schema: type: string required: true tags: - calendar-events requestBody: content: application/json: schema: $ref: '#/components/schemas/EventBulkModification' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/EventBulkModification' multipart/form-data: schema: $ref: '#/components/schemas/EventBulkModification' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' '204': description: No response body /calendar-events/{id}/bulk-modify{format}: post: operationId: calendar_events_bulk_modify_formatted_create description: ViewSet for managing calendar events. summary: Bulk modify or cancel recurring event from a date parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar-events requestBody: content: application/json: schema: $ref: '#/components/schemas/EventBulkModification' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/EventBulkModification' multipart/form-data: schema: $ref: '#/components/schemas/EventBulkModification' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' '204': description: No response body /calendar-events/{id}/create-exception/: post: operationId: calendar_events_create_exception_create description: Create an exception for a recurring event (either cancelled or modified). summary: Create recurring event exception parameters: - in: path name: id schema: type: string required: true tags: - calendar-events requestBody: content: application/json: schema: $ref: '#/components/schemas/EventRecurringException' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/EventRecurringException' multipart/form-data: schema: $ref: '#/components/schemas/EventRecurringException' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' '204': description: No response body /calendar-events/{id}/create-exception{format}: post: operationId: calendar_events_create_exception_formatted_create description: Create an exception for a recurring event (either cancelled or modified). summary: Create recurring event exception parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar-events requestBody: content: application/json: schema: $ref: '#/components/schemas/EventRecurringException' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/EventRecurringException' multipart/form-data: schema: $ref: '#/components/schemas/EventRecurringException' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' '204': description: No response body /calendar-groups/: get: operationId: calendar_groups_list description: ViewSet for CalendarGroup CRUD and grouped event actions. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: name schema: type: string description: Filter by partial name match - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - calendar-groups security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarGroupList' description: '' post: operationId: calendar_groups_create description: ViewSet for CalendarGroup CRUD and grouped event actions. tags: - calendar-groups requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarGroup' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarGroup' multipart/form-data: schema: $ref: '#/components/schemas/CalendarGroup' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CalendarGroup' description: '' /calendar-groups{format}: get: operationId: calendar_groups_formatted_list description: ViewSet for CalendarGroup CRUD and grouped event actions. parameters: - in: path name: format schema: type: string enum: - .json required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: name schema: type: string description: Filter by partial name match - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - calendar-groups security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarGroupList' description: '' post: operationId: calendar_groups_formatted_create description: ViewSet for CalendarGroup CRUD and grouped event actions. parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - calendar-groups requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarGroup' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarGroup' multipart/form-data: schema: $ref: '#/components/schemas/CalendarGroup' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CalendarGroup' description: '' /calendar-groups/{id}/: get: operationId: calendar_groups_retrieve description: ViewSet for CalendarGroup CRUD and grouped event actions. parameters: - in: path name: id schema: type: string required: true tags: - calendar-groups security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarGroup' description: '' put: operationId: calendar_groups_update description: ViewSet for CalendarGroup CRUD and grouped event actions. parameters: - in: path name: id schema: type: string required: true tags: - calendar-groups requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarGroup' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarGroup' multipart/form-data: schema: $ref: '#/components/schemas/CalendarGroup' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarGroup' description: '' patch: operationId: calendar_groups_partial_update description: ViewSet for CalendarGroup CRUD and grouped event actions. parameters: - in: path name: id schema: type: string required: true tags: - calendar-groups requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCalendarGroup' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCalendarGroup' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCalendarGroup' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarGroup' description: '' delete: operationId: calendar_groups_destroy description: Delete a CalendarGroup. Fails with 400 if the group has any bookings. summary: Delete calendar group parameters: - in: path name: id schema: type: string required: true tags: - calendar-groups security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /calendar-groups/{id}{format}: get: operationId: calendar_groups_formatted_retrieve description: ViewSet for CalendarGroup CRUD and grouped event actions. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar-groups security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarGroup' description: '' put: operationId: calendar_groups_formatted_update description: ViewSet for CalendarGroup CRUD and grouped event actions. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar-groups requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarGroup' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarGroup' multipart/form-data: schema: $ref: '#/components/schemas/CalendarGroup' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarGroup' description: '' patch: operationId: calendar_groups_formatted_partial_update description: ViewSet for CalendarGroup CRUD and grouped event actions. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar-groups requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCalendarGroup' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCalendarGroup' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCalendarGroup' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarGroup' description: '' delete: operationId: calendar_groups_formatted_destroy description: Delete a CalendarGroup. Fails with 400 if the group has any bookings. summary: Delete calendar group parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar-groups security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /calendar-groups/{id}/availability/: post: operationId: calendar_groups_availability_create description: ViewSet for CalendarGroup CRUD and grouped event actions. summary: Per-slot availability for requested ranges parameters: - in: path name: id schema: type: string required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: name schema: type: string description: Filter by partial name match - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - calendar-groups requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarGroupAvailabilityQuery' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarGroupAvailabilityQuery' multipart/form-data: schema: $ref: '#/components/schemas/CalendarGroupAvailabilityQuery' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarGroupRangeAvailabilityList' description: '' /calendar-groups/{id}/availability{format}: post: operationId: calendar_groups_availability_formatted_create description: ViewSet for CalendarGroup CRUD and grouped event actions. summary: Per-slot availability for requested ranges parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: name schema: type: string description: Filter by partial name match - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - calendar-groups requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarGroupAvailabilityQuery' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarGroupAvailabilityQuery' multipart/form-data: schema: $ref: '#/components/schemas/CalendarGroupAvailabilityQuery' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarGroupRangeAvailabilityList' description: '' /calendar-groups/{id}/bookable-slots/: get: operationId: calendar_groups_bookable_slots_list description: ViewSet for CalendarGroup CRUD and grouped event actions. summary: Bookable slot proposals for the group within a search window parameters: - in: query name: duration_seconds schema: type: integer description: Desired event duration, in seconds required: true - in: path name: id schema: type: string required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: name schema: type: string description: Filter by partial name match - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: search_window_end schema: type: string description: End of the search window (ISO 8601) required: true - in: query name: search_window_start schema: type: string description: Start of the search window (ISO 8601) required: true - in: query name: slot_step_seconds schema: type: integer description: Search step, in seconds (default 900 = 15min) tags: - calendar-groups security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBookableSlotProposalList' description: '' /calendar-groups/{id}/bookable-slots{format}: get: operationId: calendar_groups_bookable_slots_formatted_list description: ViewSet for CalendarGroup CRUD and grouped event actions. summary: Bookable slot proposals for the group within a search window parameters: - in: query name: duration_seconds schema: type: integer description: Desired event duration, in seconds required: true - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: name schema: type: string description: Filter by partial name match - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: search_window_end schema: type: string description: End of the search window (ISO 8601) required: true - in: query name: search_window_start schema: type: string description: Start of the search window (ISO 8601) required: true - in: query name: slot_step_seconds schema: type: integer description: Search step, in seconds (default 900 = 15min) tags: - calendar-groups security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBookableSlotProposalList' description: '' /calendar-groups/{id}/booked-events/: get: operationId: calendar_groups_booked_events_list description: ViewSet for CalendarGroup CRUD and grouped event actions. summary: List events booked under this group parameters: - in: query name: end_datetime schema: type: string description: End datetime in ISO format required: true - in: path name: id schema: type: string required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: name schema: type: string description: Filter by partial name match - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_datetime schema: type: string description: Start datetime in ISO format required: true tags: - calendar-groups security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarEventList' description: '' /calendar-groups/{id}/booked-events{format}: get: operationId: calendar_groups_booked_events_formatted_list description: ViewSet for CalendarGroup CRUD and grouped event actions. summary: List events booked under this group parameters: - in: query name: end_datetime schema: type: string description: End datetime in ISO format required: true - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: name schema: type: string description: Filter by partial name match - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_datetime schema: type: string description: Start datetime in ISO format required: true tags: - calendar-groups security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarEventList' description: '' /calendar-groups/{id}/events/: post: operationId: calendar_groups_events_create description: ViewSet for CalendarGroup CRUD and grouped event actions. summary: Create grouped event parameters: - in: path name: id schema: type: string required: true tags: - calendar-groups requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarGroupEventCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarGroupEventCreate' multipart/form-data: schema: $ref: '#/components/schemas/CalendarGroupEventCreate' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' /calendar-groups/{id}/events{format}: post: operationId: calendar_groups_events_formatted_create description: ViewSet for CalendarGroup CRUD and grouped event actions. summary: Create grouped event parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar-groups requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarGroupEventCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarGroupEventCreate' multipart/form-data: schema: $ref: '#/components/schemas/CalendarGroupEventCreate' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' /calendar/{id}/: get: operationId: calendar_retrieve description: ViewSet for managing calendars. parameters: - in: path name: id schema: type: string required: true tags: - calendar security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Calendar' description: '' put: operationId: calendar_update description: ViewSet for managing calendars. parameters: - in: path name: id schema: type: string required: true tags: - calendar requestBody: content: application/json: schema: $ref: '#/components/schemas/Calendar' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Calendar' multipart/form-data: schema: $ref: '#/components/schemas/Calendar' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Calendar' description: '' patch: operationId: calendar_partial_update description: ViewSet for managing calendars. parameters: - in: path name: id schema: type: string required: true tags: - calendar requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCalendar' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCalendar' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCalendar' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Calendar' description: '' delete: operationId: calendar_destroy description: ViewSet for managing calendars. parameters: - in: path name: id schema: type: string required: true tags: - calendar security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /calendar/{id}{format}: get: operationId: calendar_formatted_retrieve description: ViewSet for managing calendars. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Calendar' description: '' put: operationId: calendar_formatted_update description: ViewSet for managing calendars. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar requestBody: content: application/json: schema: $ref: '#/components/schemas/Calendar' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Calendar' multipart/form-data: schema: $ref: '#/components/schemas/Calendar' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Calendar' description: '' patch: operationId: calendar_formatted_partial_update description: ViewSet for managing calendars. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCalendar' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCalendar' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCalendar' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Calendar' description: '' delete: operationId: calendar_formatted_destroy description: ViewSet for managing calendars. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - calendar security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /calendar/{id}/available-windows/: get: operationId: calendar_available_windows_list description: Get available time windows for a calendar within a specified date range. summary: Get available time windows parameters: - in: query name: end_datetime schema: type: string description: End datetime in ISO format (YYYY-MM-DDTHH:MM:SS) required: true - in: path name: id schema: type: string required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_datetime schema: type: string description: Start datetime in ISO format (YYYY-MM-DDTHH:MM:SS) required: true tags: - calendar security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedAvailableTimeWindowList' description: '' /calendar/{id}/available-windows{format}: get: operationId: calendar_available_windows_formatted_list description: Get available time windows for a calendar within a specified date range. summary: Get available time windows parameters: - in: query name: end_datetime schema: type: string description: End datetime in ISO format (YYYY-MM-DDTHH:MM:SS) required: true - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_datetime schema: type: string description: Start datetime in ISO format (YYYY-MM-DDTHH:MM:SS) required: true tags: - calendar security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedAvailableTimeWindowList' description: '' /calendar/{id}/unavailable-windows/: get: operationId: calendar_unavailable_windows_list description: Get unavailable time windows for a calendar within a specified date range. summary: Get unavailable time windows parameters: - in: query name: end_datetime schema: type: string description: End datetime in ISO format (YYYY-MM-DDTHH:MM:SS) required: true - in: path name: id schema: type: string required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_datetime schema: type: string description: Start datetime in ISO format (YYYY-MM-DDTHH:MM:SS) required: true tags: - calendar security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedUnavailableTimeWindowList' description: '' /calendar/{id}/unavailable-windows{format}: get: operationId: calendar_unavailable_windows_formatted_list description: Get unavailable time windows for a calendar within a specified date range. summary: Get unavailable time windows parameters: - in: query name: end_datetime schema: type: string description: End datetime in ISO format (YYYY-MM-DDTHH:MM:SS) required: true - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_datetime schema: type: string description: Start datetime in ISO format (YYYY-MM-DDTHH:MM:SS) required: true tags: - calendar security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedUnavailableTimeWindowList' description: '' /calendar/bundle/: post: operationId: calendar_bundle_create description: ViewSet for managing calendars. tags: - calendar requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarBundleCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarBundleCreate' multipart/form-data: schema: $ref: '#/components/schemas/CalendarBundleCreate' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Calendar' description: '' /calendar/bundle{format}: post: operationId: calendar_bundle_formatted_create description: ViewSet for managing calendars. parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - calendar requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarBundleCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarBundleCreate' multipart/form-data: schema: $ref: '#/components/schemas/CalendarBundleCreate' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Calendar' description: '' /invitations/: get: operationId: invitations_list description: A viewset for managing organization invitations. parameters: - in: query name: email schema: type: string description: Filter by partial email match - in: query name: invited_by schema: type: number description: Filter by inviter user ID - in: query name: is_accepted schema: type: boolean description: Filter by acceptance status - in: query name: is_expired schema: type: boolean description: Filter by expiration status - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - invitations security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOrganizationInvitationList' description: '' post: operationId: invitations_create description: A viewset for managing organization invitations. tags: - invitations requestBody: content: application/json: schema: $ref: '#/components/schemas/OrganizationInvitation' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OrganizationInvitation' multipart/form-data: schema: $ref: '#/components/schemas/OrganizationInvitation' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/OrganizationInvitation' description: '' /invitations{format}: get: operationId: invitations_formatted_list description: A viewset for managing organization invitations. parameters: - in: query name: email schema: type: string description: Filter by partial email match - in: path name: format schema: type: string enum: - .json required: true - in: query name: invited_by schema: type: number description: Filter by inviter user ID - in: query name: is_accepted schema: type: boolean description: Filter by acceptance status - in: query name: is_expired schema: type: boolean description: Filter by expiration status - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - invitations security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOrganizationInvitationList' description: '' post: operationId: invitations_formatted_create description: A viewset for managing organization invitations. parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - invitations requestBody: content: application/json: schema: $ref: '#/components/schemas/OrganizationInvitation' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OrganizationInvitation' multipart/form-data: schema: $ref: '#/components/schemas/OrganizationInvitation' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/OrganizationInvitation' description: '' /invitations/{id}/: get: operationId: invitations_retrieve description: A viewset for managing organization invitations. parameters: - in: path name: id schema: type: string required: true tags: - invitations security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrganizationInvitation' description: '' delete: operationId: invitations_destroy description: A viewset for managing organization invitations. parameters: - in: path name: id schema: type: string required: true tags: - invitations security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /invitations/{id}{format}: get: operationId: invitations_formatted_retrieve description: A viewset for managing organization invitations. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - invitations security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrganizationInvitation' description: '' delete: operationId: invitations_formatted_destroy description: A viewset for managing organization invitations. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - invitations security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /invitations/accept: post: operationId: invitations_accept_create description: Public endpoint for accepting organization invitations. tags: - invitations requestBody: content: application/json: schema: $ref: '#/components/schemas/AcceptInvitation' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/AcceptInvitation' multipart/form-data: schema: $ref: '#/components/schemas/AcceptInvitation' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/AcceptInvitation' description: '' /organizations/: post: operationId: organizations_create description: A viewset for managing organizations. tags: - organizations requestBody: content: application/json: schema: $ref: '#/components/schemas/Organization' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Organization' multipart/form-data: schema: $ref: '#/components/schemas/Organization' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/Organization' description: '' /organizations{format}: post: operationId: organizations_formatted_create description: A viewset for managing organizations. parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - organizations requestBody: content: application/json: schema: $ref: '#/components/schemas/Organization' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Organization' multipart/form-data: schema: $ref: '#/components/schemas/Organization' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/Organization' description: '' /organizations/{id}/: get: operationId: organizations_retrieve description: A viewset for managing organizations. parameters: - in: path name: id schema: type: string required: true tags: - organizations security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Organization' description: '' put: operationId: organizations_update description: A viewset for managing organizations. parameters: - in: path name: id schema: type: string required: true tags: - organizations requestBody: content: application/json: schema: $ref: '#/components/schemas/Organization' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Organization' multipart/form-data: schema: $ref: '#/components/schemas/Organization' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Organization' description: '' patch: operationId: organizations_partial_update description: A viewset for managing organizations. parameters: - in: path name: id schema: type: string required: true tags: - organizations requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedOrganization' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedOrganization' multipart/form-data: schema: $ref: '#/components/schemas/PatchedOrganization' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Organization' description: '' delete: operationId: organizations_destroy description: A viewset for managing organizations. parameters: - in: path name: id schema: type: string required: true tags: - organizations security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /organizations/{id}{format}: get: operationId: organizations_formatted_retrieve description: A viewset for managing organizations. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - organizations security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Organization' description: '' put: operationId: organizations_formatted_update description: A viewset for managing organizations. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - organizations requestBody: content: application/json: schema: $ref: '#/components/schemas/Organization' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Organization' multipart/form-data: schema: $ref: '#/components/schemas/Organization' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Organization' description: '' patch: operationId: organizations_formatted_partial_update description: A viewset for managing organizations. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - organizations requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedOrganization' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedOrganization' multipart/form-data: schema: $ref: '#/components/schemas/PatchedOrganization' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Organization' description: '' delete: operationId: organizations_formatted_destroy description: A viewset for managing organizations. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - organizations security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /organizations/current/: get: operationId: organizations_current_retrieve description: |- Return the caller's organization and role. HTTP 200 — the user is onboarded (has a membership). HTTP 404 — the user is gated (no membership yet). summary: Current organization + role for the authenticated user tags: - organizations security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CurrentMembership' description: '' '404': description: No organization membership (gated user) /organizations/current{format}: get: operationId: organizations_current_formatted_retrieve description: |- Return the caller's organization and role. HTTP 200 — the user is onboarded (has a membership). HTTP 404 — the user is gated (no membership yet). summary: Current organization + role for the authenticated user parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - organizations security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CurrentMembership' description: '' '404': description: No organization membership (gated user) /payments/{id}/payment-update/{provider}/: post: operationId: payments_payment_update_create description: This endpoint is used to receive payment updates from MercadoPago. summary: Receive payment updates parameters: - in: path name: id schema: type: string required: true - in: path name: provider schema: type: string required: true tags: - payments security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: description: Payment update received. description: '' /payments/{id}/payment-update/{provider}{format}: post: operationId: payments_payment_update_formatted_create description: This endpoint is used to receive payment updates from MercadoPago. summary: Receive payment updates parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true - in: path name: provider schema: type: string required: true tags: - payments security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: description: Payment update received. description: '' /payments/{id}/subscription-payment-update/{provider}/: post: operationId: payments_subscription_payment_update_create description: This endpoint is used to receive subscription payment updates from MercadoPago. summary: Receive subscription payment updates parameters: - in: path name: id schema: type: string required: true - in: path name: provider schema: type: string required: true tags: - payments security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: description: Subscription payment update received. description: '' /payments/{id}/subscription-payment-update/{provider}{format}: post: operationId: payments_subscription_payment_update_formatted_create description: This endpoint is used to receive subscription payment updates from MercadoPago. summary: Receive subscription payment updates parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true - in: path name: provider schema: type: string required: true tags: - payments security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: description: Subscription payment update received. description: '' /profile/{user}/: get: operationId: profile_retrieve description: Retrieve the profile of the currently authenticated user or a specific user. parameters: - in: path name: user schema: type: string description: User ID to retrieve or update the profile. Use 'me' to refer to the currently authenticated user. required: true tags: - profile security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Profile' description: '' put: operationId: profile_update parameters: - in: path name: user schema: type: string description: User ID to update the profile. Use 'me' to refer to the currently authenticated user. required: true tags: - profile requestBody: content: application/json: schema: $ref: '#/components/schemas/Profile' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Profile' multipart/form-data: schema: $ref: '#/components/schemas/Profile' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Profile' description: '' patch: operationId: profile_partial_update parameters: - in: path name: user schema: type: string description: User ID to update the profile. Use 'me' to refer to the currently authenticated user. required: true tags: - profile requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedProfile' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedProfile' multipart/form-data: schema: $ref: '#/components/schemas/PatchedProfile' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Profile' description: '' /profile/{user}{format}: get: operationId: profile_formatted_retrieve description: Retrieve the profile of the currently authenticated user or a specific user. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: user schema: type: string description: User ID to retrieve or update the profile. Use 'me' to refer to the currently authenticated user. required: true tags: - profile security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Profile' description: '' put: operationId: profile_formatted_update parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: user schema: type: string description: User ID to update the profile. Use 'me' to refer to the currently authenticated user. required: true tags: - profile requestBody: content: application/json: schema: $ref: '#/components/schemas/Profile' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Profile' multipart/form-data: schema: $ref: '#/components/schemas/Profile' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Profile' description: '' patch: operationId: profile_formatted_partial_update parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: user schema: type: string description: User ID to update the profile. Use 'me' to refer to the currently authenticated user. required: true tags: - profile requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedProfile' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedProfile' multipart/form-data: schema: $ref: '#/components/schemas/PatchedProfile' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Profile' description: '' /public/organizations/{organization_id}/events/: get: operationId: public_organizations_events_list description: List events with token-based authentication. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: path name: organization_id schema: type: string pattern: ^\d+$ required: true tags: - public responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCalendarEventList' description: '' post: operationId: public_organizations_events_create description: Create an event with token-based authentication checked first. parameters: - in: path name: organization_id schema: type: string pattern: ^\d+$ required: true tags: - public requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarEvent' multipart/form-data: schema: $ref: '#/components/schemas/CalendarEvent' required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' /public/organizations/{organization_id}/events/{id}/: get: operationId: public_organizations_events_retrieve description: Retrieve a single event with token-based authentication. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this calendar event. required: true - in: path name: organization_id schema: type: string pattern: ^\d+$ required: true tags: - public responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' put: operationId: public_organizations_events_update description: Update an event with token-based authentication checked first. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this calendar event. required: true - in: path name: organization_id schema: type: string pattern: ^\d+$ required: true tags: - public requestBody: content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CalendarEvent' multipart/form-data: schema: $ref: '#/components/schemas/CalendarEvent' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' patch: operationId: public_organizations_events_partial_update description: Partial update an event with token-based authentication checked first. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this calendar event. required: true - in: path name: organization_id schema: type: string pattern: ^\d+$ required: true tags: - public requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCalendarEvent' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCalendarEvent' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCalendarEvent' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CalendarEvent' description: '' delete: operationId: public_organizations_events_destroy description: Delete an event with token-based authentication checked first. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this calendar event. required: true - in: path name: organization_id schema: type: string pattern: ^\d+$ required: true tags: - public responses: '204': description: No response body /webhook-configurations/: get: operationId: webhook_configurations_list description: |- ViewSet for managing webhook configurations. Provides full CRUD operations: create, retrieve, update, partial_update, destroy, and list. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - webhook-configurations security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedWebhookConfigurationList' description: '' post: operationId: webhook_configurations_create description: |- ViewSet for managing webhook configurations. Provides full CRUD operations: create, retrieve, update, partial_update, destroy, and list. tags: - webhook-configurations requestBody: content: application/json: schema: $ref: '#/components/schemas/WebhookConfiguration' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/WebhookConfiguration' multipart/form-data: schema: $ref: '#/components/schemas/WebhookConfiguration' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/WebhookConfiguration' description: '' /webhook-configurations{format}: get: operationId: webhook_configurations_formatted_list description: |- ViewSet for managing webhook configurations. Provides full CRUD operations: create, retrieve, update, partial_update, destroy, and list. parameters: - in: path name: format schema: type: string enum: - .json required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - webhook-configurations security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedWebhookConfigurationList' description: '' post: operationId: webhook_configurations_formatted_create description: |- ViewSet for managing webhook configurations. Provides full CRUD operations: create, retrieve, update, partial_update, destroy, and list. parameters: - in: path name: format schema: type: string enum: - .json required: true tags: - webhook-configurations requestBody: content: application/json: schema: $ref: '#/components/schemas/WebhookConfiguration' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/WebhookConfiguration' multipart/form-data: schema: $ref: '#/components/schemas/WebhookConfiguration' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/WebhookConfiguration' description: '' /webhook-configurations/{id}/: get: operationId: webhook_configurations_retrieve description: |- ViewSet for managing webhook configurations. Provides full CRUD operations: create, retrieve, update, partial_update, destroy, and list. parameters: - in: path name: id schema: type: string required: true tags: - webhook-configurations security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookConfiguration' description: '' put: operationId: webhook_configurations_update description: |- ViewSet for managing webhook configurations. Provides full CRUD operations: create, retrieve, update, partial_update, destroy, and list. parameters: - in: path name: id schema: type: string required: true tags: - webhook-configurations requestBody: content: application/json: schema: $ref: '#/components/schemas/WebhookConfiguration' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/WebhookConfiguration' multipart/form-data: schema: $ref: '#/components/schemas/WebhookConfiguration' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookConfiguration' description: '' patch: operationId: webhook_configurations_partial_update description: |- ViewSet for managing webhook configurations. Provides full CRUD operations: create, retrieve, update, partial_update, destroy, and list. parameters: - in: path name: id schema: type: string required: true tags: - webhook-configurations requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedWebhookConfiguration' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedWebhookConfiguration' multipart/form-data: schema: $ref: '#/components/schemas/PatchedWebhookConfiguration' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookConfiguration' description: '' delete: operationId: webhook_configurations_destroy description: |- ViewSet for managing webhook configurations. Provides full CRUD operations: create, retrieve, update, partial_update, destroy, and list. parameters: - in: path name: id schema: type: string required: true tags: - webhook-configurations security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /webhook-configurations/{id}{format}: get: operationId: webhook_configurations_formatted_retrieve description: |- ViewSet for managing webhook configurations. Provides full CRUD operations: create, retrieve, update, partial_update, destroy, and list. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - webhook-configurations security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookConfiguration' description: '' put: operationId: webhook_configurations_formatted_update description: |- ViewSet for managing webhook configurations. Provides full CRUD operations: create, retrieve, update, partial_update, destroy, and list. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - webhook-configurations requestBody: content: application/json: schema: $ref: '#/components/schemas/WebhookConfiguration' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/WebhookConfiguration' multipart/form-data: schema: $ref: '#/components/schemas/WebhookConfiguration' required: true security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookConfiguration' description: '' patch: operationId: webhook_configurations_formatted_partial_update description: |- ViewSet for managing webhook configurations. Provides full CRUD operations: create, retrieve, update, partial_update, destroy, and list. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - webhook-configurations requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedWebhookConfiguration' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedWebhookConfiguration' multipart/form-data: schema: $ref: '#/components/schemas/PatchedWebhookConfiguration' security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookConfiguration' description: '' delete: operationId: webhook_configurations_formatted_destroy description: |- ViewSet for managing webhook configurations. Provides full CRUD operations: create, retrieve, update, partial_update, destroy, and list. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - webhook-configurations security: - jwtAuth: [] - cookieAuth: [] responses: '204': description: No response body /webhook-events/: get: operationId: webhook_events_list description: |- ViewSet for webhook events. Provides read-only operations (list, retrieve) and a custom retry action. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - webhook-events security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedWebhookEventList' description: '' /webhook-events{format}: get: operationId: webhook_events_formatted_list description: |- ViewSet for webhook events. Provides read-only operations (list, retrieve) and a custom retry action. parameters: - in: path name: format schema: type: string enum: - .json required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - webhook-events security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedWebhookEventList' description: '' /webhook-events/{id}/: get: operationId: webhook_events_retrieve description: |- ViewSet for webhook events. Provides read-only operations (list, retrieve) and a custom retry action. parameters: - in: path name: id schema: type: string required: true tags: - webhook-events security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookEvent' description: '' /webhook-events/{id}{format}: get: operationId: webhook_events_formatted_retrieve description: |- ViewSet for webhook events. Provides read-only operations (list, retrieve) and a custom retry action. parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - webhook-events security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookEvent' description: '' /webhook-events/{id}/retry/: post: operationId: webhook_events_retry_create description: Retry a failed webhook event parameters: - in: path name: id schema: type: string required: true tags: - webhook-events security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookEvent' description: '' '400': content: application/json: schema: description: Bad request - event cannot be retried description: '' '404': content: application/json: schema: description: Event not found description: '' /webhook-events/{id}/retry{format}: post: operationId: webhook_events_retry_formatted_create description: Retry a failed webhook event parameters: - in: path name: format schema: type: string enum: - .json required: true - in: path name: id schema: type: string required: true tags: - webhook-events security: - jwtAuth: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookEvent' description: '' '400': content: application/json: schema: description: Bad request - event cannot be retried description: '' '404': content: application/json: schema: description: Event not found description: '' components: schemas: AcceptInvitation: type: object description: Serializer for accepting invitations via public endpoint. properties: token: type: string required: - token AvailableTime: type: object description: Serializer for AvailableTime model with recurring support. properties: id: type: integer readOnly: true start_time: type: string format: date-time end_time: type: string format: date-time timezone: type: string maxLength: 50 recurrence_rule: allOf: - $ref: '#/components/schemas/RecurrenceRule' description: Recurrence rule data for creating recurring available times rrule_string: type: string writeOnly: true description: RRULE string for creating recurring available times is_recurring_instance: type: boolean description: True if this is an instance of a recurring available time readOnly: true is_recurring: type: boolean description: True if this is a recurring available time readOnly: true parent_available_time: type: object properties: id: type: integer required: - id nullable: true description: Get parent available time for instances. readOnly: true recurrence_id: type: string format: date-time readOnly: true nullable: true description: For recurring instances, this identifies which occurrence this is created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true calendar: type: integer nullable: true required: - calendar - created - end_time - id - is_recurring - is_recurring_instance - modified - parent_available_time - recurrence_id - start_time - timezone AvailableTimeBulkModification: type: object properties: modification_start_date: type: string format: date recurrence_rule: allOf: - $ref: '#/components/schemas/RecurrenceRule' description: Recurrence rule data for the modification range rrule_string: type: string writeOnly: true nullable: true description: RRULE string for the modification range modified_start_time_offset: type: string nullable: true modified_end_time_offset: type: string nullable: true is_cancelled: type: boolean default: false required: - modification_start_date AvailableTimeRecurringException: type: object description: Serializer for creating recurring available time exceptions. properties: exception_date: type: string format: date description: The date of the occurrence to modify or cancel modified_start_time: type: string format: date-time nullable: true description: New start time for the modified occurrence (if not cancelled) modified_end_time: type: string format: date-time nullable: true description: New end time for the modified occurrence (if not cancelled) is_cancelled: type: boolean default: false description: True if cancelling the occurrence, False if modifying required: - exception_date AvailableTimeWindow: type: object properties: id: type: integer start_time: type: string format: date-time end_time: type: string format: date-time can_book_partially: type: boolean required: - can_book_partially - end_time - id - start_time BillingAddress: type: object description: Serializer for BillingAddress virtual model. properties: id: type: integer readOnly: true street_name: type: string street_number: type: string neighborhood: type: string address_line_2: type: string city: type: string maxLength: 255 state: type: string maxLength: 255 country: type: string maxLength: 255 zip_code: type: string maxLength: 10 required: - city - country - id - state - street_name - street_number - zip_code BillingProfile: type: object description: Serializer for BillingProfile virtual model. properties: id: type: integer readOnly: true document_type: type: string maxLength: 50 document_number: type: string maxLength: 50 billing_address: $ref: '#/components/schemas/BillingAddress' created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - billing_address - created - document_number - document_type - id - modified BlockedTime: type: object description: Serializer for BlockedTime model with recurring support. properties: id: type: integer readOnly: true start_time: type: string format: date-time end_time: type: string format: date-time timezone: type: string maxLength: 50 reason: type: string maxLength: 255 recurrence_rule: allOf: - $ref: '#/components/schemas/RecurrenceRule' description: Recurrence rule data for creating recurring blocked times rrule_string: type: string writeOnly: true description: RRULE string for creating recurring blocked times external_id: type: string readOnly: true is_recurring_instance: type: boolean description: True if this is an instance of a recurring blocked time readOnly: true is_recurring: type: boolean description: True if this is a recurring blocked time readOnly: true parent_blocked_time: type: object properties: id: type: integer reason: type: string nullable: true required: - id - reason nullable: true description: Get parent blocked time for instances. readOnly: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true calendar: type: integer nullable: true required: - calendar - created - end_time - external_id - id - is_recurring - is_recurring_instance - modified - parent_blocked_time - start_time - timezone BlockedTimeBulkModification: type: object properties: modification_start_date: type: string format: date modified_reason: type: string nullable: true recurrence_rule: allOf: - $ref: '#/components/schemas/RecurrenceRule' description: Recurrence rule data for the modification range rrule_string: type: string writeOnly: true nullable: true description: RRULE string for the modification range modified_start_time_offset: type: string nullable: true modified_end_time_offset: type: string nullable: true is_cancelled: type: boolean default: false required: - modification_start_date BlockedTimeRecurringException: type: object description: Serializer for creating recurring blocked time exceptions. properties: exception_date: type: string format: date description: The date of the occurrence to modify or cancel modified_reason: type: string nullable: true description: New reason for the modified occurrence (if not cancelled) maxLength: 255 modified_start_time: type: string format: date-time nullable: true description: New start time for the modified occurrence (if not cancelled) modified_end_time: type: string format: date-time nullable: true description: New end time for the modified occurrence (if not cancelled) is_cancelled: type: boolean default: false description: True if cancelling the occurrence, False if modifying required: - exception_date BookableSlotProposal: type: object properties: start_time: type: string format: date-time end_time: type: string format: date-time required: - end_time - start_time BulkAvailableTime: type: object description: Serializer for creating multiple available times. properties: available_times: type: array items: $ref: '#/components/schemas/AvailableTime' required: - available_times BulkBlockedTime: type: object description: Serializer for creating multiple blocked times. properties: blocked_times: type: array items: $ref: '#/components/schemas/BlockedTime' required: - blocked_times Calendar: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string email: type: string format: email readOnly: true external_id: type: string readOnly: true provider: allOf: - $ref: '#/components/schemas/ProviderEnum' readOnly: true calendar_type: allOf: - $ref: '#/components/schemas/CalendarTypeEnum' readOnly: true description: |- The type of calendar. Personal calendars are for individual use, resource calendars are for shared resources, and virtual calendars are for online meetings or events. * `personal` - Personal Calendar * `resource` - Resource Calendar * `virtual` - Virtual Calendar * `bundle` - Bundle Calendar capacity: type: integer readOnly: true nullable: true description: The maximum number of attendees that can be accommodated in this calendar's events. This is only applicable for resource calendars. manage_available_windows: type: boolean description: If true, this calendar can manage its own available time windows. If not, it will use the available time windows of the external calendar it's attached to. required: - calendar_type - capacity - email - external_id - id - name - provider CalendarBundleCreate: type: object properties: name: type: string maxLength: 255 bundle_calendars: type: array items: type: integer primary_calendar: type: integer nullable: true required: - bundle_calendars - name - primary_calendar CalendarEvent: type: object properties: id: type: integer readOnly: true provider: type: string writeOnly: true title: type: string maxLength: 255 description: type: string start_time: type: string format: date-time end_time: type: string format: date-time timezone: type: string maxLength: 50 created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true external_id: type: string readOnly: true external_attendances: type: array items: $ref: '#/components/schemas/EventExternalAttendance' attendances: type: array items: $ref: '#/components/schemas/EventAttendance' resource_allocations: type: array items: $ref: '#/components/schemas/ResourceAllocation' recurrence_rule: allOf: - $ref: '#/components/schemas/RecurrenceRule' description: Recurrence rule data for creating recurring events rrule_string: type: string writeOnly: true description: RRULE string for creating recurring events parent_recurring_object_id: type: integer writeOnly: true description: ID of parent event for recurring instances parent_recurring_object: allOf: - $ref: '#/components/schemas/ParentEvent' readOnly: true is_recurring_instance: type: boolean description: True if this is an instance of a recurring event readOnly: true is_recurring: type: boolean description: True if this is a recurring event readOnly: true is_recurring_exception: type: boolean description: True if this object is an exception to the recurrence rule (modified occurrence) recurrence_id: type: string format: date-time nullable: true description: For recurring instances, this identifies which occurrence this is google_calendar_service_account: type: integer writeOnly: true calendar: type: integer writeOnly: true required: - attendances - created - end_time - external_attendances - external_id - id - is_recurring - is_recurring_instance - modified - parent_recurring_object - resource_allocations - start_time - timezone - title CalendarGroup: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string slots: type: array items: $ref: '#/components/schemas/CalendarGroupSlot' created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - created - id - modified - name - slots CalendarGroupAvailabilityQuery: type: object description: 'Input for the availability action: list of [start, end] windows.' properties: ranges: type: array items: $ref: '#/components/schemas/_RangeInput' required: - ranges CalendarGroupEventCreate: type: object description: |- Input for booking an event through a CalendarGroup. On `save()` this delegates to `CalendarGroupService.create_grouped_event` and returns the created `CalendarEvent`. The view is responsible for serializing the result (typically with `CalendarEventSerializer`). properties: title: type: string description: type: string default: '' start_time: type: string format: date-time end_time: type: string format: date-time timezone: type: string slot_selections: type: array items: $ref: '#/components/schemas/_CalendarGroupSlotSelectionInput' attendances: type: array items: type: object additionalProperties: {} external_attendances: type: array items: type: object additionalProperties: {} required: - end_time - slot_selections - start_time - timezone - title CalendarGroupRangeAvailability: type: object properties: start_time: type: string format: date-time end_time: type: string format: date-time slots: type: array items: $ref: '#/components/schemas/CalendarGroupSlotAvailability' required: - end_time - slots - start_time CalendarGroupSlot: type: object description: |- Nested slot representation used inside CalendarGroupSerializer. On write, accepts `calendar_ids: list[int]`; on read exposes the calendar pool via `calendars` (the M2M). We deliberately keep slot writes to payload-time data only — persistence happens through `CalendarGroupSerializer` which delegates to `CalendarGroupService`. properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string order: type: integer maximum: 32767 minimum: 0 required_count: type: integer maximum: 32767 minimum: 0 description: How many calendars from the pool must be selected when booking. Default 1; use larger values when a slot needs multiple calendars (e.g. two nurses). calendars: type: array items: $ref: '#/components/schemas/Calendar' readOnly: true calendar_ids: type: array items: type: integer writeOnly: true required: - calendar_ids - calendars - id - name CalendarGroupSlotAvailability: type: object properties: slot_id: type: integer available_calendar_ids: type: array items: type: integer required: - available_calendar_ids - slot_id CalendarTypeEnum: enum: - personal - resource - virtual - bundle type: string description: |- * `personal` - Personal Calendar * `resource` - Resource Calendar * `virtual` - Virtual Calendar * `bundle` - Bundle Calendar CurrentMembership: type: object description: |- Read-only serializer for the caller's current organization membership. Returns the membership role and the nested organization so the frontend can distinguish between an onboarded user and a gated (membership-less) user. properties: role: allOf: - $ref: '#/components/schemas/RoleEnum' readOnly: true description: |- Role the user holds in this organization. Admins can manage organization-scoped resources (e.g. CalendarGroups) regardless of direct ownership. * `member` - Member * `admin` - Admin organization: type: object additionalProperties: {} description: Serialize the related organization using OrganizationSerializer. readOnly: true required: - organization - role EventAttendance: type: object properties: id: type: integer nullable: true description: ID of the external attendee. user: allOf: - $ref: '#/components/schemas/User' readOnly: true user_id: type: integer writeOnly: true status: allOf: - $ref: '#/components/schemas/RSVPStatusEnum' readOnly: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - created - modified - status - user - user_id EventBulkModification: type: object description: Serializer for creating bulk modifications on recurring events from a given date. properties: modification_start_date: type: string format: date modified_title: type: string nullable: true modified_description: type: string nullable: true recurrence_rule: allOf: - $ref: '#/components/schemas/RecurrenceRule' description: Recurrence rule data for the modification range rrule_string: type: string writeOnly: true nullable: true description: RRULE string for the modification range modified_start_time_offset: type: string nullable: true modified_end_time_offset: type: string nullable: true is_cancelled: type: boolean default: false required: - modification_start_date EventExternalAttendance: type: object properties: id: type: integer nullable: true description: ID of the external attendee. external_attendee: $ref: '#/components/schemas/ExternalAttendee' status: allOf: - $ref: '#/components/schemas/RSVPStatusEnum' readOnly: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - created - external_attendee - modified - status EventRecurringException: type: object description: Serializer for creating recurring event exceptions. properties: exception_date: type: string format: date description: The date of the occurrence to modify or cancel modified_title: type: string nullable: true description: New title for the modified occurrence (if not cancelled) maxLength: 255 modified_description: type: string nullable: true description: New description for the modified occurrence (if not cancelled) modified_start_time: type: string format: date-time nullable: true description: New start time for the modified occurrence (if not cancelled) modified_end_time: type: string format: date-time nullable: true description: New end time for the modified occurrence (if not cancelled) is_cancelled: type: boolean default: false description: True if cancelling the occurrence, False if modifying required: - exception_date EventTypeEnum: enum: - calendar_event_created - calendar_event_updated - calendar_event_deleted - calendar_event_attendee_added - calendar_event_attendee_removed - calendar_event_attendee_updated type: string description: |- * `calendar_event_created` - Calendar Event Created * `calendar_event_updated` - Calendar Event Updated * `calendar_event_deleted` - Calendar Event Deleted * `calendar_event_attendee_added` - Calendar Event Attendee Added * `calendar_event_attendee_removed` - Calendar Event Attendee Removed * `calendar_event_attendee_updated` - Calendar Event Attendee Updated ExternalAttendee: type: object properties: id: type: integer nullable: true description: ID of the external attendee. name: type: string maxLength: 255 email: type: string format: email maxLength: 254 created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - created - email - modified FrequencyEnum: enum: - DAILY - WEEKLY - MONTHLY - YEARLY type: string description: |- * `DAILY` - Daily * `WEEKLY` - Weekly * `MONTHLY` - Monthly * `YEARLY` - Yearly Organization: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 should_sync_rooms: type: boolean description: Whether to sync rooms for this organization. created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - created - id - modified - name OrganizationInvitation: type: object description: Serializer for managing OrganizationInvitation instances. properties: id: type: integer readOnly: true email: type: string format: email maxLength: 254 first_name: type: string maxLength: 150 last_name: type: string maxLength: 150 organization: type: integer readOnly: true invited_by: type: integer readOnly: true accepted_at: type: string format: date-time readOnly: true nullable: true expires_at: type: string format: date-time readOnly: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - accepted_at - created - email - expires_at - id - invited_by - modified - organization PaginatedAvailableTimeList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/AvailableTime' PaginatedAvailableTimeWindowList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/AvailableTimeWindow' PaginatedBlockedTimeList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/BlockedTime' PaginatedBookableSlotProposalList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/BookableSlotProposal' PaginatedCalendarEventList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/CalendarEvent' PaginatedCalendarGroupList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/CalendarGroup' PaginatedCalendarGroupRangeAvailabilityList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/CalendarGroupRangeAvailability' PaginatedCalendarList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Calendar' PaginatedOrganizationInvitationList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/OrganizationInvitation' PaginatedUnavailableTimeWindowList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/UnavailableTimeWindow' PaginatedWebhookConfigurationList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/WebhookConfiguration' PaginatedWebhookEventList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/WebhookEvent' ParentEvent: type: object properties: id: type: integer readOnly: true title: type: string maxLength: 255 external_id: type: string readOnly: true start_time: type: string format: date-time readOnly: true end_time: type: string format: date-time readOnly: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - created - end_time - external_id - id - modified - start_time - title PatchedAvailableTime: type: object description: Serializer for AvailableTime model with recurring support. properties: id: type: integer readOnly: true start_time: type: string format: date-time end_time: type: string format: date-time timezone: type: string maxLength: 50 recurrence_rule: allOf: - $ref: '#/components/schemas/RecurrenceRule' description: Recurrence rule data for creating recurring available times rrule_string: type: string writeOnly: true description: RRULE string for creating recurring available times is_recurring_instance: type: boolean description: True if this is an instance of a recurring available time readOnly: true is_recurring: type: boolean description: True if this is a recurring available time readOnly: true parent_available_time: type: object properties: id: type: integer required: - id nullable: true description: Get parent available time for instances. readOnly: true recurrence_id: type: string format: date-time readOnly: true nullable: true description: For recurring instances, this identifies which occurrence this is created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true calendar: type: integer nullable: true PatchedBillingProfile: type: object description: Serializer for BillingProfile virtual model. properties: id: type: integer readOnly: true document_type: type: string maxLength: 50 document_number: type: string maxLength: 50 billing_address: $ref: '#/components/schemas/BillingAddress' created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true PatchedBlockedTime: type: object description: Serializer for BlockedTime model with recurring support. properties: id: type: integer readOnly: true start_time: type: string format: date-time end_time: type: string format: date-time timezone: type: string maxLength: 50 reason: type: string maxLength: 255 recurrence_rule: allOf: - $ref: '#/components/schemas/RecurrenceRule' description: Recurrence rule data for creating recurring blocked times rrule_string: type: string writeOnly: true description: RRULE string for creating recurring blocked times external_id: type: string readOnly: true is_recurring_instance: type: boolean description: True if this is an instance of a recurring blocked time readOnly: true is_recurring: type: boolean description: True if this is a recurring blocked time readOnly: true parent_blocked_time: type: object properties: id: type: integer reason: type: string nullable: true required: - id - reason nullable: true description: Get parent blocked time for instances. readOnly: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true calendar: type: integer nullable: true PatchedCalendar: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string email: type: string format: email readOnly: true external_id: type: string readOnly: true provider: allOf: - $ref: '#/components/schemas/ProviderEnum' readOnly: true calendar_type: allOf: - $ref: '#/components/schemas/CalendarTypeEnum' readOnly: true description: |- The type of calendar. Personal calendars are for individual use, resource calendars are for shared resources, and virtual calendars are for online meetings or events. * `personal` - Personal Calendar * `resource` - Resource Calendar * `virtual` - Virtual Calendar * `bundle` - Bundle Calendar capacity: type: integer readOnly: true nullable: true description: The maximum number of attendees that can be accommodated in this calendar's events. This is only applicable for resource calendars. manage_available_windows: type: boolean description: If true, this calendar can manage its own available time windows. If not, it will use the available time windows of the external calendar it's attached to. PatchedCalendarEvent: type: object properties: id: type: integer readOnly: true provider: type: string writeOnly: true title: type: string maxLength: 255 description: type: string start_time: type: string format: date-time end_time: type: string format: date-time timezone: type: string maxLength: 50 created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true external_id: type: string readOnly: true external_attendances: type: array items: $ref: '#/components/schemas/EventExternalAttendance' attendances: type: array items: $ref: '#/components/schemas/EventAttendance' resource_allocations: type: array items: $ref: '#/components/schemas/ResourceAllocation' recurrence_rule: allOf: - $ref: '#/components/schemas/RecurrenceRule' description: Recurrence rule data for creating recurring events rrule_string: type: string writeOnly: true description: RRULE string for creating recurring events parent_recurring_object_id: type: integer writeOnly: true description: ID of parent event for recurring instances parent_recurring_object: allOf: - $ref: '#/components/schemas/ParentEvent' readOnly: true is_recurring_instance: type: boolean description: True if this is an instance of a recurring event readOnly: true is_recurring: type: boolean description: True if this is a recurring event readOnly: true is_recurring_exception: type: boolean description: True if this object is an exception to the recurrence rule (modified occurrence) recurrence_id: type: string format: date-time nullable: true description: For recurring instances, this identifies which occurrence this is google_calendar_service_account: type: integer writeOnly: true calendar: type: integer writeOnly: true PatchedCalendarGroup: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 description: type: string slots: type: array items: $ref: '#/components/schemas/CalendarGroupSlot' created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true PatchedOrganization: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 255 should_sync_rooms: type: boolean description: Whether to sync rooms for this organization. created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true PatchedProfile: type: object properties: id: type: integer readOnly: true first_name: type: string maxLength: 255 last_name: type: string maxLength: 255 profile_picture: type: string format: uri nullable: true PatchedWebhookConfiguration: type: object properties: id: type: integer readOnly: true event_type: $ref: '#/components/schemas/EventTypeEnum' url: type: string format: uri maxLength: 2000 headers: {} Profile: type: object properties: id: type: integer readOnly: true first_name: type: string maxLength: 255 last_name: type: string maxLength: 255 profile_picture: type: string format: uri nullable: true required: - id ProviderEnum: enum: - internal - google - microsoft - apple - ics type: string description: |- * `internal` - Internal Calendar * `google` - Google Calendar * `microsoft` - Microsoft Outlook Calendar * `apple` - Apple Calendar * `ics` - ICS RSVPStatusEnum: enum: - accepted - declined - pending type: string description: |- * `accepted` - Accepted * `declined` - Declined * `pending` - Pending RecurrenceRule: type: object properties: id: type: integer readOnly: true frequency: allOf: - $ref: '#/components/schemas/FrequencyEnum' description: |- How often the event repeats (DAILY, WEEKLY, MONTHLY, YEARLY) * `DAILY` - Daily * `WEEKLY` - Weekly * `MONTHLY` - Monthly * `YEARLY` - Yearly interval: type: integer maximum: 2147483647 minimum: 0 description: The interval between each frequency iteration (e.g., every 2 weeks) count: type: integer maximum: 2147483647 minimum: 0 nullable: true description: Number of occurrences after which the recurrence ends until: type: string format: date-time nullable: true description: The date and time until which the recurrence is valid by_weekday: type: string description: Comma-separated list of weekdays (e.g., 'MO,WE,FR') maxLength: 100 by_month_day: type: string description: Comma-separated list of month days (e.g., '1,15,-1' for 1st, 15th, last day) maxLength: 100 by_month: type: string description: Comma-separated list of months (1-12) maxLength: 50 by_year_day: type: string description: Comma-separated list of year days (1-366 or -366 to -1) maxLength: 100 by_week_number: type: string description: Comma-separated list of week numbers (1-53 or -53 to -1) maxLength: 100 by_hour: type: string description: Comma-separated list of hours (0-23) maxLength: 100 by_minute: type: string description: Comma-separated list of minutes (0-59) maxLength: 200 by_second: type: string description: Comma-separated list of seconds (0-59) maxLength: 200 week_start: allOf: - $ref: '#/components/schemas/WeekStartEnum' description: |- First day of the week * `MO` - Monday * `TU` - Tuesday * `WE` - Wednesday * `TH` - Thursday * `FR` - Friday * `SA` - Saturday * `SU` - Sunday rrule_string: type: string readOnly: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - created - frequency - id - modified - rrule_string ResourceAllocation: type: object properties: id: type: integer nullable: true description: ID of the external attendee. calendar: type: integer status: allOf: - $ref: '#/components/schemas/RSVPStatusEnum' readOnly: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - calendar - created - modified - status RoleEnum: enum: - member - admin type: string description: |- * `member` - Member * `admin` - Admin UnavailableTimeWindow: type: object properties: id: type: integer reason: type: string start_time: type: string format: date-time end_time: type: string format: date-time reason_description: type: string readOnly: true required: - end_time - id - reason - reason_description - start_time User: type: object properties: id: type: integer readOnly: true email: type: string format: email readOnly: true phone_number: type: string readOnly: true profile: $ref: '#/components/schemas/Profile' is_active: type: boolean readOnly: true description: Designates whether this user should be treated as active. Unselect this instead of deleting accounts. is_staff: type: boolean readOnly: true description: Designates whether the user can log into this admin site. is_superuser: type: boolean readOnly: true title: Superuser status description: Designates that this user has all permissions without explicitly assigning them. created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true last_login: type: string format: date-time readOnly: true nullable: true required: - created - email - id - is_active - is_staff - is_superuser - last_login - modified - phone_number - profile WebhookConfiguration: type: object properties: id: type: integer readOnly: true event_type: $ref: '#/components/schemas/EventTypeEnum' url: type: string format: uri maxLength: 2000 headers: {} required: - id - url WebhookEvent: type: object properties: configuration: type: integer readOnly: true main_event: type: integer readOnly: true event_type: $ref: '#/components/schemas/EventTypeEnum' url: type: string format: uri maxLength: 2000 status: allOf: - $ref: '#/components/schemas/WebhookEventStatusEnum' readOnly: true headers: {} payload: {} response_status: type: integer readOnly: true nullable: true response_body: readOnly: true nullable: true response_headers: readOnly: true nullable: true retry_number: type: integer readOnly: true nullable: true send_after: type: string format: date-time readOnly: true nullable: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - configuration - created - event_type - main_event - modified - payload - response_body - response_headers - response_status - retry_number - send_after - status - url WebhookEventStatusEnum: enum: - pending - success - failed type: string description: |- * `pending` - Pending * `success` - Success * `failed` - Failed WeekStartEnum: enum: - MO - TU - WE - TH - FR - SA - SU type: string description: |- * `MO` - Monday * `TU` - Tuesday * `WE` - Wednesday * `TH` - Thursday * `FR` - Friday * `SA` - Saturday * `SU` - Sunday _CalendarGroupSlotSelectionInput: type: object properties: slot_id: type: integer calendar_ids: type: array items: type: integer required: - calendar_ids - slot_id _RangeInput: type: object properties: start_time: type: string format: date-time end_time: type: string format: date-time required: - end_time - start_time securitySchemes: cookieAuth: type: apiKey in: cookie name: sessionid jwtAuth: type: http scheme: bearer bearerFormat: JWT