HairDora Webhook subscriptions API
The Webhook subscriptions API from HairDora — 2 operation(s) for webhook subscriptions.
The Webhook subscriptions API from HairDora — 2 operation(s) for webhook subscriptions.
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/hairdora-com:hairdora-com-webhook-subscriptions-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: HairDora Webhook subscriptions API
version: 1.0.0
servers:
- url: https://api.hairdora.com
tags:
- name: Webhook Subscriptions
paths:
/api/webhooksubscriptions:
get:
tags:
- Webhook Subscriptions
summary: List webhook subscriptions
description: 'Webhook subscriptions deliver `appointment.created`, `appointment.updated`, `appointment.deleted`, `client.created`, `client.updated`, `service.created` and `service.updated` events to your server as signed POST requests (`X-Hairdora-Signature: t=,v1=`). An endpoint failing 20 times in a row is disabled automatically. Subscriptions are managed with an operator access token; the `secret` is only returned once, on create.'
security:
- accessToken: []
responses:
'200':
description: Array of webhook subscriptions (without secrets)
content:
application/json:
schema:
type: array
items:
type: object
properties:
_id:
type: string
minLength: 1
salonId:
type: string
minLength: 1
url:
type: string
format: uri
events:
type: array
items:
type: string
active:
type: boolean
creationTime:
type: string
format: date-time
default:
description: Error response
content:
application/json:
schema:
type: object
required:
- message
properties:
message:
type: string
name:
type: string
statusCode:
type: integer
details:
type: object
additionalProperties: true
operationId: getApiWebhooksubscriptions
post:
tags:
- Webhook Subscriptions
summary: Create a webhook subscription
description: The response includes the signing `secret` exactly once — store it; it cannot be retrieved again.
security:
- accessToken: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- salonId
- url
properties:
salonId:
type: string
url:
type: string
example: https://example.com/hairdora-webhook
events:
type: array
description: Empty array subscribes to all events
items:
type: string
enum:
- appointment.created
- appointment.updated
- appointment.deleted
- client.created
- client.updated
- service.created
- service.updated
responses:
'200':
description: The created subscription, including its secret
content:
application/json:
schema:
type: object
properties:
_id:
type: string
minLength: 1
salonId:
type: string
minLength: 1
url:
type: string
format: uri
events:
type: array
items:
type: string
active:
type: boolean
creationTime:
type: string
format: date-time
default:
description: Error response
content:
application/json:
schema:
type: object
required:
- message
properties:
message:
type: string
name:
type: string
statusCode:
type: integer
details:
type: object
additionalProperties: true
operationId: postApiWebhooksubscriptions
/api/webhooksubscriptions/{webhookSubscriptionId}:
put:
tags:
- Webhook Subscriptions
summary: Update a webhook subscription
description: '`url`, `events` and `active` are editable; the secret and salon are immutable. Re-enabling an auto-disabled endpoint is done by setting `active` back to true.'
security:
- accessToken: []
parameters:
- in: path
name: webhookSubscriptionId
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
'200':
description: The updated subscription (without secret)
content:
application/json:
schema:
type: object
properties:
_id:
type: string
minLength: 1
salonId:
type: string
minLength: 1
url:
type: string
format: uri
events:
type: array
items:
type: string
active:
type: boolean
creationTime:
type: string
format: date-time
default:
description: Error response
content:
application/json:
schema:
type: object
required:
- message
properties:
message:
type: string
name:
type: string
statusCode:
type: integer
details:
type: object
additionalProperties: true
operationId: putApiWebhooksubscriptionsWebhookSubscriptionId
delete:
tags:
- Webhook Subscriptions
summary: Delete a webhook subscription
security:
- accessToken: []
parameters:
- in: path
name: webhookSubscriptionId
required: true
schema:
type: string
responses:
'200':
description: Deleted
content:
application/json:
schema:
type: object
properties:
_id:
type: string
minLength: 1
salonId:
type: string
minLength: 1
url:
type: string
format: uri
events:
type: array
items:
type: string
active:
type: boolean
creationTime:
type: string
format: date-time
default:
description: Error response
content:
application/json:
schema:
type: object
required:
- message
properties:
message:
type: string
name:
type: string
statusCode:
type: integer
details:
type: object
additionalProperties: true
operationId: deleteApiWebhooksubscriptionsWebhookSubscriptionId
components:
securitySchemes:
apiKey:
type: http
scheme: basic
description: 'HTTP Basic auth carrying only the API key secret: Authorization: Basic base64(<key secret>).'
accessToken:
type: apiKey
in: header
name: Authorization
description: 'Operator session token issued by the HairDora dashboard: Authorization: Token <access token>.'