Zoca Addon Groups API

The AddonGroups API from Zoca — 9 operation(s) for addongroups.

Operations 11

GET /addon-groups/{entityId} List addon groups for entity. #
POST /addon-groups/{entityId} Create a standalone addon group. #
GET /addon-groups/{entityId}/{groupId} Get an addon group with its member addons + linked services. #
PATCH /addon-groups/{entityId}/{groupId} Update an addon group. #
PATCH /addon-groups/{entityId}/{groupId}/archive Soft-archive a group (does not archive member addons). #
PATCH /addon-groups/{entityId}/{groupId}/unarchive Restore an archived group. #
POST /addon-groups/{entityId}/{groupId}/addons Add existing addons to a group (via addon_group_items). #
DELETE /addon-groups/{entityId}/{groupId}/addons/{addonId} Remove an addon from a group. #
POST /addon-groups/{entityId}/{groupId}/addons/reorder Reorder addons within a group. #
POST /addon-groups/{entityId}/{groupId}/services Group-attach: bulk-link group to services (writes service_addons rows with addon_id=NULL). #
DELETE /addon-groups/{entityId}/{groupId}/services/{serviceId} Unlink group from a service. #

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-addongroups-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-addongroups-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Zoca Platform Addon Groups 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: AddonGroups
paths:
  /addon-groups/{entityId}:
    get:
      operationId: t_value
      parameters:
      - name: isActive
        required: false
        in: query
        schema:
          type: boolean
      - name: serviceId
        required: false
        in: query
        schema:
          format: uuid
          type: string
      - name: entityId
        required: true
        in: path
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/e'
      security:
      - bearer: []
      summary: List addon groups for entity.
      tags:
      - AddonGroups
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/e'
      security:
      - bearer: []
      summary: Create a standalone addon group.
      tags:
      - AddonGroups
  /addon-groups/{entityId}/{groupId}:
    get:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/t'
      security:
      - bearer: []
      summary: Get an addon group with its member addons + linked services.
      tags:
      - AddonGroups
    patch:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      security:
      - bearer: []
      summary: Update an addon group.
      tags:
      - AddonGroups
  /addon-groups/{entityId}/{groupId}/archive:
    patch:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      security:
      - bearer: []
      summary: Soft-archive a group (does not archive member addons).
      tags:
      - AddonGroups
  /addon-groups/{entityId}/{groupId}/unarchive:
    patch:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      security:
      - bearer: []
      summary: Restore an archived group.
      tags:
      - AddonGroups
  /addon-groups/{entityId}/{groupId}/addons:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      security:
      - bearer: []
      summary: Add existing addons to a group (via addon_group_items).
      tags:
      - AddonGroups
  /addon-groups/{entityId}/{groupId}/addons/{addonId}:
    delete:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      security:
      - bearer: []
      summary: Remove an addon from a group.
      tags:
      - AddonGroups
  /addon-groups/{entityId}/{groupId}/addons/reorder:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      security:
      - bearer: []
      summary: Reorder addons within a group.
      tags:
      - AddonGroups
  /addon-groups/{entityId}/{groupId}/services:
    post:
      operationId: t_value
      parameters: []
      responses:
        '201':
          description: ''
      security:
      - bearer: []
      summary: 'Group-attach: bulk-link group to services (writes service_addons rows with addon_id=NULL).'
      tags:
      - AddonGroups
  /addon-groups/{entityId}/{groupId}/services/{serviceId}:
    delete:
      operationId: t_value
      parameters: []
      responses:
        '200':
          description: ''
      security:
      - bearer: []
      summary: Unlink group from a service.
      tags:
      - AddonGroups
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