{"openapi":"3.1.0","info":{"title":"Clearslot API","version":"1"},"servers":[{"url":"https://app.clearslot.eu/api/v1"}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"A business API key (`cs_live_…`) from Settings → Developers. Our own apps send a session token."}},"schemas":{"Problem":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"code":{"type":"string"},"messageKey":{"type":"string"},"requestId":{"type":"string"},"errors":{"type":"array","items":{"type":"string"}},"next":{"type":"string"},"reason":{"type":"string"},"limit":{"type":"integer"}},"required":["type","title","status","detail","code","messageKey","requestId"]},"Organization":{"type":"object","properties":{"object":{"type":"string","enum":["organization"]},"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"country":{"type":["string","null"]},"businessCategory":{"type":["string","null"]},"bookingLanguage":{"type":["string","null"]},"logoUrl":{"type":["string","null"]},"createdAt":{"type":["string","null"],"format":"date-time"}},"required":["object","id","name","slug","country","businessCategory","bookingLanguage","logoUrl","createdAt"]},"Member":{"type":"object","properties":{"object":{"type":"string","enum":["member"]},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"role":{"type":"string","enum":["owner","admin","member"]},"bookable":{"type":"boolean"},"timezone":{"type":"string"},"jobTitle":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"createdAt":{"type":["string","null"],"format":"date-time"}},"required":["object","id","name","email","role","bookable","timezone","jobTitle","avatarUrl","createdAt"]},"BookingLink":{"type":"object","properties":{"object":{"type":"string","enum":["booking_link"]},"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":["string","null"]},"type":{"type":"string"},"eventType":{"type":["string","null"]},"active":{"type":"boolean"},"visibility":{"type":["string","null"]},"url":{"type":"string"},"durationMinutes":{"type":["integer","null"]},"locale":{"type":["string","null"]},"ownerId":{"type":"string"},"hosts":{"type":"array","items":{"type":"object","properties":{"memberId":{"type":"string"},"active":{"type":"boolean"}},"required":["memberId","active"]}},"requiresConfirmation":{"type":"boolean"},"payment":{"type":"object","properties":{"mode":{"type":"string"},"amount":{"type":["integer","null"]},"currency":{"type":["string","null"]}},"required":["mode","amount","currency"]},"createdAt":{"type":["string","null"],"format":"date-time"},"updatedAt":{"type":["string","null"],"format":"date-time"},"publishedAt":{"type":["string","null"],"format":"date-time"}},"required":["object","id","title","description","type","eventType","active","visibility","url","durationMinutes","locale","ownerId","hosts","requiresConfirmation","payment","createdAt","updatedAt","publishedAt"]},"Service":{"type":"object","properties":{"object":{"type":"string","enum":["service"]},"id":{"type":"string","format":"uuid"},"bookingLinkId":{"type":"string","format":"uuid"},"key":{"type":"string"},"name":{"type":"string"},"durationMinutes":{"type":"integer"},"priceMinor":{"type":"integer"},"currency":{"type":["string","null"]},"active":{"type":"boolean"},"variants":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"key":{"type":"string"},"name":{"type":"string"},"durationMinutes":{"type":["integer","null"]},"priceMinor":{"type":["integer","null"]},"active":{"type":"boolean"}},"required":["id","key","name","durationMinutes","priceMinor","active"]}},"createdAt":{"type":["string","null"],"format":"date-time"}},"required":["object","id","bookingLinkId","key","name","durationMinutes","priceMinor","currency","active","variants","createdAt"]},"ClassType":{"type":"object","properties":{"object":{"type":"string","enum":["class_type"]},"id":{"type":"string","format":"uuid"},"bookingLinkId":{"type":"string","format":"uuid"},"key":{"type":"string"},"label":{"type":"string"}},"required":["object","id","bookingLinkId","key","label"]},"ClassSession":{"type":"object","properties":{"object":{"type":"string","enum":["class_session"]},"id":{"type":"string","format":"uuid"},"bookingLinkId":{"type":"string","format":"uuid"},"name":{"type":"string"},"typeKey":{"type":["string","null"]},"level":{"type":["string","null"]},"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"},"durationMinutes":{"type":"integer"},"capacity":{"type":"integer"},"bookedCount":{"type":"integer"},"waitlistCount":{"type":"integer"},"status":{"type":["string","null"]},"instructorId":{"type":["string","null"],"format":"uuid"},"resourceId":{"type":["string","null"],"format":"uuid"}},"required":["object","id","bookingLinkId","name","typeKey","level","startTime","endTime","durationMinutes","capacity","bookedCount","waitlistCount","status","instructorId","resourceId"]},"Resource":{"type":"object","properties":{"object":{"type":"string","enum":["resource"]},"id":{"type":"string","format":"uuid"},"key":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"typeId":{"type":["string","null"],"format":"uuid"},"active":{"type":"boolean"},"createdAt":{"type":["string","null"],"format":"date-time"},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["object","id","key","name","description","typeId","active","createdAt","updatedAt"]},"RoutingForm":{"type":"object","properties":{"object":{"type":"string","enum":["routing_form"]},"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":["string","null"]},"active":{"type":"boolean"},"url":{"type":"string"},"fields":{"type":"array","items":{}},"createdAt":{"type":["string","null"],"format":"date-time"},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["object","id","title","description","active","url","fields","createdAt","updatedAt"]},"RoutingFormSubmission":{"type":"object","properties":{"object":{"type":"string","enum":["routing_form_submission"]},"id":{"type":"string","format":"uuid"},"routingFormId":{"type":"string","format":"uuid"},"answers":{"type":"object","additionalProperties":{}},"guest":{"type":"object","properties":{"name":{"type":["string","null"]},"email":{"type":["string","null"]}},"required":["name","email"]},"matchedRuleId":{"type":["string","null"]},"target":{"type":"object","properties":{"type":{"type":["string","null"]},"id":{"type":["string","null"],"format":"uuid"},"url":{"type":["string","null"]}},"required":["type","id","url"]},"bookingId":{"type":["string","null"],"format":"uuid"},"createdAt":{"type":["string","null"],"format":"date-time"}},"required":["object","id","routingFormId","answers","guest","matchedRuleId","target","bookingId","createdAt"]},"Slot":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":["string","null"],"format":"date-time"},"date":{"type":"string"},"time":{"type":"string"},"durationMinutes":{"type":["integer","null"]},"capacity":{"type":["integer","null"]},"remaining":{"type":["integer","null"]},"classSessionId":{"type":["string","null"],"format":"uuid"},"memberIds":{"type":["array","null"],"items":{"type":"string"}},"assetListingKey":{"type":["string","null"]}},"required":["startTime","endTime","date","time","durationMinutes","capacity","remaining","classSessionId","memberIds","assetListingKey"]},"BusyTime":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"},"source":{"type":"string","enum":["booking","calendar","blocked"]}},"required":["startTime","endTime","source"]},"Schedule":{"type":"object","properties":{"object":{"type":"string","enum":["schedule"]},"id":{"type":"string","format":"uuid"},"memberId":{"type":"string"},"name":{"type":"string"},"isDefault":{"type":"boolean"},"timeZone":{"type":"string"},"weeklyHours":{"type":"object","properties":{"monday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{2}:\\d{2}$"},"end":{"type":"string","pattern":"^\\d{2}:\\d{2}$"}},"required":["start","end"]}},"tuesday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{2}:\\d{2}$"},"end":{"type":"string","pattern":"^\\d{2}:\\d{2}$"}},"required":["start","end"]}},"wednesday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{2}:\\d{2}$"},"end":{"type":"string","pattern":"^\\d{2}:\\d{2}$"}},"required":["start","end"]}},"thursday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{2}:\\d{2}$"},"end":{"type":"string","pattern":"^\\d{2}:\\d{2}$"}},"required":["start","end"]}},"friday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{2}:\\d{2}$"},"end":{"type":"string","pattern":"^\\d{2}:\\d{2}$"}},"required":["start","end"]}},"saturday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{2}:\\d{2}$"},"end":{"type":"string","pattern":"^\\d{2}:\\d{2}$"}},"required":["start","end"]}},"sunday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{2}:\\d{2}$"},"end":{"type":"string","pattern":"^\\d{2}:\\d{2}$"}},"required":["start","end"]}}},"required":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"dateOverrides":{"type":"object","additionalProperties":{"type":"object","properties":{"available":{"type":"boolean"},"hours":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{2}:\\d{2}$"},"end":{"type":"string","pattern":"^\\d{2}:\\d{2}$"}},"required":["start","end"]}},"description":{"type":["string","null"]}},"required":["available","hours","description"]}},"rules":{"type":"object","properties":{"bufferBeforeMinutes":{"type":["number","null"]},"bufferAfterMinutes":{"type":["number","null"]},"minimumNoticeHours":{"type":["number","null"]},"bookingWindowDays":{"type":["number","null"]},"dailyLimit":{"type":["number","null"]},"weeklyLimit":{"type":["number","null"]}},"required":["bufferBeforeMinutes","bufferAfterMinutes","minimumNoticeHours","bookingWindowDays","dailyLimit","weeklyLimit"]},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["object","id","memberId","name","isDefault","timeZone","weeklyHours","dateOverrides","rules","updatedAt"]},"Booking":{"type":"object","properties":{"object":{"type":"string","enum":["booking"]},"id":{"type":"string","format":"uuid"},"status":{"type":["string","null"]},"source":{"type":["string","null"]},"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"},"schedulingTimezone":{"type":"string"},"createdAt":{"type":["string","null"],"format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"guest":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"},"phone":{"type":["string","null"]},"timezone":{"type":["string","null"]}},"required":["name","email","phone","timezone"]},"guestCount":{"type":["integer","null"]},"customerId":{"type":["string","null"],"format":"uuid"},"intakeAnswers":{"type":"object","additionalProperties":{}},"notes":{"type":["string","null"]},"platform":{"type":"string"},"meetingUrl":{"type":["string","null"]},"pageType":{"type":"string"},"bookingLink":{"type":["object","null"],"properties":{"id":{"type":["string","null"],"format":"uuid"},"title":{"type":["string","null"]}},"required":["id","title"]},"services":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"durationMinutes":{"type":"number"},"priceMinor":{"type":"number"},"variantName":{"type":["string","null"]}},"required":["id","name","durationMinutes","priceMinor","variantName"]}},"classSession":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"startTime":{"type":"string","format":"date-time"}},"required":["id","name","startTime"]},"resource":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]},"payment":{"type":"object","properties":{"method":{"type":["string","null"]},"status":{"type":["string","null"]},"amount":{"type":["number","null"]},"currency":{"type":["string","null"]}},"required":["method","status","amount","currency"]},"cancellation":{"type":["object","null"],"properties":{"by":{"type":["string","null"]},"reason":{"type":["string","null"]}},"required":["by","reason"]},"rescheduleProposal":{"type":["object","null"],"properties":{"startTime":{"type":"string"},"endTime":{"type":["string","null"]},"message":{"type":["string","null"]}},"required":["startTime","endTime","message"]},"rescheduleRevision":{"type":"integer"},"waitlisted":{"type":"boolean"},"seriesId":{"type":["string","null"]},"host":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string"}},"required":["id","name","timezone"]},"isOwnBooking":{"type":"boolean"},"canManage":{"type":"boolean"}},"required":["object","id","status","source","startTime","endTime","schedulingTimezone","createdAt","updatedAt","guest","guestCount","customerId","intakeAnswers","notes","platform","meetingUrl","pageType","bookingLink","services","classSession","resource","payment","cancellation","rescheduleProposal","rescheduleRevision","waitlisted","seriesId","host","isOwnBooking","canManage"]},"QuickInvite":{"type":"object","properties":{"object":{"type":"string","enum":["quick_invite"]},"id":{"type":"string","format":"uuid"},"url":{"type":"string"},"hostId":{"type":"string"},"durationMinutes":{"type":"integer"},"expiresAt":{"type":["string","null"],"format":"date-time"},"maxBookings":{"type":["integer","null"]},"emailed":{"type":"boolean"}},"required":["object","id","url","hostId","durationMinutes","expiresAt","maxBookings","emailed"]},"BlockedTime":{"type":"object","properties":{"object":{"type":"string","enum":["blocked_time"]},"id":{"type":"string","format":"uuid"},"memberId":{"type":"string"},"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"},"label":{"type":["string","null"]},"externalId":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"}},"required":["object","id","memberId","startTime","endTime","label","externalId","createdAt"]},"Customer":{"type":"object","properties":{"object":{"type":"string","enum":["customer"]},"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"email":{"type":"string"},"phone":{"type":["string","null"]},"company":{"type":["string","null"]},"notes":{"type":"string"},"archived":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["object","id","name","email","phone","company","notes","archived","createdAt","updatedAt"]},"Event":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"object":{"type":"string","enum":["event"]},"type":{"type":"string"},"apiVersion":{"type":"integer"},"occurredAt":{"type":"string","format":"date-time"},"subject":{"type":"object","properties":{"object":{"type":"string"},"id":{"type":"string"}},"required":["object","id"]},"details":{"type":"object","additionalProperties":{}},"previous":{"type":"object","properties":{"startTime":{"type":"string"},"endTime":{"type":"string"}},"required":["startTime","endTime"]},"data":{"type":"object","properties":{"object":{"type":"string"},"id":{"type":"string"}},"required":["object","id"],"additionalProperties":{}}},"required":["id","object","type","apiVersion","occurredAt","subject","details"]},"WebhookEndpoint":{"type":"object","properties":{"object":{"type":"string","enum":["webhook_endpoint"]},"id":{"type":"string","format":"uuid"},"url":{"type":"string"},"description":{"type":"string"},"eventTypes":{"type":"array","items":{"type":"string"}},"filters":{"type":"object","properties":{"bookingLinkIds":{"type":"array","items":{"type":"string"}},"memberIds":{"type":"array","items":{"type":"string"}}},"required":["bookingLinkIds","memberIds"]},"status":{"type":"string"},"disabledReason":{"type":["string","null"]},"createdVia":{"type":"string"},"managedBy":{"type":["object","null"],"properties":{"kind":{"type":"string"},"id":{"type":["string","null"]}},"required":["kind","id"]},"authHeaderName":{"type":["string","null"]},"apiVersion":{"type":"integer"},"verifiedAt":{"type":["string","null"],"format":"date-time"},"lastSuccessAt":{"type":["string","null"],"format":"date-time"},"secretRotationEndsAt":{"type":["string","null"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["object","id","url","description","eventTypes","filters","status","disabledReason","createdVia","managedBy","authHeaderName","apiVersion","verifiedAt","lastSuccessAt","secretRotationEndsAt","createdAt","updatedAt"]},"WebhookDelivery":{"type":"object","properties":{"object":{"type":"string","enum":["webhook_delivery"]},"id":{"type":"string","format":"uuid"},"endpointId":{"type":"string","format":"uuid"},"eventId":{"type":["string","null"]},"eventType":{"type":"string"},"messageId":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"attempts":{"type":"integer"},"nextAttemptAt":{"type":["string","null"],"format":"date-time"},"lastAttemptAt":{"type":["string","null"],"format":"date-time"},"lastResponseStatus":{"type":["integer","null"]},"lastLatencyMs":{"type":["integer","null"]},"lastErrorClass":{"type":["string","null"]},"deliveredAt":{"type":["string","null"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"}},"required":["object","id","endpointId","eventId","eventType","messageId","kind","status","attempts","nextAttemptAt","lastAttemptAt","lastResponseStatus","lastLatencyMs","lastErrorClass","deliveredAt","createdAt"]}},"parameters":{}},"paths":{"/meta":{"get":{"summary":"API version information","tags":["Meta"],"responses":{"200":{"description":"API version information","content":{"application/json":{"schema":{"type":"object","properties":{"apiVersion":{"type":"number","enum":[1]}},"required":["apiVersion"]}}}}}}},"/me":{"get":{"summary":"Describe the calling credential: business, key name, scopes and limits","tags":["Me"],"security":[{"bearer":[]}],"responses":{"200":{"description":"The calling credential","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["me"]},"organization":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]},"credential":{"type":"object","properties":{"kind":{"type":"string"},"id":{"type":"string"},"name":{"type":["string","null"]},"expiresAt":{"type":["string","null"],"format":"date-time"}},"required":["kind","id","name","expiresAt"]},"actingAs":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"}},"required":["id","name","role"]},"scopes":{"type":"array","items":{"type":"string"}},"limits":{"type":"object","properties":{"requestsPerMinute":{"type":"integer"},"writesPerMinute":{"type":"integer"},"availabilityPerMinute":{"type":"integer"},"concurrency":{"type":"integer"},"requestsPerDay":{"type":"integer"},"bookingsPerMinute":{"type":"integer"},"bookingsPerDay":{"type":"integer"},"erasuresPerDay":{"type":"integer"}},"required":["requestsPerMinute","writesPerMinute","availabilityPerMinute","concurrency","requestsPerDay","bookingsPerMinute","bookingsPerDay","erasuresPerDay"]}},"required":["object","organization","credential","actingAs","scopes","limits"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/organization":{"get":{"summary":"Show the business: name, country, category and booking language","tags":["Organization"],"security":[{"bearer":[]}],"responses":{"200":{"description":"The business","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/members":{"get":{"summary":"List the people in the business with their role and whether they take bookings","tags":["Organization"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":2048},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"bookable","in":"query"}],"responses":{"200":{"description":"A page of members","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/Member"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/members/{memberId}":{"get":{"summary":"Show one person in the business","tags":["Organization"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"memberId","in":"path"}],"responses":{"200":{"description":"The member","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Member"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/booking-links":{"get":{"summary":"List the business's booking links with type, public URL, hosts and whether each is on","tags":["Booking links"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":2048},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["meeting","service","class","asset"]},"required":false,"name":"type","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"active","in":"query"}],"responses":{"200":{"description":"A page of booking links","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/BookingLink"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"summary":"Create a meeting booking link: one-to-one, group, round robin or collective, off until activated","description":"Creates a meeting link (one-to-one, group, round robin or collective). It starts off; activate it to publish. Online prepayment is not available through the API.","tags":["Booking links"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":5000},"eventType":{"type":"string","enum":["one_on_one","group","round_robin","collective"],"default":"one_on_one"},"durationMinutes":{"type":"integer","minimum":5,"maximum":480,"default":30},"hostIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"minItems":1,"maxItems":50},"platforms":{"type":"array","items":{"type":"string","enum":["Google Meet","Zoom","Phone Call","In Person"]},"minItems":1,"maxItems":4,"default":["In Person"]},"locationAddress":{"type":"string","maxLength":500},"requiresConfirmation":{"type":"boolean","default":false},"maxGuestsPerSlot":{"type":"integer","minimum":1,"maximum":500},"visibility":{"type":"string","enum":["public","unlisted","private"],"default":"public"},"intakeQuestions":{"type":"array","items":{},"maxItems":10}},"required":["title"],"additionalProperties":false}}}},"responses":{"201":{"description":"The new meeting link","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingLink"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/booking-links/{bookingLinkId}":{"get":{"summary":"Show one booking link with its type, public URL, hosts and payment mode","tags":["Booking links"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"bookingLinkId","in":"path"}],"responses":{"200":{"description":"The booking link","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingLink"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"summary":"Change a meeting link's basics, location, confirmation, group size or intake questions","description":"Meeting links only. Each section is optional and replaces only the fields it names.","tags":["Booking links"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"bookingLinkId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sections":{"type":"object","properties":{"basics":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":5000},"durationMinutes":{"type":"integer","minimum":5,"maximum":480},"scheduleId":{"type":["string","null"],"format":"uuid"},"startTimeIncrement":{"anyOf":[{"type":"number","enum":[5]},{"type":"number","enum":[10]},{"type":"number","enum":[15]},{"type":"number","enum":[20]},{"type":"number","enum":[30]},{"type":"number","enum":[45]},{"type":"number","enum":[60]}]}},"additionalProperties":false},"location":{"type":"object","properties":{"platforms":{"type":"array","items":{"type":"string","enum":["Google Meet","Zoom","Phone Call","In Person"]},"minItems":1,"maxItems":4},"locationAddress":{"type":"string","maxLength":500},"locationDetail":{"type":"string","maxLength":500},"locationInstructions":{"type":"string","maxLength":2000}},"required":["platforms"],"additionalProperties":false},"confirmation":{"type":"object","properties":{"requiresConfirmation":{"type":"boolean"},"confirmationDeadlineHours":{"anyOf":[{"type":"number","enum":[1]},{"type":"number","enum":[2]},{"type":"number","enum":[4]},{"type":"number","enum":[6]},{"type":"number","enum":[12]},{"type":"number","enum":[24]},{"type":"number","enum":[48]},{"type":"number","enum":[72]}]}},"additionalProperties":false},"groupSize":{"type":"object","properties":{"maxGuestsPerSlot":{"type":["integer","null"],"minimum":1,"maximum":500}},"required":["maxGuestsPerSlot"],"additionalProperties":false},"intakeQuestions":{"type":"array","items":{},"maxItems":10}},"additionalProperties":false}},"required":["sections"],"additionalProperties":false}}}},"responses":{"200":{"description":"The booking link","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingLink"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"summary":"Delete a meeting booking link; its bookings stay","tags":["Booking links"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"bookingLinkId","in":"path"}],"responses":{"200":{"description":"The link is deleted","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["booking_link"]},"id":{"type":"string","format":"uuid"},"deleted":{"type":"boolean","enum":[true]}},"required":["object","id","deleted"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/booking-links/{bookingLinkId}/activate":{"post":{"summary":"Turn a booking link on and publish its page","tags":["Booking links"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"bookingLinkId","in":"path"}],"responses":{"200":{"description":"The booking link, on","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingLink"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/booking-links/{bookingLinkId}/deactivate":{"post":{"summary":"Turn a booking link off and withdraw its page","tags":["Booking links"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"bookingLinkId","in":"path"}],"responses":{"200":{"description":"The booking link, off","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingLink"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/services":{"get":{"summary":"List the services offered on the business's service booking links, with variants and prices","tags":["Booking links"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":2048},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"bookingLinkId","in":"query"}],"responses":{"200":{"description":"A page of services","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/Service"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/class-types":{"get":{"summary":"List the class types on the business's class booking links","tags":["Booking links"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":2048},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"bookingLinkId","in":"query"}],"responses":{"200":{"description":"A page of class types","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/ClassType"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/class-sessions":{"get":{"summary":"List scheduled class sessions with capacity and bookings, filtered by link and time","tags":["Booking links"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":2048},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"bookingLinkId","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"startsAfter","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"startsBefore","in":"query"}],"responses":{"200":{"description":"A page of class sessions","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/ClassSession"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/resources":{"get":{"summary":"List the business's bookable resources","tags":["Booking links"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":2048},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"active","in":"query"}],"responses":{"200":{"description":"A page of resources","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/Resource"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/routing-forms":{"get":{"summary":"List the business's routing forms and their questions","tags":["Booking links"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":2048},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"A page of routing forms","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/RoutingForm"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/routing-forms/{routingFormId}/submissions":{"get":{"summary":"List the answers people submitted to one routing form and where each was routed","tags":["Booking links"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"routingFormId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":2048},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"createdSince","in":"query"}],"responses":{"200":{"description":"A page of submissions, oldest first","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/RoutingFormSubmission"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/booking-links/{bookingLinkId}/slots":{"get":{"summary":"List the times a booking link can be booked in a window of up to 31 days, under the same rules as its public page","description":"Times are computed with the same rules as the public booking page. Service links need `serviceIds`. Counts toward the availability budget of 60 lookups a minute.","tags":["Availability"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"bookingLinkId","in":"path"},{"schema":{"type":"string","format":"date"},"required":true,"name":"from","in":"query"},{"schema":{"type":"string","format":"date"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","maxLength":4000},"required":false,"name":"serviceIds","in":"query"},{"schema":{"type":"string","maxLength":4000},"required":false,"name":"variantIds","in":"query"}],"responses":{"200":{"description":"Bookable times","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["availability"]},"bookingLinkId":{"type":"string","format":"uuid"},"timeZone":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"slots":{"type":"array","items":{"$ref":"#/components/schemas/Slot"}}},"required":["object","bookingLinkId","timeZone","from","to","slots"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/members/{memberId}/busy-times":{"get":{"summary":"List when one person is busy in a window of up to 31 days, from bookings and connected calendars, without titles","tags":["Availability"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"memberId","in":"path"},{"schema":{"type":"string","format":"date"},"required":true,"name":"from","in":"query"},{"schema":{"type":"string","format":"date"},"required":false,"name":"to","in":"query"}],"responses":{"200":{"description":"Busy intervals","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["busy_times"]},"memberId":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"busy":{"type":"array","items":{"$ref":"#/components/schemas/BusyTime"}}},"required":["object","memberId","from","to","busy"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/members/{memberId}/schedules":{"get":{"summary":"List one person's availability schedules with weekly hours, date overrides and rules","tags":["Availability"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"memberId","in":"path"}],"responses":{"200":{"description":"The member's schedules","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/Schedule"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/schedules/{scheduleId}":{"get":{"summary":"Show one availability schedule with weekly hours, date overrides and rules","tags":["Availability"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"scheduleId","in":"path"}],"responses":{"200":{"description":"The schedule","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Schedule"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/bookings":{"get":{"summary":"List bookings across the business, filtered by member, status, time, link, customer or guest email, with cursor paging","description":"API keys see the whole business. Use `updatedSince` with the time of your last sync, overlapped by a minute, to receive every change since then.","tags":["Bookings"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":2048},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":false,"name":"memberId","in":"query"},{"schema":{"type":"string","enum":["pending","pending_reschedule","confirmed","completed","cancelled","no_show"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"startsAfter","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"startsBefore","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"updatedSince","in":"query"},{"schema":{"type":"string","enum":["startTime","updatedAt"]},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"bookingLinkId","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"customerId","in":"query"},{"schema":{"type":"string","maxLength":320},"required":false,"name":"guestEmail","in":"query"}],"responses":{"200":{"description":"A page of bookings","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/Booking"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"summary":"Book a guest through a booking link under the same rules as its public page; host mode books like the dashboard","description":"Books a guest through a booking link under the same availability, capacity, notice, intake and approval rules as its public page. Requires an `Idempotency-Key`. Links that take online payment are refused with `online_payment_unsupported`. Counts toward 30 bookings a minute and 500 a day.","tags":["Bookings"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bookingLinkId":{"type":"string","format":"uuid"},"startTime":{"type":"string","format":"date-time"},"classSessionId":{"type":"string","format":"uuid"},"serviceIds":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":10},"variantIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":10},"providerMemberId":{"type":"string","minLength":1,"maxLength":64},"assetListingKey":{"type":"string","minLength":1,"maxLength":100},"durationMinutes":{"type":"integer","minimum":5,"maximum":1440},"guestCount":{"type":"integer","minimum":1,"maximum":50},"guest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"email":{"type":"string","maxLength":320,"format":"email"},"phone":{"type":"string","maxLength":40},"locale":{"type":"string","maxLength":16}},"required":["name","email"],"additionalProperties":false},"intakeAnswers":{"type":"object","additionalProperties":{},"default":{}},"guestConsents":{"type":"object","properties":{"cancellationFees":{"type":"boolean"},"earlyPerformance":{"type":"boolean"}},"default":{},"additionalProperties":false},"notifyGuest":{"type":"boolean","default":true}},"required":["bookingLinkId","guest"],"additionalProperties":false}}}},"responses":{"201":{"description":"The booking","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/bookings/{bookingId}":{"get":{"summary":"Show one booking in the business, including whether the caller may manage it","tags":["Bookings"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"bookingId","in":"path"}],"responses":{"200":{"description":"The booking","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/bookings/{bookingId}/cancel":{"post":{"summary":"Cancel a booking, notify the guest and start any refund","description":"Send an Idempotency-Key so a retried cancellation replays its first outcome.","tags":["Bookings"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"bookingId","in":"path"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","maxLength":500}},"additionalProperties":false}}}},"responses":{"200":{"description":"The booking is cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"cancelled":{"type":"boolean","enum":[true]},"refundPending":{"type":"boolean"}},"required":["cancelled","refundPending"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/bookings/{bookingId}/reschedule":{"post":{"summary":"Move a booking to a new start time, or another class session, and tell the guest","description":"Moves the booking and tells the guest. Requires an `Idempotency-Key`.","tags":["Bookings"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"bookingId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time"},"classSessionId":{"type":"string","format":"uuid"},"revision":{"type":"integer","minimum":0}},"additionalProperties":false}}}},"responses":{"200":{"description":"The moved booking","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/bookings/{bookingId}/confirm":{"post":{"summary":"Approve a booking request that is waiting for confirmation and tell the guest","tags":["Bookings"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"bookingId","in":"path"}],"responses":{"200":{"description":"The confirmed booking","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/bookings/{bookingId}/decline":{"post":{"summary":"Decline a booking request, tell the guest and refund any payment","tags":["Bookings"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"bookingId","in":"path"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","maxLength":500}},"additionalProperties":false}}}},"responses":{"200":{"description":"The declined booking","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/bookings/{bookingId}/no-show":{"post":{"summary":"Mark a confirmed attendee as a no-show","tags":["Bookings"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"bookingId","in":"path"}],"responses":{"200":{"description":"The booking, marked as a no-show","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"summary":"Undo a no-show mark, so the attendee counts as confirmed again","tags":["Bookings"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"bookingId","in":"path"}],"responses":{"200":{"description":"The booking, no longer a no-show","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/quick-invites":{"post":{"summary":"Create a one-time booking page for one recipient, and optionally email it to them","tags":["Bookings"],"security":[{"bearer":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"hostId":{"type":"string","minLength":1,"maxLength":64},"durationMinutes":{"type":"integer","minimum":5,"maximum":1440,"default":30},"expiresAt":{"type":["string","null"],"format":"date-time","default":null},"maxBookings":{"type":["integer","null"],"minimum":1,"maximum":100,"default":1},"platform":{"type":"string","enum":["In Person","Phone Call","Google Meet","Zoom"],"default":"In Person"},"locationAddress":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":200},"recipient":{"type":"object","properties":{"email":{"type":"string","maxLength":320,"format":"email"},"name":{"type":"string","maxLength":200}},"required":["email"],"additionalProperties":false},"message":{"type":"string","maxLength":2000},"send":{"type":"boolean","default":false},"language":{"type":"string","maxLength":32}},"additionalProperties":false}}}},"responses":{"201":{"description":"The one-time booking page","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickInvite"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/schedules/{scheduleId}/weekly-hours":{"put":{"summary":"Replace the weekly hours of an availability schedule","tags":["Availability"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"scheduleId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"weeklyHours":{"type":"object","properties":{"monday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"}},"required":["start","end"],"additionalProperties":false},"maxItems":48},"tuesday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"}},"required":["start","end"],"additionalProperties":false},"maxItems":48},"wednesday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"}},"required":["start","end"],"additionalProperties":false},"maxItems":48},"thursday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"}},"required":["start","end"],"additionalProperties":false},"maxItems":48},"friday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"}},"required":["start","end"],"additionalProperties":false},"maxItems":48},"saturday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"}},"required":["start","end"],"additionalProperties":false},"maxItems":48},"sunday":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"}},"required":["start","end"],"additionalProperties":false},"maxItems":48}},"required":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"],"additionalProperties":false}},"required":["weeklyHours"],"additionalProperties":false}}}},"responses":{"200":{"description":"The schedule","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Schedule"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/schedules/{scheduleId}/date-overrides":{"put":{"summary":"Replace the date overrides of an availability schedule: days off, or different hours on given dates","tags":["Availability"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"scheduleId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dateOverrides":{"type":"object","additionalProperties":{"type":"object","properties":{"available":{"type":"boolean"},"hours":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"},"end":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$|^24:00$"}},"required":["start","end"],"additionalProperties":false},"maxItems":48,"default":[]},"description":{"type":"string","maxLength":200}},"required":["available"],"additionalProperties":false}}},"required":["dateOverrides"],"additionalProperties":false}}}},"responses":{"200":{"description":"The schedule","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Schedule"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/members/{memberId}/blocked-times":{"get":{"summary":"List one person's blocked time in a window of up to 31 days","tags":["Availability"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"memberId","in":"path"},{"schema":{"type":"string","format":"date"},"required":true,"name":"from","in":"query"},{"schema":{"type":"string","format":"date"},"required":false,"name":"to","in":"query"}],"responses":{"200":{"description":"Blocked time in the window","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/BlockedTime"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"summary":"Block time for one person, for example from a calendar Clearslot does not connect to; an externalId updates the earlier block","description":"Send your own `externalId` to update the same block on later pushes instead of adding another.","tags":["Availability"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"memberId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"},"label":{"type":"string","minLength":1,"maxLength":100},"externalId":{"type":"string","minLength":1,"maxLength":200}},"required":["startTime","endTime"],"additionalProperties":false}}}},"responses":{"201":{"description":"The blocked time","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockedTime"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/blocked-times/{blockedTimeId}":{"delete":{"summary":"Remove blocked time","tags":["Availability"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"blockedTimeId","in":"path"}],"responses":{"200":{"description":"The block is removed","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["blocked_time"]},"id":{"type":"string","format":"uuid"},"deleted":{"type":"boolean","enum":[true]}},"required":["object","id","deleted"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/customers":{"get":{"summary":"List the customer register, filtered by email or by changes since a time, with cursor paging","tags":["Customers"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":2048},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","maxLength":320},"required":false,"name":"email","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"updatedSince","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"archived","in":"query"}],"responses":{"200":{"description":"A page of customers","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/Customer"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"summary":"Add a customer to the register; an email already registered is refused with its customer ID","tags":["Customers"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":320,"format":"email"},"name":{"type":"string","minLength":1,"maxLength":200},"phone":{"type":["string","null"],"maxLength":40},"company":{"type":["string","null"],"maxLength":200}},"required":["email","name"],"additionalProperties":false}}}},"responses":{"201":{"description":"The customer","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/customers/{customerId}":{"get":{"summary":"Show one customer from the register","tags":["Customers"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"customerId","in":"path"}],"responses":{"200":{"description":"The customer","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"summary":"Change a customer's name, phone, company or notes, or archive them","tags":["Customers"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"customerId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"phone":{"type":["string","null"],"maxLength":40},"company":{"type":["string","null"],"maxLength":200},"notes":{"type":"string","maxLength":10000},"archived":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"The customer","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/customers/{customerId}/erase":{"post":{"summary":"Erase a customer and their personal data from every booking, as for a data-subject erasure request","description":"Erases the customer and their personal data from every booking, like a data-subject erasure request in the dashboard. Owners and admins only; counts toward 100 erasures a day.","tags":["Customers"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"customerId","in":"path"}],"responses":{"200":{"description":"The customer is erased","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["customer"]},"id":{"type":"string","format":"uuid"},"deleted":{"type":"boolean","enum":[true]},"erasureId":{"type":"string","format":"uuid"}},"required":["object","id","deleted","erasureId"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/reports/bookings":{"get":{"summary":"Count the business's bookings by status, day, booking link and member for up to 366 days","tags":["Reports"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"date"},"required":true,"name":"from","in":"query"},{"schema":{"type":"string","format":"date"},"required":true,"name":"to","in":"query"},{"schema":{"type":"string","maxLength":64},"required":false,"name":"timeZone","in":"query"},{"schema":{"type":"string","enum":["startTime","createdAt"],"default":"startTime"},"required":false,"name":"dateField","in":"query"}],"responses":{"200":{"description":"Booking counts","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["booking_report"]},"from":{"type":"string"},"to":{"type":"string"},"timeZone":{"type":"string"},"dateField":{"type":"string","enum":["startTime","createdAt"]},"total":{"type":"integer"},"byStatus":{"type":"object","additionalProperties":{"type":"integer"}},"byDay":{"type":"array","items":{"type":"object","properties":{"total":{"type":"integer"},"byStatus":{"type":"object","additionalProperties":{"type":"integer"}},"date":{"type":"string"}},"required":["total","byStatus","date"]}},"byBookingLink":{"type":"array","items":{"type":"object","properties":{"total":{"type":"integer"},"byStatus":{"type":"object","additionalProperties":{"type":"integer"}},"bookingLinkId":{"type":"string","format":"uuid"},"title":{"type":"string"}},"required":["total","byStatus","bookingLinkId","title"]}},"byMember":{"type":"array","items":{"type":"object","properties":{"total":{"type":"integer"},"byStatus":{"type":"object","additionalProperties":{"type":"integer"}},"memberId":{"type":"string"},"name":{"type":"string"}},"required":["total","byStatus","memberId","name"]}}},"required":["object","from","to","timeZone","dateField","total","byStatus","byDay","byBookingLink","byMember"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/events":{"get":{"summary":"List the business's events from the last 30 days, newest first, optionally with each subject rendered as in a webhook","description":"Each event is listed only when the credential holds the read scope of its subject: `bookings:read`, `customers:read` or `booking_links:read` (booking links and routing forms). With `expand=data`, each event has the body of a webhook delivery for it, without `timestamp`.","tags":["Events"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","maxLength":2000},"required":false,"name":"type","in":"query"},{"schema":{"type":"string","enum":["data"]},"required":false,"name":"expand","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":2048},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"A page of events, newest first","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/Event"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/webhook-endpoints":{"get":{"summary":"List the business's webhook endpoints, newest first","tags":["Webhooks"],"security":[{"bearer":[]}],"responses":{"200":{"description":"Every endpoint of the business","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/WebhookEndpoint"}},"nextCursor":{"type":"null"}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"summary":"Subscribe an HTTPS URL to events; it is verified with a signed ping, and the signing secret is returned once","description":"Automation platforms create one endpoint per trigger when it is turned on and delete it when it is turned off (REST Hooks). Subscribing to an event family also needs its read scope. An Idempotency-Key is ignored here, because the response carries the signing secret.","tags":["Webhooks"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048},"description":{"type":"string","maxLength":500},"eventTypes":{"type":"array","items":{"type":"string","enum":["booking.created","booking.confirmed","booking.rescheduled","booking.cancelled","booking.no_show_marked","booking.no_show_cleared","booking.payment_succeeded","booking.payment_refunded","customer.created","customer.updated","customer.erased","booking_link.created","booking_link.updated","booking_link.deleted","routing_form.submitted"]},"minItems":1,"maxItems":15},"filters":{"type":"object","properties":{"bookingLinkIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":50},"memberIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":50}},"additionalProperties":false},"authHeader":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64},"value":{"type":"string","minLength":1,"maxLength":1024}},"required":["name","value"],"additionalProperties":false}},"required":["url","eventTypes"],"additionalProperties":false}}}},"responses":{"201":{"description":"The endpoint, pending verification, and its signing secret","content":{"application/json":{"schema":{"type":"object","properties":{"endpoint":{"$ref":"#/components/schemas/WebhookEndpoint"},"secret":{"type":"string"}},"required":["endpoint","secret"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/webhook-endpoints/{endpointId}":{"get":{"summary":"Show one webhook endpoint without its secrets","tags":["Webhooks"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"endpointId","in":"path"}],"responses":{"200":{"description":"The endpoint","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpoint"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"summary":"Change an endpoint's URL, events, filters or authentication header, or turn it off and on","description":"A new URL must answer the signed ping again before events resume.","tags":["Webhooks"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"endpointId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048},"description":{"type":"string","maxLength":500},"eventTypes":{"type":"array","items":{"type":"string","enum":["booking.created","booking.confirmed","booking.rescheduled","booking.cancelled","booking.no_show_marked","booking.no_show_cleared","booking.payment_succeeded","booking.payment_refunded","customer.created","customer.updated","customer.erased","booking_link.created","booking_link.updated","booking_link.deleted","routing_form.submitted"]},"minItems":1,"maxItems":15},"filters":{"type":"object","properties":{"bookingLinkIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":50},"memberIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":50}},"additionalProperties":false},"authHeader":{"type":["object","null"],"properties":{"name":{"type":"string","minLength":1,"maxLength":64},"value":{"type":"string","minLength":1,"maxLength":1024}},"required":["name","value"],"additionalProperties":false},"enabled":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"The endpoint","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpoint"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"summary":"Delete an endpoint; pending deliveries to it are dropped","tags":["Webhooks"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"endpointId","in":"path"}],"responses":{"200":{"description":"The endpoint is deleted","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["webhook_endpoint"]},"id":{"type":"string","format":"uuid"},"deleted":{"type":"boolean","enum":[true]}},"required":["object","id","deleted"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/webhook-endpoints/{endpointId}/test":{"post":{"summary":"Send a signed webhook.ping now; a pending endpoint that answers it becomes active","tags":["Webhooks"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"endpointId","in":"path"}],"responses":{"200":{"description":"The ping is queued","content":{"application/json":{"schema":{"type":"object","properties":{"deliveryId":{"type":"string","format":"uuid"}},"required":["deliveryId"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/webhook-endpoints/{endpointId}/rotate-secret":{"post":{"summary":"Issue a new signing secret, returned once; the previous one stays valid for 24 hours","description":"An Idempotency-Key is ignored here, because the response carries the signing secret.","tags":["Webhooks"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"endpointId","in":"path"}],"responses":{"200":{"description":"The endpoint and its new signing secret","content":{"application/json":{"schema":{"type":"object","properties":{"endpoint":{"$ref":"#/components/schemas/WebhookEndpoint"},"secret":{"type":"string"}},"required":["endpoint","secret"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/webhook-endpoints/{endpointId}/deliveries":{"get":{"summary":"List an endpoint's deliveries from the last 30 days, newest first, without bodies","tags":["Webhooks"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"endpointId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":2048},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"A page of deliveries, newest first","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"$ref":"#/components/schemas/WebhookDelivery"}},"nextCursor":{"type":["string","null"]}},"required":["object","data","nextCursor"]}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/webhook-deliveries/{deliveryId}/retry":{"post":{"summary":"Send a finished event delivery again now, with its payload rendered afresh","tags":["Webhooks"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"deliveryId","in":"path"}],"responses":{"200":{"description":"The delivery, queued again","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDelivery"}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing, invalid, expired or revoked credential","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"The business needs a paid plan to use the API","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Not permitted for this credential, address or account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Unknown, foreign or inaccessible resource","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"An account step is required first","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"A rate limit, concurrency limit or daily quota was reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"The service is busy or the API is unavailable for this business","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"webhooks":{}}