openapi: 3.2.0 info: title: Zoca Platform Scheduling - Policies API description: 'The Zoca platform API behind the Zoca web app and mobile apps: scheduling, website generation, Google Business Profile, discovery/local SEO, social media, booking enquiries, offers, clients, staff, billing and the Zoca "brain" agent layer.' version: 3.20.10 contact: {} x-apievangelist-note: Harvested verbatim from https://api.zoca.ai/swagger.json. The provider ships the default NestJS Swagger metadata (title "API Documentation", empty servers[]); title/description/servers were set by API Evangelist for identification and the unmodified original is preserved at openapi/_original/zoca-platform-swagger.json. Every path, operation, summary, parameter and response is exactly as published. servers: - url: https://api.zoca.ai description: Production tags: - name: Scheduling - Policies paths: /scheduling/policies/fee: post: operationId: t_value parameters: [] responses: '201': description: Fee policy created content: application/json: schema: $ref: '#/components/schemas/e' summary: Create a new fee policy (cancellation or no-show) tags: - Scheduling - Policies get: operationId: t_value parameters: - name: policyType required: false in: query description: Filter by policy type schema: enum: - CANCELLATION - NO_SHOW - DEPOSIT type: string responses: '200': description: List of fee policies content: application/json: schema: type: array items: $ref: '#/components/schemas/e' summary: List all fee policies tags: - Scheduling - Policies /scheduling/policies/fee/{id}: get: operationId: t_value parameters: - name: id required: true in: path description: Fee policy ID schema: {} responses: '200': description: Fee policy found content: application/json: schema: $ref: '#/components/schemas/e' '404': description: Fee policy not found summary: Get a fee policy by ID tags: - Scheduling - Policies put: operationId: t_value parameters: - name: id required: true in: path description: Fee policy ID schema: {} responses: '200': description: Fee policy updated content: application/json: schema: $ref: '#/components/schemas/e' '404': description: Fee policy not found summary: Update a fee policy tags: - Scheduling - Policies delete: operationId: t_value parameters: - name: id required: true in: path description: Fee policy ID schema: {} responses: '204': description: Fee policy deleted '404': description: Fee policy not found summary: Delete a fee policy (soft delete) tags: - Scheduling - Policies /scheduling/policies/fee/entity/{entityId}: get: operationId: t_value parameters: - name: policyType required: false in: query description: Policy type filter schema: enum: - CANCELLATION - NO_SHOW - DEPOSIT type: string - name: entityType required: true in: query description: Entity type schema: enum: - BUSINESS - LOCATION - PROVIDER - SERVICE type: string - name: entityId required: true in: path description: Entity ID schema: {} responses: '200': description: List of fee policies content: application/json: schema: type: array items: $ref: '#/components/schemas/e' summary: Get fee policies for an entity tags: - Scheduling - Policies /scheduling/policies/fee/effective: get: operationId: t_value parameters: - name: serviceId required: false in: query description: Service ID schema: {} - name: providerId required: false in: query description: Provider ID schema: {} - name: locationId required: false in: query description: Location ID schema: {} - name: businessId required: false in: query description: Business ID schema: {} - name: policyType required: true in: query description: Policy type schema: enum: - CANCELLATION - NO_SHOW - DEPOSIT type: string responses: '200': description: Effective fee policy content: application/json: schema: $ref: '#/components/schemas/e' summary: Get effective fee policy with inheritance tags: - Scheduling - Policies /scheduling/policies/fee/deposit/preview: post: operationId: t_value parameters: [] responses: '200': description: Variations below the proposed fixed deposit content: application/json: schema: $ref: '#/components/schemas/e' summary: Preview service variations cheaper than a proposed fixed deposit tags: - Scheduling - Policies /scheduling/policies/effective-preference: get: operationId: t_value parameters: - name: clientId required: false in: query description: Client ID to check for exemption schema: {} - name: entityType required: true in: query schema: enum: - BUSINESS - LOCATION - PROVIDER - SERVICE type: string - name: entityId required: true in: query description: Location entity ID schema: {} responses: '200': description: Effective preference for this client content: application/json: schema: example: preference: NO_PAYMENT_REQUIRED summary: Get the effective fee-policies preference for a specific client (F2 exemptions) tags: - Scheduling - Policies /scheduling/policies/fee/acknowledgment-text: get: description: Returns formatted acknowledgment text for fee policies (cancellation and no-show) applicable to an entity, including a combined text for display operationId: t_value parameters: - name: entityType required: true in: query description: Entity type schema: enum: - BUSINESS - LOCATION - PROVIDER - SERVICE type: string - name: entityId required: true in: query description: Entity ID schema: {} responses: '200': description: Acknowledgment texts retrieved content: application/json: schema: $ref: '#/components/schemas/e' summary: Get policy acknowledgment texts tags: - Scheduling - Policies /scheduling/policies/payment: post: operationId: t_value parameters: [] responses: '201': description: Payment policy created content: application/json: schema: $ref: '#/components/schemas/e' summary: Create a new payment policy tags: - Scheduling - Policies get: operationId: t_value parameters: [] responses: '200': description: List of payment policies content: application/json: schema: type: array items: $ref: '#/components/schemas/e' summary: List all payment policies tags: - Scheduling - Policies /scheduling/policies/payment/{id}: get: operationId: t_value parameters: - name: id required: true in: path description: Payment policy ID schema: {} responses: '200': description: Payment policy found content: application/json: schema: $ref: '#/components/schemas/e' '404': description: Payment policy not found summary: Get a payment policy by ID tags: - Scheduling - Policies put: operationId: t_value parameters: - name: id required: true in: path description: Payment policy ID schema: {} responses: '200': description: Payment policy updated content: application/json: schema: $ref: '#/components/schemas/e' '404': description: Payment policy not found summary: Update a payment policy tags: - Scheduling - Policies delete: operationId: t_value parameters: - name: id required: true in: path description: Payment policy ID schema: {} responses: '204': description: Payment policy deleted '404': description: Payment policy not found summary: Delete a payment policy (soft delete) tags: - Scheduling - Policies /scheduling/policies/payment/entity/{entityId}: get: operationId: t_value parameters: - name: entityType required: true in: query description: Entity type schema: enum: - BUSINESS - LOCATION - PROVIDER - SERVICE type: string - name: entityId required: true in: path description: Entity ID schema: {} responses: '200': description: List of payment policies content: application/json: schema: type: array items: $ref: '#/components/schemas/e' summary: Get payment policies for an entity tags: - Scheduling - Policies /scheduling/policies/booking: post: operationId: t_value parameters: [] responses: '201': description: Booking policy created content: application/json: schema: $ref: '#/components/schemas/e' summary: Create a new booking policy (advanced restrictions) tags: - Scheduling - Policies get: operationId: t_value parameters: - name: intent required: false in: query description: Filter by intent schema: enum: - book_appointment - reschedule_appointment type: string responses: '200': description: List of booking policies content: application/json: schema: type: array items: $ref: '#/components/schemas/e' summary: List all booking policies tags: - Scheduling - Policies /scheduling/policies/booking/{id}: get: operationId: t_value parameters: - name: id required: true in: path description: Booking policy ID schema: {} responses: '200': description: Booking policy found content: application/json: schema: $ref: '#/components/schemas/e' '404': description: Booking policy not found summary: Get a booking policy by ID tags: - Scheduling - Policies put: operationId: t_value parameters: - name: id required: true in: path description: Booking policy ID schema: {} responses: '200': description: Booking policy updated content: application/json: schema: $ref: '#/components/schemas/e' '404': description: Booking policy not found summary: Update a booking policy tags: - Scheduling - Policies delete: operationId: t_value parameters: - name: id required: true in: path description: Booking policy ID schema: {} responses: '204': description: Booking policy deleted '404': description: Booking policy not found summary: Delete a booking policy (soft delete) tags: - Scheduling - Policies /scheduling/policies/booking/entity/{entityId}: get: operationId: t_value parameters: - name: entityType required: true in: query description: Entity type schema: enum: - BUSINESS - LOCATION - PROVIDER - SERVICE type: string - name: entityId required: true in: path description: Entity ID schema: {} responses: '200': description: List of booking policies content: application/json: schema: type: array items: $ref: '#/components/schemas/e' summary: Get booking policies for an entity tags: - Scheduling - Policies /scheduling/policies/map: post: operationId: t_value parameters: [] responses: '201': description: Mapping created content: application/json: schema: $ref: '#/components/schemas/e' summary: Map a policy to an entity tags: - Scheduling - Policies /scheduling/policies/map/{mappingId}: delete: operationId: t_value parameters: - name: mappingId required: true in: path description: Mapping ID schema: {} responses: '204': description: Mapping removed summary: Remove a policy mapping tags: - Scheduling - Policies /scheduling/policies/map/{mappingId}/default: put: operationId: t_value parameters: - name: mappingId required: true in: path description: Mapping ID schema: {} responses: '200': description: Mapping updated content: application/json: schema: $ref: '#/components/schemas/e' summary: Set a policy mapping as default tags: - Scheduling - Policies /scheduling/policies/map/policy/{policyId}: get: operationId: t_value parameters: - name: policyTable required: true in: query description: Policy table schema: enum: - fee_policies - payment_policies - booking_policies type: string - name: policyId required: true in: path description: Policy ID schema: {} responses: '200': description: List of mappings content: application/json: schema: type: array items: $ref: '#/components/schemas/e' summary: Get all mappings for a policy tags: - Scheduling - Policies /scheduling/policies/map/entity/{entityId}: get: operationId: t_value parameters: - name: policyTable required: false in: query description: Policy table filter schema: enum: - fee_policies - payment_policies - booking_policies type: string - name: entityType required: true in: query description: Entity type schema: enum: - BUSINESS - LOCATION - PROVIDER - SERVICE type: string - name: entityId required: true in: path description: Entity ID schema: {} responses: '200': description: List of mappings content: application/json: schema: type: array items: $ref: '#/components/schemas/e' summary: Get all policy mappings for an entity tags: - Scheduling - Policies components: schemas: e: type: object properties: id: type: number entityId: type: string attribute: type: string value: type: - object - 'null' metadata: type: - object - 'null' createdAt: type: - object - 'null' required: - id - entityId - attribute securitySchemes: access-token: scheme: bearer bearerFormat: JWT type: http name: Authorization description: Enter JWT token in the format Bearer in: header