Zoca Bundles API
The Bundles API from Zoca — 12 operation(s) for bundles.
The Bundles API from Zoca — 12 operation(s) for bundles.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/zoca-bundles-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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