openapi: 3.2.0 info: title: Zoca Platform Domains 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: Domains paths: /domains/suggest: get: description: Generates 5–6 candidate domains from the input and returns availability + yearly registration price for each. Available rows always returned; unavailable rows are filtered out unless the user typed an exact FQDN. operationId: t_value parameters: [] responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/e' security: - bearer: [] summary: Search domain availability + pricing for a keyword or FQDN tags: - Domains /domains/pricing: get: description: Returns price + currency per TLD. When `tlds` is omitted, the FE picker default set is used. operationId: t_value parameters: [] responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/e' security: - bearer: [] summary: Yearly registration prices for a TLD set tags: - Domains /domains/register: post: description: Submits the registration to AWS, then writes a `custom_domains` row tagged `domainOwnedBy=zoca` with `isActive=false` and the AWS operation ID stored on the row. Poll GET /domains/register/:operationId until `SUCCESSFUL` to flip the row active. operationId: t_value parameters: [] responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/e' security: - bearer: [] summary: Register a domain through AWS Route53Domains tags: - Domains /domains/distribution-status/{distributionId}: get: description: Wraps CloudFront GetDistribution. Returns `Deployed` once the distribution has fully propagated to all edge POPs (typically 5–15 min after CreateDistribution). FE uses this to keep showing a "publishing" state instead of claiming the site is live before traffic actually serves. operationId: t_value parameters: [] responses: '200': description: '' security: - bearer: [] summary: Get CloudFront distribution deployment status tags: - Domains /domains/register/{operationId}: get: description: Wraps Route53Domains GetOperationDetail. When status flips to SUCCESSFUL the row is auto-promoted (isActive=true, registerOperationId cleared) and the publish pipeline (ACM cert + per-customer CloudFront distribution + Route53 ALIAS records) is kicked off so the website serves on the purchased domain. The same pipeline also runs from the maintenance-worker cron, so customers who close their browser still get published. operationId: t_value parameters: [] responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/e' security: - bearer: [] summary: Poll the status of an in-flight domain registration tags: - Domains 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