Phorest Services API

Services, service categories, packages, and special offers.

Documentation

Specifications

OpenAPI Specification

phorest-services-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Phorest Third-Party Appointments Services API
  description: The Phorest API exposes a partner-gated business's salon/spa data - clients, appointments, bookings, staff, services, products, purchases, vouchers, loyalty, and reporting - for approved integrators. Access is granted by Phorest support on request (quoting a Phorest Account Number), not through self-service signup. Requests use HTTP Basic authentication with a `global/{email}` username and a Phorest-issued API password, and are scoped in the URL path to a `businessId` and, for most resources, a `branchId`. Endpoints, methods, and parameters in this document are transcribed from Phorest's public API reference at developer.phorest.com/reference; a small number of item-level paths (marked in their description) are modeled by convention from the confirmed collection-level siblings because Phorest's public reference does not expose every single-resource path in plain text.
  version: '1.0'
  contact:
    name: Phorest API Support
    email: api-requests@phorest.com
    url: https://developer.phorest.com/docs/getting-started
  license:
    name: Proprietary - partner access only
    url: https://developer.phorest.com/docs/requesting-assistance-with-the-phorest-api
servers:
- url: https://api-gateway-eu.phorest.com/third-party-api-server/api/business
  description: EU production gateway
- url: https://api-gateway-us.phorest.com/third-party-api-server/api/business
  description: US/AUS production gateway
- url: https://platform.phorest.com/third-party-api-server/api/business
  description: EU production alias documented in Phorest support articles
security:
- basicAuth: []
tags:
- name: Services
  description: Services, service categories, packages, and special offers.
paths:
  /{businessId}/branch/{branchId}/service:
    parameters:
    - $ref: '#/components/parameters/BusinessId'
    - $ref: '#/components/parameters/BranchId'
    get:
      operationId: getServices
      tags:
      - Services
      summary: List branch services
      description: 'Lists services offered at a branch, with price and duration data. Modeled by convention: the item path GET /{businessId}/branch/{branchId}/service/{serviceId} is confirmed at developer.phorest.com/reference/getservice ("Retrieve a branch service"); the bare collection path follows the same list/item pattern confirmed across every other resource in this API.'
      parameters:
      - name: category_id
        in: query
        schema:
          type: string
      - $ref: '#/components/parameters/Size'
      - $ref: '#/components/parameters/Page'
      responses:
        '200':
          description: Services listed successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Service'
  /{businessId}/branch/{branchId}/service/{serviceId}:
    parameters:
    - $ref: '#/components/parameters/BusinessId'
    - $ref: '#/components/parameters/BranchId'
    - name: serviceId
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: getService
      tags:
      - Services
      summary: Retrieve a branch service
      description: 'Retrieves a single branch service by ID, with an optional flag to include its online category. Confirmed: developer.phorest.com/reference/getservice.'
      parameters:
      - name: fetch_online_category
        in: query
        schema:
          type: boolean
      responses:
        '200':
          description: The requested service.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Service'
        '404':
          $ref: '#/components/responses/NotFound'
  /{businessId}/branch/{branchId}/service-category:
    parameters:
    - $ref: '#/components/parameters/BusinessId'
    - $ref: '#/components/parameters/BranchId'
    get:
      operationId: getServiceCategories
      tags:
      - Services
      summary: List service categories
      description: 'Lists service categories for a branch. Confirmed: developer.phorest.com/reference/getservicecategories.'
      parameters:
      - $ref: '#/components/parameters/Size'
      - $ref: '#/components/parameters/Page'
      responses:
        '200':
          description: Service categories listed successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ServiceCategory'
  /{businessId}/branch/{branchId}/package:
    parameters:
    - $ref: '#/components/parameters/BusinessId'
    - $ref: '#/components/parameters/BranchId'
    get:
      operationId: getServicePackages
      tags:
      - Services
      summary: List service packages
      description: 'Lists bundled service packages for a branch, filterable by service category. Confirmed: developer.phorest.com/reference/getservicepackages.'
      parameters:
      - name: category_id
        in: query
        schema:
          type: string
      - $ref: '#/components/parameters/Size'
      - $ref: '#/components/parameters/Page'
      responses:
        '200':
          description: Service packages listed successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ServicePackage'
  /{businessId}/branch/{branchId}/service-special-offer:
    parameters:
    - $ref: '#/components/parameters/BusinessId'
    - $ref: '#/components/parameters/BranchId'
    get:
      operationId: getServiceSpecialOffers
      tags:
      - Services
      summary: List service special offers
      description: 'Lists discounted service special offers for a branch, filterable by service category. Confirmed: developer.phorest.com/reference/getservices_1.'
      parameters:
      - name: category_id
        in: query
        schema:
          type: string
      - $ref: '#/components/parameters/Size'
      - $ref: '#/components/parameters/Page'
      responses:
        '200':
          description: Service special offers listed successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ServiceSpecialOffer'
components:
  schemas:
    ServicePackage:
      type: object
      properties:
        packageId:
          type: string
        name:
          type: string
        categoryId:
          type: string
        price:
          type: number
        serviceIds:
          type: array
          items:
            type: string
    Service:
      type: object
      properties:
        serviceId:
          type: string
        name:
          type: string
        categoryId:
          type: string
        price:
          type: number
        durationMinutes:
          type: integer
        archived:
          type: boolean
    ServiceCategory:
      type: object
      properties:
        categoryId:
          type: string
        name:
          type: string
    ServiceSpecialOffer:
      type: object
      properties:
        offerId:
          type: string
        serviceId:
          type: string
        discountedPrice:
          type: number
        startDate:
          type: string
          format: date
        endDate:
          type: string
          format: date
  parameters:
    Page:
      name: page
      in: query
      description: Zero-indexed page number. Defaults to 0.
      schema:
        type: integer
        default: 0
        minimum: 0
    BusinessId:
      name: businessId
      in: path
      required: true
      description: The Phorest business (salon group) identifier.
      schema:
        type: string
    Size:
      name: size
      in: query
      description: Records per page. Max 100, defaults to 20.
      schema:
        type: integer
        default: 20
        maximum: 100
    BranchId:
      name: branchId
      in: path
      required: true
      description: The Phorest branch (location) identifier.
      schema:
        type: string
  responses:
    NotFound:
      description: The specified business, branch, or resource does not exist.
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: Username is `global/{email}`, using the email address Phorest associated with the granted API access. Password is the API password issued by Phorest support.