Zoca Bundles API

The Bundles API from Zoca — 12 operation(s) for bundles.

Operations 17

GET /bundles/{entityId} Get bundles by entity ID #
POST /bundles/{entityId} Create a new bundle #
GET /bundles/{entityId}/{bundleId} Get bundle by ID #
PUT /bundles/{entityId}/{bundleId} Update bundle #
DELETE /bundles/{entityId}/{bundleId} Delete bundle #
POST /bundles/{entityId}/{bundleId}/services Add services to bundle #
DELETE /bundles/{entityId}/{bundleId}/services/{serviceVariationId} Remove service from bundle #
PUT /bundles/{entityId}/{bundleId}/services/order Update service order in bundle #
POST /bundles/{entityId}/{bundleId}/providers Add providers to bundle #
GET /bundles/{entityId}/{bundleId}/providers Get enabled providers for bundle #
DELETE /bundles/{entityId}/{bundleId}/providers/{providerId} Remove provider from bundle #
PUT /bundles/{entityId}/{bundleId}/providers/{providerId}/toggle Toggle provider enabled status #
POST /bundles/{entityId}/{bundleId}/images Add image to bundle #
GET /bundles/{entityId}/{bundleId}/images Get bundle images #
DELETE /bundles/{entityId}/{bundleId}/images/{mediaId} Remove image from bundle #
GET /bundles/by-service/{serviceVariationId} Get bundles by service variation #
GET /bundles/by-provider/{providerId} Get bundles by provider #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/zoca-bundles-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

zoca-bundles-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Zoca Platform Bundles 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: Bundles
paths:
  /bundles/{entityId}:
    get:
      description: Retrieves all active bundles for a specific entity. Use includeServices=true to include full service variation details.
      operationId: t_value
      parameters:
      - name: includeServices
        required: false
        in: query
        description: Include full service variation details in the response
        schema:
          type: boolean
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: List of bundles retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/t'
      security:
      - bearer: []
      summary: Get bundles by entity ID
      tags:
      - Bundles
    post:
      description: "Creates a new service bundle for a specific entity with the following features:\n    - Bundle multiple services together\n    - Set combined bundle price\n    - Configure deposit requirements\n    - Assign specific providers\n    - Add bundle images"
      operationId: t_value
      parameters:
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      requestBody:
        required: true
        description: Bundle creation data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/e'
      responses:
        '201':
          description: Bundle created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/e'
        '400':
          description: Invalid input data
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: number
                    example: 400
                  error:
                    type: string
                    example: Bad Request
                  message:
                    type: array
                    items:
                      type: string
        '500':
          description: Internal server error
      security:
      - bearer: []
      summary: Create a new bundle
      tags:
      - Bundles
  /bundles/{entityId}/{bundleId}:
    get:
      description: Retrieves detailed information about a specific bundle including services
      operationId: t_value
      parameters:
      - name: bundleId
        required: true
        in: path
        description: UUID of the bundle
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: Bundle retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/t'
        '404':
          description: Bundle not found
      security:
      - bearer: []
      summary: Get bundle by ID
      tags:
      - Bundles
    put:
      description: Updates an existing bundle
      operationId: t_value
      parameters:
      - name: bundleId
        required: true
        in: path
        description: UUID of the bundle
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/e'
      responses:
        '200':
          description: Bundle updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/e'
        '404':
          description: Bundle not found
      security:
      - bearer: []
      summary: Update bundle
      tags:
      - Bundles
    delete:
      description: Soft deletes a bundle and all its associated data
      operationId: t_value
      parameters:
      - name: bundleId
        required: true
        in: path
        description: UUID of the bundle
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: Bundle deleted successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Bundle deleted successfully
        '404':
          description: Bundle not found
      security:
      - bearer: []
      summary: Delete bundle
      tags:
      - Bundles
  /bundles/{entityId}/{bundleId}/services:
    post:
      description: Associates multiple services with a bundle with optional ordering
      operationId: t_value
      parameters:
      - name: bundleId
        required: true
        in: path
        description: UUID of the bundle
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/e'
      responses:
        '200':
          description: Services added to bundle successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Services added to bundle successfully
        '404':
          description: Bundle not found
      security:
      - bearer: []
      summary: Add services to bundle
      tags:
      - Bundles
  /bundles/{entityId}/{bundleId}/services/{serviceVariationId}:
    delete:
      description: Removes a service association from a bundle
      operationId: t_value
      parameters:
      - name: serviceVariationId
        required: true
        in: path
        description: UUID of the service variation
        schema:
          format: uuid
          type: string
      - name: bundleId
        required: true
        in: path
        description: UUID of the bundle
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: Service removed from bundle successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Service removed from bundle successfully
        '404':
          description: Bundle not found
      security:
      - bearer: []
      summary: Remove service from bundle
      tags:
      - Bundles
  /bundles/{entityId}/{bundleId}/services/order:
    put:
      description: Updates the display order of services within a bundle
      operationId: t_value
      parameters:
      - name: bundleId
        required: true
        in: path
        description: UUID of the bundle
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                serviceOrders:
                  type: array
                  items:
                    type: object
                    properties:
                      serviceVariationId:
                        type: string
                        format: uuid
                      orderIndex:
                        type: number
      responses:
        '200':
          description: Service order updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Service order updated successfully
        '404':
          description: Bundle not found
      security:
      - bearer: []
      summary: Update service order in bundle
      tags:
      - Bundles
  /bundles/{entityId}/{bundleId}/providers:
    post:
      description: Associates multiple providers with a bundle
      operationId: t_value
      parameters:
      - name: bundleId
        required: true
        in: path
        description: UUID of the bundle
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/e'
      responses:
        '200':
          description: Providers added to bundle successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Providers added to bundle successfully
        '404':
          description: Bundle not found
      security:
      - bearer: []
      summary: Add providers to bundle
      tags:
      - Bundles
    get:
      description: Retrieves all enabled provider IDs for a bundle
      operationId: t_value
      parameters:
      - name: bundleId
        required: true
        in: path
        description: UUID of the bundle
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: Enabled providers retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  providerIds:
                    type: array
                    items:
                      type: string
                      format: uuid
        '404':
          description: Bundle not found
      security:
      - bearer: []
      summary: Get enabled providers for bundle
      tags:
      - Bundles
  /bundles/{entityId}/{bundleId}/providers/{providerId}:
    delete:
      description: Removes a provider association from a bundle
      operationId: t_value
      parameters:
      - name: providerId
        required: true
        in: path
        description: UUID of the provider
        schema:
          format: uuid
          type: string
      - name: bundleId
        required: true
        in: path
        description: UUID of the bundle
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: Provider removed from bundle successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Provider removed from bundle successfully
        '404':
          description: Bundle not found
      security:
      - bearer: []
      summary: Remove provider from bundle
      tags:
      - Bundles
  /bundles/{entityId}/{bundleId}/providers/{providerId}/toggle:
    put:
      description: Enables or disables a provider for a bundle
      operationId: t_value
      parameters:
      - name: providerId
        required: true
        in: path
        description: UUID of the provider
        schema:
          format: uuid
          type: string
      - name: bundleId
        required: true
        in: path
        description: UUID of the bundle
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/e'
      responses:
        '200':
          description: Provider status toggled successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Provider status toggled successfully
        '404':
          description: Bundle not found
      security:
      - bearer: []
      summary: Toggle provider enabled status
      tags:
      - Bundles
  /bundles/{entityId}/{bundleId}/images:
    post:
      description: Associates an image with a bundle
      operationId: t_value
      parameters:
      - name: bundleId
        required: true
        in: path
        description: UUID of the bundle
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                mediaId:
                  type: number
                isPrimary:
                  type: boolean
                  default: false
      responses:
        '200':
          description: Image added to bundle successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Image added to bundle successfully
        '404':
          description: Bundle not found
      security:
      - bearer: []
      summary: Add image to bundle
      tags:
      - Bundles
    get:
      description: Retrieves all images for a bundle
      operationId: t_value
      parameters:
      - name: bundleId
        required: true
        in: path
        description: UUID of the bundle
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: Bundle images retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    mediaId:
                      type: number
                    isPrimary:
                      type: boolean
                    createdAt:
                      type: string
                      format: date-time
        '404':
          description: Bundle not found
      security:
      - bearer: []
      summary: Get bundle images
      tags:
      - Bundles
  /bundles/{entityId}/{bundleId}/images/{mediaId}:
    delete:
      description: Removes an image association from a bundle
      operationId: t_value
      parameters:
      - name: mediaId
        required: true
        in: path
        description: Media ID
        schema:
          type: number
      - name: bundleId
        required: true
        in: path
        description: UUID of the bundle
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: Image removed from bundle successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Image removed from bundle successfully
        '404':
          description: Bundle not found
      security:
      - bearer: []
      summary: Remove image from bundle
      tags:
      - Bundles
  /bundles/by-service/{serviceVariationId}:
    get:
      description: Retrieves all bundles that include a specific service variation
      operationId: t_value
      parameters:
      - name: serviceVariationId
        required: true
        in: path
        description: UUID of the service variation
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: Bundle IDs retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  bundleIds:
                    type: array
                    items:
                      type: string
                      format: uuid
      security:
      - bearer: []
      summary: Get bundles by service variation
      tags:
      - Bundles
  /bundles/by-provider/{providerId}:
    get:
      description: Retrieves all bundles available for a specific provider
      operationId: t_value
      parameters:
      - name: entityId
        required: true
        in: query
        description: UUID of the entity
        schema:
          format: uuid
          type: string
      - name: providerId
        required: true
        in: path
        description: UUID of the provider
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: Bundles retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/e'
      security:
      - bearer: []
      summary: Get bundles by provider
      tags:
      - Bundles
components:
  schemas:
    t:
      type: object
      properties:
        id:
          type: number
        planId:
          type: number
        agentEntityId:
          type:
          - object
          - 'null'
          format: uuid
        agentName:
          type: string
        internalAddonName:
          type: string
          description: Chargebee item_price_id (internal addon name)
        externalAddonName:
          type: string
          description: Human-readable addon label shown to end-users
        active:
          type: boolean
          description: true if the location currently holds an active subscription for this addon
        subscriptionId:
          type:
          - object
          - 'null'
        quantity:
          type:
          - object
          - 'null'
        trialEnd:
          type:
          - object
          - 'null'
          description: Unix epoch seconds (Chargebee trial_end)
        addonPricingId:
          type:
          - object
          - 'null'
          description: chargebee.addon_pricing.id for this addon at the location's current cadence. Pass back to PATCH /billing/subscription as `update_items.items[].addonPricingId`.Null when no active addon_pricing row exists - surfaces a config gap and the FE should hide the buy CTA.
        unitPriceCents:
          type:
          - object
          - 'null'
          description: Per-line price the location would be billed at this cadence (cents).
      required:
      - id
      - planId
      - agentEntityId
      - agentName
      - internalAddonName
      - externalAddonName
      - active
      - subscriptionId
      - quantity
      - trialEnd
      - addonPricingId
      - unitPriceCents
    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 <token>
      in: header