# Barbershop booking API

> Services, staff, live slots, appointments, waitlist and reviews of one barbershop.

Services, staff, live slots, appointments, waitlist and reviews of one barbershop.

| Field | Value |
| --- | --- |
| Base URL | `https://fina.do/api/barbershop/v1` |
| Authentication | `X-Barbershop-App-Key` + customer bearer token on private routes |
| OpenAPI 3.1 | [/api/barbershop/v1/openapi.json](https://fina.do/api/barbershop/v1/openapi.json) |
| Built for | Custom booking apps for a barbershop or salon |

Shared rules (app key, envelope, /config, delivery quotes): [Storefront APIs](https://fina.do/developers/storefront-apis.md).

### Endpoints

Base URL: `https://fina.do/api/barbershop/v1`

| Method | Path | Summary | Auth |
| --- | --- | --- | --- |
| GET | `/config` | Get the configured business and booking policy | App key |
| GET | `/catalog` | Get appointment services, staff, and public reviews | App key |
| GET | `/slots` | Calculate currently available appointment starts | App key |
| POST | `/discounts/validate` | Preview a discount for the selected appointment items | App key |
| POST | `/me/link` | Link the global account to this business customer record | App key + Customer token |
| GET | `/me` | Get the linked profile for this business | App key + Customer token |
| PATCH | `/me` | Update name or phone on the linked business profile | App key + Customer token |
| DELETE | `/me` | Delete the customer account and personal data | App key + Customer token |
| GET | `/appointments` | List appointments belonging to the linked customer | App key + Customer token |
| POST | `/appointments` | Create an appointment atomically and idempotently | App key + Customer token (or App key) |
| GET | `/appointments/{id}` | Get one appointment belonging to the linked customer | App key + Customer token |
| POST | `/appointments/{id}/cancel` | Cancel an appointment under the configured policy | App key + Customer token |
| GET | `/appointments/{id}/reschedule` | Get valid replacement starts for an appointment | App key + Customer token |
| POST | `/appointments/{id}/reschedule` | Move an appointment to a currently valid slot | App key + Customer token |
| POST | `/appointments/{id}/review` | Review a completed appointment | App key + Customer token |
| GET | `/waitlist` | List the linked customer waitlist entries | App key + Customer token |
| POST | `/waitlist` | Join the waitlist for an appointment service | App key + Customer token |
| DELETE | `/waitlist/{id}` | Cancel one waiting entry belonging to the linked customer | App key + Customer token |
| GET | `/standing/plans` | List the plans a customer can subscribe to | App key |
| POST | `/standing/preview` | Preview the dates a standing appointment would get | App key |
| GET | `/standing` | List the customer's standing appointments | App key + Customer token |
| POST | `/standing` | Subscribe to a standing appointment and get the Fina Pay checkout | App key + Customer token |
| GET | `/standing/{id}` | Get payment state, upcoming appointments and skipped dates | App key + Customer token |
| POST | `/standing/{id}/cancel` | Cancel a standing appointment | App key + Customer token |
| GET | `/announcements/active` | Live announcements from the business for this customer | App key + Customer token (or App key) |
| POST | `/announcements/{id}/events` | Record that an announcement was seen, a button was tapped or it was closed | App key + Customer token (or App key) |
| GET | `/loyalty` | Loyalty program, rewards and the customer card | App key + Customer token (or App key) |
| POST | `/loyalty/redemptions` | Redeem a reward with points | App key + Customer token |
| POST | `/loyalty/redemptions/{id}/cancel` | Cancel one of my pending redemptions | App key + Customer token |
| POST | `/loyalty/check-in` | Self check-in with the counter QR | App key + Customer token |
| GET | `/advisory` | Advisory service, request form and my cases | App key + Customer token (or App key) |
| POST | `/advisory/requests` | Request advisory | App key + Customer token |
| GET | `/advisory/cases/{id}` | Case detail | App key + Customer token |
| GET | `/advisory/cases/{id}/activities` | Case timeline visible to the client | App key + Customer token |
| POST | `/advisory/cases/{id}/messages` | Send a message to the advisor | App key + Customer token |
| GET | `/advisory/cases/{id}/dossiers` | Document folders of the case | App key + Customer token |
| POST | `/advisory/uploads` | Upload a file (raw bytes) | App key + Customer token |
| POST | `/advisory/dossier-items/{id}/files` | Attach an uploaded file to a document | App key + Customer token |
| DELETE | `/advisory/files/{id}` | Delete one of my files | App key + Customer token |
| GET | `/advisory/files/{id}/url` | Signed URL of a file | App key + Customer token |
| GET | `/advisory/cases/{id}/visits` | Visits of the case | App key + Customer token |
| POST | `/advisory/cases/{id}/visit-requests` | Request a visit | App key + Customer token |
| GET | `/advisory/visits/{id}/report-pdf` | Signed URL of the published report PDF | App key + Customer token |
| POST | `/advisory/visits/{id}/cancel` | Cancel a visit | App key + Customer token |
| POST | `/advisory/visits/{id}/acknowledge` | Acknowledge a published visit report | App key + Customer token |
| GET | `/advisory/cases/{id}/metrics` | Indicators of the case with their series | App key + Customer token |
| POST | `/advisory/metrics/{id}/records` | Record a measurement | App key + Customer token |
| GET | `/advisory/cases/{id}/market` | My offers and the opportunities shared with me | App key + Customer token |
| POST | `/advisory/cases/{id}/offers` | Propose an offer | App key + Customer token |
| POST | `/advisory/opportunities/{id}/respond` | Respond to a shared opportunity | App key + Customer token |
| GET | `/blog` | Blog header, membership, tips and tags | App key + Customer token (or App key) |
| GET | `/blog/posts` | Published posts (cards, no body) | App key + Customer token (or App key) |
| GET | `/blog/posts/{id}` | One post with the body the customer may read | App key + Customer token (or App key) |
| POST | `/blog/posts/{id}/purchase` | Buy a paid post with Fina Pay | App key + Customer token |
| POST | `/blog/posts/{id}/tips` | Leave a tip with Fina Pay | App key + Customer token (or App key) |
| POST | `/blog/membership/checkout` | Join the blog membership (Fina Pay subscription checkout) | App key + Customer token |
| POST | `/devices` | Register this installation and its current push token | App key + Customer token |
| DELETE | `/devices` | Revoke this app installation for the signed-in account | App key + Customer token |

Source: https://fina.do/developers#api-barbershop